Суббота, 26.05.2012, 18:44


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

Меню сайта
Категории каталога
Создание игр [170]
Статьи об общих понятиях связанных с созданием игр
Движки и Гейммейкеры [85]
Статьи о программах для создания игр
Игры [39]
Статьи об играх, в том числе и сделанных на гейммейкерах
Софт [25]
Различные программы, в том числе в помощь игроделам
Разное [61]
Статьи, которые не вошли в определённые разделы
Наш опрос
Кто вы?
Всего ответов: 15578
Главная » Статьи » Движки и Гейммейкеры

Своя игра за день (часть 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.09.2011)
    Просмотров: 4814 | Рейтинг: 5.0/7
    Теги: Урок, Спрайты, gege, Своя игра за день, Для новичков, обучение, Вывести спрайт, Движок, 2D, C++
    Дополнительные опции:
    Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

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

    0  
    1 Els   (07.09.2011 00:16)
    А ище уроки будут?

    +2  
    2 Demeron   (07.09.2011 08:28)
    Да. Анимация, анимация при движении, столкновения, камера и пример простой игры.

    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Ссылки по теме
    Поиск
    10 случайных движков
    Vavoom
    OpenSpace3D
    OpenSceneGraph
    Mezona
    Wintermute Engine
    DizzyAGE
    Rus Quests Maker Dvade
    Xors3D
    Doom Classic iOS
    Realm Crafter
    Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр Разработка игр в СНГ Loadka.ru – загрузка файлов Игорный бизнес в России Реклама и заработок
    Все права сохранены. GcUp.ru © 2008-2012 Рейтинг