IPB
ЛогинПароль:

> С какой игры начать?
Гелла
сообщение 30.03.2006 19:50
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 84
Пол: Женский

Репутация: -  0  +


Я вот хочу научится программировать..один очень хороший человек на этом форуме подсказал, что лучше учиться программировать в процессе написания игр........какую самую простую игру вы можете посоветовать..Заранее Большое Спасибо....Не умею правильно пользоваться поиском по форуму..поэтому не отсылайте плиз в поиск........ no1.gif unsure.gif


--------------------
И полусонным стрелкам лень
Ворочаться на циферблате
И дольше века длится день..
И не кончается объятье...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 4.04.2006 9:25
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Гелла, постарайся быть все же поактивнее! Тебе накидали столько проектов - хоть бы в один ткнула пальцем наугад.. Мне придется сделать выбор за тебя smile.gif

В этом деле главное - это не бездействовать. Поэтому я начну. И все вместе продолжим. Извините, но я склоняюсь в сторону змейки - она динамичная. Морской бой (и все остальное) можно реализовать позже (или параллельно). Итак, я написал самый простой код, который явится даже не базой (поскольку он будет переделан в процессе совершенно), а скорее первым импульсом.

Гелла (всех желающих тоже приглашаю присоединяться к классу), пожалуйста, не копируй текст программы, набери его пальчиками. При наборе волей-неволей обратишь внимание на мелочи, которые трудно заметить при копировании. Если программа не пойдет сразу - внимательно проверь, найди ошибку. Это все очень полезно для начала, даже тупой (извини) набор и сличение двух текстов. При наборе соблюдай отступы, как в моем тексте - правильное оформление программы сильно помогает в ее создании (хотя и не влияет на компиляцию). Потом ты сама поймешь, насколько удобнее работать с правильно структурированным текстом.

Код реализует движение символа по экрану. Символом можно управлять, нажимая клавиши i,j,k,m. Выбор клавиш почти случаен - просто я не хотел сразу делать стрелки, чтобы не запутывать ученицу (стрелки производят двойные коды). Скорость движения символа постоянная, меняется только направление. При натыкании на стенку игра заканчивается.

Где же тут змейка? Очень просто: это только ее голова пока smile.gif. Чуть позже мы добавим звенья, из которых состоит тело. Змейка будет расти при поедании пищи, будет выводиться ее длина, время игры, результаты будем записывать в файл, так что можно будет соревноваться.

Я не стал помещать много комментариев в код, поскольку наверняка будут сложности с русскими буквами (не у всех, так у многих). Вот подробные пояснения.

Декларируем использование модуля CRT для работы с текстовым экраном.
Далее определяем некоторые числовые значения.
Но сначала условимся о названиях: x - горизонтальная координата, y - вертикальная (отсчет начинается из левого верхнего угла, точка (1,1) )
Введем еще и следующее соглашение: буква n в имени переменной означает Min (например, xn), а буква x - Max (например, yx). Таким образом, в строчках с 6 по 9 мы определяем границы экрана.
Далее определяем символ для вывода головы змейки.
Теперь задержка. Ее величиной можно регулировать скорость движения змейки по экрану.
А потом задаем начальное положение змейки и ее направление движения.

Наконец, сама программа.
Сначала чистим экран и инициализируем координаты змейки.
Потом начинаем основной цикл, который продолжаем, пока координаты змейки не выходят за пределы нашей области.
Стираем старое положение символа.
Рисуем символ в новом положении.
Перекладываем новые координаты в старые.
Ждем некоторое время, иначе символ будет бегать слишком быстро.
Если нажата клавиша, читаем ее.
Если это был управляющий символ - производим изменение направления движения.
Вычисляем новое положение змейки.
Идем в начало цикла...


{snake-01}
uses
CRT;

const
xn=1; {Left screen limit}
xx=80; {Right screen limit}
yn=1; {Top screen limit}
yx=25; {Bottom screen limit}
H='8'; {Snake head}
dt=500; {Delay}

var
x0:integer=xn; {Snake location}
y0:integer=yx div 2;
vx:integer=1; {Snake direction}
vy:integer=0;

var
x,y:integer; {New snake location}
c:char;

begin
ClrScr;
x:=x0;y:=y0;
while (x>=xn)and(x<=xx)and(y>=yn)and(y<=yx) do begin
GoToXY(x0,y0);Write(' ');
GoToXY(x,y);Write(H);
x0:=x;y0:=y;
Delay(dt);
if KeyPressed then begin
c:=ReadKey;
case c of
'i':begin vx:=0;vy:=-1 end;
'm':begin vx:=0;vy:=1 end;
'j':begin vx:=-1;vy:=0 end;
'k':begin vx:=1;vy:=0 end;
end;
end;
Inc(x,vx);Inc(y,vy);
end
end.


Программу я проверял в FPC, все работало.
Рекомендую сохранять каждую версию в своем файле с соответствующем номере. Например, эту программу сохрани в файле snake-01.pas . Потом в процессе доработки номер версии будет увеличиваться. exe-файлы (а также обжекты) лучше уничтожать, чтоб не загаживать диск, а вот паскалевский текст лучше сохранять.
Можешь поэкспериментировать, сама попробовать развить идею дальше, для этого лучше сделай отдельный файл.

Давай сюда все свои вопросы - как по технике программирования, так и по идеологии. Или просто типа "а это че??"
Ну а потом, живы будем - продолжим.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Гелла   С какой игры начать?   30.03.2006 19:50
lapp   Я тут попробовал провести небольшую классификацию ...   31.03.2006 7:10
Ozzя   Гелла Морской бой. Я начинал именно с него. Далее...   31.03.2006 7:44
Бродяжник   Гелла Добро пожаловать в клуб игроделов-любителей...   31.03.2006 9:04
volvo   Гелла, ты ответы ЧИТАЕШЬ, или БЕГЛО ПРОСМАТРИВАЕШЬ...   31.03.2006 19:52
Ozzя   lapp 5. Еще есть синоним (?) - adventure Interac...   31.03.2006 9:33
Гелла   Блин...боюсь мне не под силу даже змейка и морской...   31.03.2006 19:47
Гелла   :unsure: Не надо так нервничать..... :no1: :uns...   31.03.2006 20:40
hardcase   К теме. Видел книгу по созданию 3д стратегии на С+...   31.03.2006 22:23
Ozzя   Гелла Морской бой Давай по порядку Алгоритм игры с...   1.04.2006 9:03
Бродяжник   Гелла, не расстраивайтесь. Вы сказали: "не зн...   3.04.2006 11:21
lapp   Гелла, постарайся быть все же поактивнее! Теб...   4.04.2006 9:25
FreeMan   Идея дальше - нужны яблоки :) заодно и работа с ма...   4.04.2006 16:39
Гелла   program zmeika; uses crt; const xn=1; xx=80; yn=1...   4.04.2006 21:36
lapp   А змейка не появляется..Только целая строчка восьм...   5.04.2006 5:40
volvo   Гелла, ты пропустила 2 оператора, которые как раз ...   4.04.2006 22:51
Бродяжник   Гелла Поздравляю с тем, что Вы таки начали это дел...   5.04.2006 12:27
lapp   Гелла, интерес пропал? Скажи, что именно тебя сму...   7.04.2006 1:25
Гелла   Нет, всё в порядке....конечно мне это очень нужн...   7.04.2006 14:32
lapp   Гелла, тебе не нужно было оправдываться.. Мне (да...   8.04.2006 5:33
suriv   X:=X+VX после той запятой ставиться то число ...   7.04.2006 22:04
Гелла   а вот этого точно быть не может.. :wink: не могу...   8.04.2006 12:20
lapp   а вот этого точно быть не может.. :wink: не могу ...   9.04.2006 4:44
Гелла   :good:   9.04.2006 11:39
Гелла   Программа работает!У меня был неправильный пас...   10.04.2006 16:58
lapp   Гелла, привет. Режь меня - не могу представить си...   12.04.2006 11:40
Гелла   program snake_2; uses crt; const xn=1; xx...   13.04.2006 16:42
lapp   Она не работает...только не понимаю почему..ошибок...   14.04.2006 6:06
volvo   Теперь идем еще дальше.. В FreePascal (FPC), кото...   14.04.2006 15:01
Phillip   I can't hear anything over the sound of how as...   24.02.2013 5:50
Гелла   все удивляются..но так и было...на том старом пас...   12.04.2006 17:11
lapp   volvo, спасибо, мне действительно недоставало ясно...   15.04.2006 14:13
Гелла   Привет lapp! Договорились... это мне пон...   16.04.2006 18:53
volvo   Гелла, делаешь очень опасную ошибку... Она никак н...   16.04.2006 20:22
Гелла   Спасибо, я даже не знала, что в TP cтолько тонко...   16.04.2006 22:53
Бродяжник   Привет, Гелла! Возможно, эта ошибка содержится...   17.04.2006 8:28
Гелла   Привет Бродяжник! поставила .... Ура!О...   17.04.2006 12:32
Бродяжник   Молодица! :) Теперь подумайте, чем эта прогр...   17.04.2006 13:19
Гелла   Нужно, чтобы змейка кушала, и становилась длинне...   17.04.2006 16:33
Бродяжник   Угу. Для этого нужно, чтобы: а) было что кушать; б...   17.04.2006 16:56
Гелла   я думаю, это будет двумерный массив?!?   17.04.2006 17:19
lapp   Вот это я понимаю - коллективная работа! Гелла...   18.04.2006 2:47
Бродяжник   Гелла, слушайте Lappa :) А я пока отдохну пойду.....   18.04.2006 8:26
Гелла   Что то я так запуталась в этой блок схеме...хоче...   20.04.2006 17:36
Гелла   Привет lapp! Вообщем мы убрали переменные x...   24.04.2006 16:00
GoodWind   Гелла, у нас же не игра "найди 10 отличий...   25.04.2006 6:24
Гелла   :mega_chok: :unsure: :unsure: :unsure: :...   27.04.2006 19:44
lapp   :mega_chok: :unsure: :unsure: :unsure: :unsu...   28.04.2006 14:27
Гелла   Не поняла...?!? :blink: :wink:   28.04.2006 15:27
lapp   Не поняла...?!? :blink: :wink: Была поздняя...   29.04.2006 0:45
lapp   После некоторого перерыва (очень извиняюсь), возвр...   3.05.2006 13:10
ThEEnD   Лазил я тут на форуме и вдруг нашёл эту тему! ...   18.09.2011 19:29
Krjuger   Наверно потому что от обучаемой небыло вестей........   18.09.2011 19:50
ThEEnD   Ну, не всё ж обучаемой, на верняка многие за темой...   18.09.2011 20:40
Lapp   Ну, не всё ж обучаемой, на верняка многие за темой...   19.09.2011 6:35
ThEEnD   О'кей, потом выложишь?   19.09.2011 20:21
Игорь   Извиняюсь что не по теме, но не мог бы ты, Lapp, к...   4.10.2011 18:29
Lapp   Извиняюсь что не по теме, но не мог бы ты, Lapp, к...   5.10.2011 7:17
Игорь   Чесно говоря, особо не углублялся в поиски поэтому...   6.10.2011 15:53
Гость   Я вот хочу научится программировать..один очень х...   12.08.2014 20:53
MEXAHIK   Я вот хочу научится программировать..один очень х...   12.08.2014 20:58


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.05.2024 10:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"