|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.07.2012, 20:53 | #1 |
БНТУ ФИТР
Форумчанин
Регистрация: 20.05.2012
Сообщений: 315
|
Змейка, с++
Всем привет. Вот решил написать игру, для того чтобы понять что это такое и с чем это едят. Пока остановился на игре змейка, решил пока без opengl, а тупо в консоли. Готовых понятных змеек в консоли не нашёл, поэтому решил писать с нуля. Подумал, составил алгоритм:
- По моему алгоритму поле - двумерный массив символов, змейка перемещается по этому полю Сначала решил написать передвижение символа по нажатию стрелочек. Вот пример одной функции,движение в лево(всего их 4(право лево верх низ)): Код:
Т.е всё банально, при каждом сдвиге змейки(символа) я очищаю окно доса и вывожу массив заново. Из-за этого границы поля постоянно моргают. Дописывать таким образом программу смысла не имеет( Подскажите что я сделал не так, может изначальная концепация неправильная? Спасибо за внимание.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты kventin_zhuk@live.com |
21.07.2012, 22:11 | #2 |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
А вы не очищайте! Просто устанавливайте каретку в самое начало и выводите все по новой. Таким образом старые данные затрутся новыми.
|
21.07.2012, 22:31 | #3 |
БНТУ ФИТР
Форумчанин
Регистрация: 20.05.2012
Сообщений: 315
|
Вот!!!!! большое спасибо!!!!! а я тут голову ломаю))) ещё бы подсказали как установить каретку на начало, ну да ладно сейчас нагуглим.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты kventin_zhuk@live.com Последний раз редактировалось kventin_zhuk; 21.07.2012 в 23:36. |
21.07.2012, 23:48 | #4 | |
БНТУ ФИТР
Форумчанин
Регистрация: 20.05.2012
Сообщений: 315
|
Цитата:
\r возвращает курсор в начало строки, но я вывожу поле как 2х мерную таблицу, после вывода каждой строки у меня перевод на следующую, вот такой цикл для вывода: Код:
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты kventin_zhuk@live.com Последний раз редактировалось kventin_zhuk; 22.07.2012 в 00:34. |
|
22.07.2012, 00:28 | #5 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Есть борландовская gotoxy, также можно сделать ее аналог для других компиляторов через WinAPI. К примеру, гугль выдал такой вариант: (не проверял, хотя должно работать)
Код:
Как сделаете игру с такой графикой - советую посмотреть в сторону рисования примитивами - например через тот же GDI (часть WinAPI). Какая-никакая, а графика. Хотя и тут тоже не стоит надолго останавливаться, после примитивов можно уже рисовать нормальными движками.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
22.07.2012, 00:54 | #6 | |
БНТУ ФИТР
Форумчанин
Регистрация: 20.05.2012
Сообщений: 315
|
Цитата:
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты kventin_zhuk@live.com |
|
22.07.2012, 19:22 | #7 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Нормальные движки - это уже в точности то, что выдает гугль по запросу "графический движок".
Что касается WinAPI, то в само по себе оно едва ли устареет пока существует винда, хотя сейчас существует огромное количество более высокоуровневых средств, гораздо более простых в обращении. Само собой, что в серьезном проекте вы едва ли найдете графику, реализованную на чистом WinAPI. Но и рисование символами в серьезных проектах, скажем так, редкость. Про рисование примитивами на WinAPI я говорил в том ключе, что это один из возможных следующих шагов после ASCII - это уже ближе к полноценной графике. WinAPI; TCanvas в билдеровской VCL - рисовать кружочки и прямоугольники везде просто, но при этом уже можно немного пощупать работу с графикой на уровне, приближенном к профессиональном. Не обязательно выбирать WinAPI, все равно это будет чисто переходный тренировочный этап.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
23.07.2012, 21:43 | #8 | |
Пользователь
Регистрация: 27.06.2012
Сообщений: 38
|
Цитата:
тоже когда писал свою первую змейку, пошел точно таким путем). Скажу вам прямо, этот метод никуда не годится. Лучше всего представить тело змейки как массив структуры. Код:
смотря какое направление вы ей дали. А старые коотдинаты головы присваиваются следующей части его тела. Координаты следующей части змеи присваиваются позаследующей части. И так до хвоста. И тогда получится что змея как-бы ползет. А точнее Код:
игру. Вы ведь используете conio.h ? Мне вас жаль, советую wincurses.h. Это точный аналог ncurses в линукс. И в ней есть классная функция, с помощью которой можно определить размер экрана. Так что при запуске проги ваша консоль не уменьшится в 80x25 как в conio. http://www.baldwin.cx/~john/projects/WinCurses.html |
|
23.07.2012, 22:05 | #9 |
Пользователь
Регистрация: 27.06.2012
Сообщений: 38
|
И все же если у вас не получается, так
как я ужасно объясняю, то вот моя игра, прочтите код и все станет ясно. Правда эта игра написана на Линуксе, используйте вместо ncurses, wincurses Удачи!!! Последний раз редактировалось monster-bonster; 23.07.2012 в 22:08. |
24.07.2012, 13:08 | #10 |
БНТУ ФИТР
Форумчанин
Регистрация: 20.05.2012
Сообщений: 315
|
Cпасибо за помощь, обязательно посмотрю. У меня уже у самого стали возникать мысли, что мой алгоритм никуда не годится. Сделал метод движения вправо-влево, и даже продумал кормление, но вот с поворотами что-то совсем не клеится. Буду пробовать сначала.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты kventin_zhuk@live.com |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Змейка | Yellowboy | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 06.01.2012 13:36 |
Змейка в C++ | Neo151 | Помощь студентам | 1 | 12.08.2011 12:59 |
Змейка | zamaevac | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 20 | 01.07.2010 19:19 |
змейка =) | romiccccc | Помощь студентам | 0 | 12.05.2010 11:08 |
ЗМЕЙКА(((( | mizantrop32 | Общие вопросы C/C++ | 2 | 07.04.2010 17:10 |