Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2014, 06:18   #1
ArbeitVaflya
Новичок
Джуниор
 
Регистрация: 26.11.2014
Сообщений: 2
По умолчанию Змейка на паскале

Всем привет! Нужна помощь в редактировании игры "Змейка". Смысл в том, что после нажатия любой клавиши движения (стрелочки) змейка должна появиться на экране и, естественно, начаться игра, но этого не происходит!
Сам код:
Код:
Program Sme;
uses crt;
type
reca=record
name:string[10];
resultat:integer;
end;
var
aa:reca;
Xz,Yz:array [1..40] of byte;
us:array [1..11] of reca;
i,j,a,k,k2,kk,och,z:integer;
H,W,hl,hr,Ww,Wn,PlayE,Play:ShortInt;
X1,Y1,x,y,d:byte;
Kno,onk:Char;
SL,Schot:Word;
Ax,Ay,Bx,By,Ex,Ey,as,sa:Byte;
f1:text;
f2:file of integer;
f3:text;
f4:text;
namen:string[10];
resul:string[20];
prav:string;
q,wq,qq,qw:string[15];

Procedure stolknovenie;
begin
for i:=2 to d-2 do
begin
if (Xz[i]=Xz[i+2]) and (Yz[i]=Yz[i+2]) then
as:=0 else as:=1;
sa:=sa*as;
end;
for i:=1 to d-3 do
begin
if (sa<>0) and (xz[1]=xz[i+3]) and (yz[1]=yz[i+3]) then Play:=0;
end;
if (Xz[1]=3) or (Xz[1]=57) or (Yz[1]=3) or (Yz[1]=22) Then Play:=0;
end;

Procedure Ramka(Xr,Yr:Byte; tt: string; c:byte);
begin
TextColor(c);
GotoXY (Xr,Yr+1);
write (tt);
For i:=Xr to Xr+20 do
begin
GotoXY (i,Yr);
write ('*');
GotoXY (i,Yr+2);
write ('*');
end;
For i:=Yr to Yr+2 do
begin
GotoXY (Xr,i);
write ('*');
GotoXY (Xr+20,i);
write ('*');
end;
end;

Procedure Izm(vv:byte);
Begin
Ax:=Bx; Ay:=By;
Bx:=Xz[vv]; By:=Yz[vv];
Xz[vv]:=Ax; Yz[vv]:=Ay;
End;

Procedure menu2 (q,qq,wq,qw:string);
begin
Clrscr;
TextBackground (0);
TextColor (15);
For X1:=25 to 55 do
Begin
GotoXY (X1,4);
Write ('*');
GotoXY (X1,22);
Write ('*');
end;
For Y1:=4 to 22 do
begin
GotoXY (25,Y1);
Write ('*');
GotoXY (55,Y1);
Write ('*');
end;
GotoXY (31,7);
Write (q);
K2:=0;
repeat
K2:=k2+kk;
kk:=0;
If k2=0 Then Ramka (30,10,qq,128) else
Ramka (30,10,qq,15);
If k2=1 then Ramka (30,14,wq,128) else
Ramka (30,14,wq,15);
IF K2=2 Then Ramka (30,18,qw,128) else
Ramka (30,18,qw,15);
Kno:=ReadKey;
If Kno=#80 then Begin if k2<2 then kk:=1 else kk:=0; end else
if Kno=#72 then Begin if k2>0 then kk:=-1 else kk:=0; end;
until Kno=chr(13);
end;

Procedure Spravka;
begin
menu2('      ‘ЏђЂ‚ЉЂ','     ЏђЂ‚€‹Ђ €ѓђ›   ','   ђЂ‡ђЂЃЋ’—€Љ    ','       ЌЂ‡Ђ„       ');
if k2=0 then
begin
clrscr;
assign(f4,'pravila.pas');
reset(f4);
i:=3;
While not EOF(f4) do
begin
GotoXY(3,i);
i:=i+2;
readln(f4,prav);
writeln(prav);
end;
readln;
end;
if k2=1 then
begin
clrscr;
TextBackground(0);
TextColor (4);
For X1:=3 to 77 do
Begin
GotoXY (x1,2);
Write ('*');
GotoXY (X1,23);
write ('*');
end;
For Y1:=2 to 23 do
Begin
GotoXY (3,Y1);
Write ('*');
GotoXY (77,y1);
Write ('*');
end;
assign(f4,'avtor.pas');
reset(f4);
d:=7;
While not EOF (f4) do
begin
textcolor(10);
readln(f4,prav);
GotoXY (19,d);
Write (prav);
d:=d+2;
for i:=1 to 4 do
Delay (59000);
end;
close(f4);
readln;
end;
if k2=2 then
TextBackground (0);
textcolor(15);
end;

Procedure Resultat;
begin
clrscr;
reset(f1);
for i:=1 to 10 do
begin
readln(f1,us[i].name);
end;
close(f1);
reset(f2);
for i:=1 to 10 do
read(f2,us[i].resultat);
close(f2);
gotoXy(25,12);
If schot>us[10].resultat then
begin
writeln('‚*и १г«мв*в б®бв*ўЁ«: ', schot);
gotoxy(30,13);
writeln('‚ўҐ¤ЁвҐ ў*иҐ Ё¬п...');
gotoxy(36,14);
read(namen);
end
else
begin
GotoXY(23,13);
writeln('‚л *Ґ Ї®ЎЁ«Ё б*¬л© ег¤иЁ© १г«мв*в!');
GotoXY(13,14);
writeln('ЌҐ ®Ј®аз*©вҐбм, ўл ¬®¦ҐвҐ Їа®бв® **ЇЁб*вм бў®с Ё¬п');
GotoXY(36,15);
readln(namen);
end;
us[11].name:=namen;
us[11].resultat:=schot;
for i:=1 to 11 do
for j:=2 to 11 do
begin
if us[j].resultat>us[j-1].resultat then
begin
aa:=us[j-1];
us[j-1]:=us[j];
us[j]:=aa;
end;
end;
rewrite(f1);
for i:=1 to 10 do
begin
write(f1,us[i].name);
writeln(f1,' ');
end;
close(f1);
rewrite(f2);
for i:=1 to 10 do
write(f2,us[i].resultat);
close(f2);
rewrite(f3);
for i:=1 to 10 do
writeln(f3,i,':  ',us[i].resultat,'  ',us[i].name);
close(f3);
end;
Везде, кто текст написан "китайцами", не пугайтесь! Там будет 4 сточки в 1 меню: игра, разработчики, справка и выход.
Следущая часть кода ниже!

Последний раз редактировалось Stilet; 26.11.2014 в 07:41.
ArbeitVaflya вне форума Ответить с цитированием
Старый 26.11.2014, 06:18   #2
ArbeitVaflya
Новичок
Джуниор
 
Регистрация: 26.11.2014
Сообщений: 2
По умолчанию

Код:
begin
assign (f3,'itog.txt');
assign (f1,'imena.txt');
assign (f2,'rec.dat');
repeat
repeat
Clrscr;
TextBackground (0);
TextColor (15);
For X1:=25 to 55 do
Begin
GotoXY (X1,4);
Write ('*');
GotoXY (X1,22);
Write ('*');
end;
For Y1:=4 to 22 do
begin
GotoXY (25,Y1);
Write ('*');
GotoXY (55,Y1);
Write ('*');
end;
K:=0;
Repeat
k:=k+kk;
kk:=0;
If k=0 Then Ramka (30,6,'        €Ја*вм       ',128) else
Ramka (30,6,'       €Ја*вм       ',15);
If k=1 Then Ramka (30,10,'       ђҐЄ®а¤л      ',128) else
Ramka (30,10,'       ђҐЄ®а¤л      ',15);
If k=2 then Ramka (30,14,'       ‘Їа*ўЄ*       ',128) else
Ramka (30,14,'       ‘Їа*ўЄ*       ',15);
If k=3 then Ramka (30,18,'       ‚л室        ',128) else
Ramka (30,18,'        ‚л室       ',15);
Kno:=ReadKey;
If Kno=#80 then Begin if k<3 then kk:=1 else kk:=0; end else
if Kno=#72 then Begin if k>0 then kk:=-1 else kk:=0; end;
until Kno=chr(13);
If k=1 then
begin
Clrscr;
GotoXy(36,5);
writeln('ђҐЄ®а¤л');
reset (f3);
for i:=1 to 10 do
begin
readln(f3,resul);
GotoXY (32,7+i);
Write(resul);
end;
close(f3);
Readln;
end;
If k=2 then
repeat
spravka;
until k2=2;
If k=3 then
exit;
until (k=3) or (k=0);
If k=0 then begin
menu2 ('  “а®ўҐ*м б«®¦*®бвЁ', '       ѓ«Ёбв       ','        ‡¬Ґп        ','       Ђ**Є®*¤*     ');
end;
If K2=0 then begin Sl:=40000; och:=25; d:=5 end else if k2=1 then begin
Sl:=30000; och:=50; d:=10 end else begin Sl:=20000; och:=100; d:=15 end;
TextBackground (1);
Textcolor (5);
clrscr;
schot:=0; playE:=1;
Xz[1]:=30;
Yz[1]:=13;
For i:=2 to 40 do
begin
Xz[i]:=Xz[1];
Yz[i]:=Yz[1];
end;
For X1:=3 to 57 do
Begin
GotoXY (x1,2);
Write ('*');
GotoXY (X1,23);
write ('*');
end;
For Y1:=2 to 23 do
Begin
GotoXY (3,Y1);
Write ('*');
GotoXY (57,y1);
Write ('*');
end;
Play:=1;
GotoXY(60,4);
write('‘зсв: ');
GotoXY(60,6);
write('ђ®бв §¬ҐЁ: ');
gotoXY(60,8);
write('‹гзиЁҐ १г«мв*вл:');
reset(f3);
for i:=1 to 3 do
begin
readln(f3,resul);
GotoXY (60,9+i);
Write(resul);
end;
close(f3);
Repeat
If play=1 then begin
TextColor (4);
Ax:=xz[1]; Ay:=Yz[1];
Xz[1]:=Xz[1]+H; Yz[1]:=Yz[1]+W;
Bx:=Xz[2]; By:=Yz[2];
Xz[2]:=Ax; Yz[2]:=Ay;
For i:=3 to 40 do
izm(i);
GotoXY (Xz[1],Yz[1]);
write(chr(1));
For i:=2 to d do
begin
GotoXY (Xz[i],Yz[i]);
Write(chr(4));
end;
Delay(SL);
Textcolor (1);
GotoXY (Xz[1],Yz[1]);
write(chr(1));
For i:=2 to 40 do
begin
GotoXY (Xz[i],Yz[i]);
Write(chr(4));
end;
randomize;
if PlayE=1 then
begin
Ex:=Random(54)+4;
Ey:=random(18)+4;
If (K2=0) and (schot<>0) and ((schot mod 75)=0) then
d:=d+1;
if (k2=0) and (schot<>0) and ((schot mod 150)=0) then
Sl:=Sl-500;
If (K2=1) and (schot<>0) and ((schot mod 150)=0) then
d:=d+1;
if (k2=1) and (schot<>0) and ((schot mod 500)=0) then
Sl:=Sl-500;
If (K2=2) and (schot<>0) and ((schot mod 500)=0) then
d:=d+1;
if (k2=2) and (schot<>0) and ((schot mod 1000)=0) then
Sl:=Sl-500;
PlayE:=0; end;
Textcolor (6);
GotoXY(Ex,Ey);
write(chr(6));
if (Xz[1]=Ex) and (Yz[1]=Ey) then
begin
schot:=schot+och;
PlayE:=1;
Textcolor (1);
GotoXy(Ex,Ey);
write (' ');
end;
Case Kno of
#72: Begin W:=-1; H:=0;  end;
#80: Begin W:=1; H:=0;  end;
#77: Begin W:=0; H:=1;  end;
#75: Begin W:=0; h:=-1; end;
end;
If Keypressed=true then begin onk:=readkey;Kno:=Readkey; end;
end;
GotoXY(66,4);
write(Schot);
GotoXY(70,6);
write(d);
sa:=10;
stolknovenie;
until Play=0;
If play=0 then begin
TextBackground (0);
Textcolor (15);
clrscr;
GotoXY(6,8);
write(' *****   *****  *       * *******      *****  **   ** ******* ****** ');
GotoXY(6,9);
write('******* ******* **     ** *******     ******* **   ** ******* *******');
GotoXY(6,10);
write('**      **   ** ***   *** **          **   ** **   ** **      **   **');
GotoXY(6,11);
write('**      **   ** **** **** **          **   ** **   ** **      **   **');
GotoXY(6,12);
write('**      **   ** ** *** ** ****        **   ** **   ** ****    **   **');
GotoXY(6,13);
write('**  **  ******* **  *  ** ****        **   ** **   ** ****    ****** ');
GotoXY(6,14);
write('**  *** ******* **     ** **          **   ** **   ** **      ****   ');
GotoXY(6,15);
write('**   ** **   ** **     ** **          **   **  ** **  **      ** **  ');
GotoXY(6,16);
write('******* **   ** **     ** *******     *******   ***   ******* **  ** ');
GotoXY(6,17);
write(' *****  **   ** **     ** *******      *****     *    ******* **   **');
GotoXY(25,23);
Write('„«п Їа®¤®«¦Ґ*Ёп **¦¬ЁвҐ ENTER');
repeat
kno:=readkey;
until Kno=chr(13);
end;
resultat;
H:=0; w:=0; k:=0; kk:=0;
until k=3; end.
А вот и следующая часть :3

Последний раз редактировалось Stilet; 26.11.2014 в 07:41.
ArbeitVaflya вне форума Ответить с цитированием
Старый 26.11.2014, 07:24   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Почему у вас код не отформатирован (не расставлены отступы) и никаких комментариев нет? Читающему будет сложно и неприятно, поэтому, скорее всего, никто не поможет. Или желающих будет очень мало. Обязательно отформатируйте и самое главное - напишите комментарии, что и где вы делаете, а то ничего же непонятно

P.S. Код нужно окружить тэгами CODE, а не QUOTE (кнопка с решёткой)

From Stilet: Это пришлось делать мне. В школе религия этого не позволяет.

Последний раз редактировалось Stilet; 26.11.2014 в 07:42.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
змейка fkty Помощь студентам 2 10.06.2013 18:35
Змейка Vi[RUS] Помощь студентам 1 20.11.2010 21:59
Змейка SAMY93 Общие вопросы Delphi 1 27.06.2010 19:58
Змейка(С++) MISHA13 Помощь студентам 1 08.02.2009 09:35