Вторник, 19 Марта 2024, 09:02

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [354]
Статьи об общих понятиях связанных с созданием игр.
Программирование [82]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [144]
Статьи о программах для создания игр, уроки и описания.
Софт [39]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [16]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [160]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [128]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Игры какого типа вы предпочитаете делать?
Всего ответов: 16668
Главная » Статьи » Создание игр

Своя игра за день (часть 3)
В этом уроке я покажу маленький пример ввода с клавиатуры.

За основу будем использовать текст из прошлого урока.

Скажу сразу, что исходный код нужно немного переделать:
1) Изменить размеры спрайта на 32,32
2) Объявить определение "speed"



У движка пока что есть 3 функции отвечающие за ввод с клавиатуры:
  • Input_isKeyDown
  • Input_isKeyUp
  • Input_isKeyPress

    1 функция - возвращает 1 (true) когда кнопка была нажата.
    2 функция - возвращает 1 (true) когда кнопка была отпущена.
    3 функция - возвращает 1 (true) если кнопка в данный момент зажата.

    Ну что же, попробуем наши функции в деле! Добавим в начало функции рисования код:
    Code
    if (g->Input_isKeyDown(EKEY_ESCAPE)) return 1;


    В этой строке движок проверяет, нажата ли клавиша Escape (Esc), если да - то возвращает 1 (если в функции кадра вернуть 0 - она просто закончиться, а есть 1 - движок начнет работу со строки после "Engine_Start").

    Теперь нужно объявить 2 переменные типа float и хранить в них наши координаты спрайта.
    Code
    float sx=0,sy=0;


    И изменить рисование спрайта на:
    Code
    spr->Render(sx,sy);


    Запускаем проект... Всё как и было, но добавился выход по нажатии клавиши Escape. Теперь можно добавить перемещение спрайта по нажатию стрелок на клавиатуре:
    Code

    if (g->Input_isKeyPress(EKEY_LEFT)) sx-=speed*dt;
    if (g->Input_isKeyPress(EKEY_RIGHT)) sx+=speed*dt;
    if (g->Input_isKeyPress(EKEY_UP)) sy-=speed*dt;
    if (g->Input_isKeyPress(EKEY_DOWN)) sy+=speed*dt;


    Не сложно догадаться что этот код делает. Объясню только один момент насчёт переменно "dt". "dt" была объявлена в функции "MyRenderFunc", эта переменная означает количество времени прошедшее с прошлого кадра в секундах, поэтому умножаю скорость на дельта тайм, что бы на разных машинах скорость движения спрайта была одинаковая. Если попробовать запустить, то всё будет работать, но спрайт вылазит за пределы экрана, а это не хорошо... Исправим это! Добавим следующий код перед самим рисованием спрайта:
    Code

    if (sx<0) sx=0;
    if (sy<0) sy=0;
    if (sx>768) sx=768;
    if (sy>568) sy=568;


    768 - это ширина экрана (800) - ширина спрайта (32).
    568 - это высота экрана (600) - высота спрайта (32).

    Всё работает! Наш спрайтик бегает по экрану и не вылазит за его границы!

    Исходный код прилагается...

  • Категория: Создание игр | Добавил: Demeron (05 Сентября 2011)
    Просмотров: 16114 | Комментарии: 6 | Рейтинг: 5.0/8 |
    Теги: Урок, Спрайты, gege, Своя игра за день, для новичков, обучение, Вывести спрайт, движок, 2d, C++
    Дополнительные опции:
    Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

    Игровые объявления и предложения:
    Если вас заинтересовал материал «Своя игра за день (часть 3)», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

    Всего комментариев: 6
    +0-
    5 775470   (16 Июля 2012 07:35) [Материал]
    не.за день получится не игра а бред.в лучшем случае клон.тольк новичкам мож посоветовать...

    +1-
    3 черная_тень   (12 Сентября 2011 14:12) [Материал]
    черная_теньсобственно, уже потребуется 1 день чтобы только все это прочитать wink

    +0-
    6 775470   (17 Июля 2012 07:18) [Материал]
    столько же чтоб понять

    +0-
    1 Els   (07 Сентября 2011 00:16) [Материал]
    А ище уроки будут?

    +2-
    2 Demeron   (07 Сентября 2011 08:28) [Материал]
    DemeronДа. Анимация, анимация при движении, столкновения, камера и пример простой игры.

    +0-
    4 goldsphere   (03 Июня 2012 15:24) [Материал]
    goldsphereи где?

    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Поиск по сайту
    10 случ. движков
  • DAAD Adventure Writer
  • WinDoom
  • RPGWizard
  • NetGore
  • HÖVE
  • GemRB
  • Ludiloom
  • nGENE
  • Dagor
  • AppGameKit Studio
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг