Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.64
leviaphan
4 / 4 / 0
Регистрация: 18.08.2008
Сообщений: 73
#1

Пишу игру "змейка". Есть вопрос по ней - C++

15.10.2008, 20:11. Просмотров 3024. Ответов 5
Метки нет (Все метки)

Я сейчас пишу игру "змейка". (в консоли), но возникла одна проблема. Направление движения от пользователя я принимаю так: раз в секунду запускаю getch(). Если пользователь ничего не вводит, тогда вся программа останавливается, т. е. операторы, идущие дальше, не выполняются, пока пользоваеть что-либо не вводит. Если так и оставить, игрок сможет мухлевать: не нажимать никакую клавишу и тем самым приостановливать ход исполнения игры. Как этого избежать? Может, есть какой-то другой оператор, кроме getch() для приёма данных от пользователя?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2008, 20:11     Пишу игру "змейка". Есть вопрос по ней
Посмотрите здесь:

Вопрос про "Наследование" и "Объединение" C++
Программа не работает когда пишу "getch()", исправьте ошибки C++
Программа игра "Змейка" C++
C++ Создать игру "Кто хочет стать миллионером" на языке С++ пожалуйста
Исправление кода игры "Змейка" C++
C++ Загрузка информации из файла (система рекордов в игре "Змейка")
Небольшой пример. Игра "змейка" - как в ней делают препятствия C++
C++ Как реализовать взаимодействие классов в игре "Змейка"
"Змейка", не работают кнопки направления движения C++
Написать игру "Угадай число", используя цикл while C++
C++ Как на C++ сделать игру "Нужна вода" (Need Water)?
Как можно реализовать на C++ "Игру жизни Конвея" (Conway's Game of Life)? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Varlock
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 402
16.10.2008, 14:53     Пишу игру "змейка". Есть вопрос по ней #2
твоя ошибка в том, что ты пытаешься использовать однопоточный режим, ИМХО в одном потоке красиво реализовать подобное приложение нельзя+)
создай два потока, один поток для отображения того что делает змейка, второй для приема информации от пользователя+)
(как конкретно это реализуется зависит от ОС...)
Lurker
6127 / 1885 / 13
Регистрация: 07.07.2008
Сообщений: 10,443
16.10.2008, 15:46     Пишу игру "змейка". Есть вопрос по ней #3
Можно в однопоточном. Надопросто проверять нажата-ли клавиша. А как конкретно это сделать не скажу потому что не помню.
Varlock
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 402
16.10.2008, 17:04     Пишу игру "змейка". Есть вопрос по ней #4
могу ошибаться, по моему можно проверить, нажата ли клавиша, считав информацию из входного потока in (уже непомню точно как это должно выглядеть, т.к. сями давно не занимался...+) помниться что там есть потоки in и out, которые поидее могут помочь с этим+) )
но имхо 2 потока всётки красивее будет+) если считывать значение клавиши в том же потоке, ИМХО, больше места для глюков будет...хотя то наверно дело личных предпочтений+)) мне было бы проще в соседнем потоке всё предусмотреть, и уже в основной выдать, должна ли змейка поворачивать+)
leviaphan
4 / 4 / 0
Регистрация: 18.08.2008
Сообщений: 73
16.10.2008, 22:05  [ТС]     Пишу игру "змейка". Есть вопрос по ней #5
а где можно почитать про многопочное программирование? просто никогда не имел с ним дело.
XuTPbIu_MuHTAu
Эксперт С++
2222 / 737 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
16.10.2008, 22:22     Пишу игру "змейка". Есть вопрос по ней #6
leviaphan,почитать можно в вебе. Однако,многопоточное программирование есть программирование с тесным взаимодействием с операционкой. Если вы ниразу не программировали именно под вашу ось (буд то винда или никс) могут возникнуть сложности. Другое дело,что совсем не обязательно делать все так мрачно.
C++
1
2
3
4
5
while ( gameon )  {
if(kbhit() ) // нажата кнопка!обрабатываем пользовательский ввод.
// Здесь обрабатываем игровую логику. Скажем,передвигаем змейку каждые N милисекунд.
 
};
Yandex
Объявления
16.10.2008, 22:22     Пишу игру "змейка". Есть вопрос по ней
Ответ Создать тему
Опции темы

Текущее время: 02:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru