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

> С какой игры начать?
сообщение
Сообщение #1


Пионер
**

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

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


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


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


Пионер
**

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

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


Программа работает!У меня был неправильный паскаль...стоило переустапновить паскаль и всё заработало...вроде во всём разобралась...

Goodwind: "..это неправильные пчелы.. "© Винни-Пух

Сообщение отредактировано: GoodWind -


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


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

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

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


Гелла, привет. Режь меня - не могу представить ситуацию, чтоб "неправильный" Паскаль компилил прогу так, чтоб она неправильно работала! Мистика какая-то.. У Турбо Паскаля и установки-то как таковой нету - просто копируй файлы, да и все.

Ну, что ж - можно топать вперед.. Но только движение вперед всегда относительно. Сейчас мы сделаем программу, которая делает в точности то же самое smile.gif.
Мы оптимизируем, или просто улучшим программу. Любая сколь-нибудь серьезная программа может быть улучшена сразу после написания. Сначала ты пишешь текст, отлаживаешь, видишь - все работает. Но после этого замечаешь, что программа может быть улучшена.. Посмотри текст внизу. Запусти его (можешь на этот раз скопировать), убедись, что все действительно работает по-старому.
После этого сравни его со старым текстом. Найди, как грится, десять отличий. И попытайся тут высказать, какие улучшения мне удалось сделать в этой совсем небольшой программке smile.gif. Ок?
{Version 02}
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
x:integer=xn; {Snake location}
y:integer=yx div 2;
vx:integer=1; {Snake direction}
vy:integer=0;

var
c:char;

begin
ClrScr;
while (x>=xn)and(x<=xx)and(y>=yn)and(y<=yx) do begin
GoToXY(x,y);Write(H);
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;
GoToXY(x,y);Write(' ');
Inc(x,vx);Inc(y,vy);
end
end.


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


Пионер
**

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

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


program snake_2;
uses crt;

const
xn=1;
xx=80;
yn=1;
yx=25;
H='8';
dt=500;


var x,y,vx,vy:integer;
c:char;

begin
clrscr;
while (x>=xn) and (x<=xx) and (y>=yn) and (y<=yx) do
begin
GoToXY(x,y);
write(H);
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;
GoToXY(x,y);
write('');
Inc(x,vx);
Inc(y,vy);
end;
end.

Она не работает...только не понимаю почему..ошибок никаких, а на экране вообще ничего не появляется...
просто чёрный экран...

Сообщение отредактировано: volvo -


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


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

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

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


Цитата(Гелла @ 13.04.2006 16:42)
Она не работает...только не понимаю почему..ошибок никаких, а на экране вообще ничего не появляется...
просто чёрный экран...
Гелла, привет!
Ты молодец, я бы принес тебе большую конфету, если бы был твоим учителем! smile.gif Кроме шуток..
Ты не воспользовалась данным мной разрешением копировать текст (copy-paste), а набрала руками! Это оказалось неожиданно очень полезно - вылезла ошибка (не ошибка, скорее пробел), которую я бы пропустил. Слушай, если уж ты такая усердная - давай я тебя еще об одном попрошу, а? Пожалуйста, отвечай хотя бы коротко на все пункты (явные и неявные) в моих постах. Типа - "это - поняла, это просто!". Или: "а это - кажется, понятно но может не совсем.." Договорились? smile.gif

Итак, про тот пробел. В Паскале есть декларация CONST. Она означает, что величины в ней изменяться никогда не будут, всегда сохраняя значение, заданное в тексте программы. У меня такими константами заданы границы игрового поля (которое сейчас занимает весь текстовый экран), а также промежуток времени и символ головы. Поскольку величины, заданные в этом разделе, никогда не изменяются, то компилятор реально не отводит для них ячейки памяти. Он поступает проще: везде, где эта константа (скажем, xn или xx) встретится в тексте, он подставит число, которому она равна (в данном случае 1 или 80). То есть программа компилируется как если бы мы сразу написали 1 вместо xn и 80 вместо xx. Так зачем они тогда нужны, спрашивается? А нужны они для удобства программирования (как и вообще все языки smile.gif ). А именно, если завтра ты захочешь изменить игровое поле - сузить, отодвинув его от краев экрана - то тебе придется, если ты не использовала константы, ползать по всему тексту проги и искать, где вместо 1 поставить 2, а вместо 80 поставить 79.. При этом, если 80 отследить просто, то единиц в тексте может быть гораздо больше, ибо не все они означают границу поля. Так что тебе придется думать, что есть что. Если же использовать константы (как мы и сделали), то для изменения границ поля достаточно заменить xn=1 на xn=2, а также xx=80 на xx=79, а компилятор сам подставит нужные числа в нужных местах. smile.gif Это понятно?

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

Но это еще не есть тот самый пробел. Это присказка. Двигаемся дальше..
Я начал разговор о константах потому, что причина того, почему программа у тебя не заработала, связана с константами. В Паскале есть еще понятие "типизированные константы". С ними может возникнуть путаница, так как это совсем не константы. Для них отводится память, как для переменных, они используются, как переменные. И их нельзя использовать в определении размерности массива. Почему они тогда называются константы? Это никому неизвестно. Но они действительно помещаются в раздел CONST. Вот так:
const
a:integer=5;
e:real=2.17;

По сути, эти штуки лучше было бы назвать "инициализированные переменные", так как смысл именно тот: это обычная переменная, но имеющая определенное начальное значение (значение обычных переменных перед выполнением программы не определено). Так вот, в ТР7 это делается именно так, как я описал выше.

Теперь идем еще дальше.. В FreePascal (FPC), которым пользуется твой покорный слуга, видимо, решили исправить это досадное недоразумение. Они разрешили инициировать переменные, то есть делать так:
var
a:integer=5;
e:real=2.17;

Замечаешь разницу? Теперь заголовок var, а не const. То есть в FPC можно использовать и const, и var. Ну и я, ессно, использовал var! smile.gif А ТР7, коим пользуется юная леди, этого не пропускает! И вот упомянутая мисс, берет, да и просто отрезает значения.. smile.gif Так было?.. сознайся! smile.gif

Когда ты набирала первую версию, ты вышла из этого положения корректно: ты перенесла инициализацию в исполняемый блок (молодец!). А во второй версии ты этого не сделала (теряюсь в догадках, почему).

Собственно, ты сейчас должна догадаться, как исправить мой текст Версии 2. Да, правильно - изменить словечко var на const (первое из них, второе не надо).
Теперь понятно? smile.gif
Уфф... пойду перекушу перед походом в зал - иначе упаду в середине игры.. smile.gif
Жду ответа с нетерпением. С отметками - что ясно, что нет..
Чао!


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

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


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

 





- Текстовая версия 16.04.2024 20:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name