langtu_quay2002
New Member
em có chép 1 game bằng pascal là rắn ăn mồi làm xong hết không có lỗi nhưng khi chạy thì sau khi chọn level xong lại bị game over T.T mong các mem nào chuyên pascal giúp zùm em, dưới đây là code mong các mem zúp zùm
uses crt;
var a:char;
mx,my,i,d:byte;
hx,hy:integer;
score:integer;
x,y:array[1..104] of byte;
l:word;
const lbox=10; rbox=70;
tbox=5; bbox=45;
maxl=200;
Procedure DrawBox;
var i : byte;
Begin
Textcolor(White);
For i:=lbox-1 to rbox+1 do
begin Gotoxy(i,tbox-1); write('x');
Gotoxy(i,bbox+1); write('x');end;
For i:=tbox-1 to bbox+1 do
begin Gotoxy(lbox-1,i); write('x');
Gotoxy(rbox+1,i); write('x');end;
end;
procedure win;
begin
clrscr;
textmode(150);
gotoxy(25,13);
textcolor(20);
write('You are a Master with 70 point');
readln;
halt;
end;
procedure e;
var i : byte;
t,b,l,r : byte;
Begin
Textcolor(lightred);
GotoXY(x[1],y[1]); Write('@'); Delay(500);
GotoXY(x[1]-1,y[1]); Write('@');
GotoXY(x[1]+1,y[1]); Write('@');
GotoXY(x[1],y[1]-1); Write('@');
GotoXY(x[1],y[1]+1); Write('@');
Delay(500);
t := tbox; r := rbox;
b := bbox; l := lbox;
Textcolor(LightGray);
repeat;
For i:=l to r do
begin Gotoxy(i,t); write(':'); delay(1); end;
For i:=t to b do
begin Gotoxy(r,i); write(':'); delay(1); end;
For i:=r downto l+1 do
begin Gotoxy(i,b); write(':'); delay(1); end;
For i:=b downto t+1 do
begin Gotoxy(l,i); write(':'); delay(1); end;
if lt then b:=b-1; if r>l then r:=r-1;
Until (l=r) and (t=b);
t := tbox; r := rbox;
b := bbox; l := lbox;
repeat;
For i:=l to r do
begin Gotoxy(i,t); write(' '); delay(1); end;
For i:=t to b do
begin Gotoxy(r,i); write(' '); delay(1); end;
For i:=r downto l+1 do
begin Gotoxy(i,b); write(' '); delay(1); end;
For i:=b downto t+1 do
begin Gotoxy(l,i); write(' '); delay(1); end;
if lt then b:=b-1; if r>l then r:=r-1;
Until (l=r) and (t=b);
gotoxy(34,24);
textcolor(LightRed);
write('GAME OVER');
gotoxy(30,1);
textcolor(LightGreen);
write('You ate ',d-3,' apples');
gotoxy(30,2);
write('You got ',score,' scores');
readln;
halt;
end;
begin
randomize;
d:=3;
hx:=1;
mx:=random(rbox-lbox+1)+lbox;
my:=random(bbox-tbox+1)+tbox;
x[1]:=40;
y[1]:=25;
textmode(1000);
repeat
textcolor(15);
score:=0;
clrscr;
write('Choose Level (1..10) : ');readln(l);
until l in[1..10];
l:= maxl div l;
textcolor(0);
clrscr;
repeat
repeat
textcolor(8);
gotoxy(lbox-1,1); write('Developed by Augustine Bui');
textcolor(Yellow);
gotoxy(rbox-12,1); write('Apples : ',(d-3):5);
Gotoxy(lbox-1,2); write('Speed : ',maxl-l);
gotoxy(rbox-6-6,2);write('Scores : ',score:5);
gotoxy(mx,my); textcolor(14);write('*');
DrawBox;
for i:= d+1 downto 2 do
begin
x:=x[i-1];
y:=y[i-1];
end;
x[1]:=x[1]+hx;
y[1]:=y[1]+hy;
if (x[1]>rbox)or(x[1]bbox)or(y[1]
For i:= d+1 downto 2 do
if (y[1]=y) and (x[1]=x) then e;
gotoxy(x[d+1],y[d+1]);textcolor(0); write(' '); (* Xoa Node duoi *)
if (y[1]=my) and (x[1]=mx) then
begin
d:=d+1;
sound(1000);
delay(75);
nosound;
l:=l-2;
gotoxy(x[1],y[1]);
textcolor(LightGreen);
write(#1); (* Ve Them 1 node dau *)
score:=score + ((maxl-l)*10)div 10;
mx:=random(rbox-lbox+1)+lbox;
my:=random(bbox-tbox+1)+tbox;
end;
if d=78 then win;
textcolor(LightGreen);
gotoxy(x[1],y[1]);
write('@');
gotoxy(x[2],y[2]);
write('c');
textcolor(0);
Gotoxy(1,1);
delay(l);
until keypressed;
a:=readkey; if a= #0 then a:= readkey;
case a of
#75: if hx=0 then begin hx:=-1; hy:=0; end;
#77: if hx=0 then begin hx:=1; hy:=0; end;
#72: if hy=0 then begin hx:=0; hy:=-1; end;
#80: if hy=0 then begin hx:=0; hy:=1; end;
'd': d:=d+1;
end;
until a =#27;
end.
uses crt;
var a:char;
mx,my,i,d:byte;
hx,hy:integer;
score:integer;
x,y:array[1..104] of byte;
l:word;
const lbox=10; rbox=70;
tbox=5; bbox=45;
maxl=200;
Procedure DrawBox;
var i : byte;
Begin
Textcolor(White);
For i:=lbox-1 to rbox+1 do
begin Gotoxy(i,tbox-1); write('x');
Gotoxy(i,bbox+1); write('x');end;
For i:=tbox-1 to bbox+1 do
begin Gotoxy(lbox-1,i); write('x');
Gotoxy(rbox+1,i); write('x');end;
end;
procedure win;
begin
clrscr;
textmode(150);
gotoxy(25,13);
textcolor(20);
write('You are a Master with 70 point');
readln;
halt;
end;
procedure e;
var i : byte;
t,b,l,r : byte;
Begin
Textcolor(lightred);
GotoXY(x[1],y[1]); Write('@'); Delay(500);
GotoXY(x[1]-1,y[1]); Write('@');
GotoXY(x[1]+1,y[1]); Write('@');
GotoXY(x[1],y[1]-1); Write('@');
GotoXY(x[1],y[1]+1); Write('@');
Delay(500);
t := tbox; r := rbox;
b := bbox; l := lbox;
Textcolor(LightGray);
repeat;
For i:=l to r do
begin Gotoxy(i,t); write(':'); delay(1); end;
For i:=t to b do
begin Gotoxy(r,i); write(':'); delay(1); end;
For i:=r downto l+1 do
begin Gotoxy(i,b); write(':'); delay(1); end;
For i:=b downto t+1 do
begin Gotoxy(l,i); write(':'); delay(1); end;
if l
Until (l=r) and (t=b);
t := tbox; r := rbox;
b := bbox; l := lbox;
repeat;
For i:=l to r do
begin Gotoxy(i,t); write(' '); delay(1); end;
For i:=t to b do
begin Gotoxy(r,i); write(' '); delay(1); end;
For i:=r downto l+1 do
begin Gotoxy(i,b); write(' '); delay(1); end;
For i:=b downto t+1 do
begin Gotoxy(l,i); write(' '); delay(1); end;
if l
Until (l=r) and (t=b);
gotoxy(34,24);
textcolor(LightRed);
write('GAME OVER');
gotoxy(30,1);
textcolor(LightGreen);
write('You ate ',d-3,' apples');
gotoxy(30,2);
write('You got ',score,' scores');
readln;
halt;
end;
begin
randomize;
d:=3;
hx:=1;
mx:=random(rbox-lbox+1)+lbox;
my:=random(bbox-tbox+1)+tbox;
x[1]:=40;
y[1]:=25;
textmode(1000);
repeat
textcolor(15);
score:=0;
clrscr;
write('Choose Level (1..10) : ');readln(l);
until l in[1..10];
l:= maxl div l;
textcolor(0);
clrscr;
repeat
repeat
textcolor(8);
gotoxy(lbox-1,1); write('Developed by Augustine Bui');
textcolor(Yellow);
gotoxy(rbox-12,1); write('Apples : ',(d-3):5);
Gotoxy(lbox-1,2); write('Speed : ',maxl-l);
gotoxy(rbox-6-6,2);write('Scores : ',score:5);
gotoxy(mx,my); textcolor(14);write('*');
DrawBox;
for i:= d+1 downto 2 do
begin
x:=x[i-1];
y:=y[i-1];
end;
x[1]:=x[1]+hx;
y[1]:=y[1]+hy;
if (x[1]>rbox)or(x[1]
For i:= d+1 downto 2 do
if (y[1]=y) and (x[1]=x) then e;
gotoxy(x[d+1],y[d+1]);textcolor(0); write(' '); (* Xoa Node duoi *)
if (y[1]=my) and (x[1]=mx) then
begin
d:=d+1;
sound(1000);
delay(75);
nosound;
l:=l-2;
gotoxy(x[1],y[1]);
textcolor(LightGreen);
write(#1); (* Ve Them 1 node dau *)
score:=score + ((maxl-l)*10)div 10;
mx:=random(rbox-lbox+1)+lbox;
my:=random(bbox-tbox+1)+tbox;
end;
if d=78 then win;
textcolor(LightGreen);
gotoxy(x[1],y[1]);
write('@');
gotoxy(x[2],y[2]);
write('c');
textcolor(0);
Gotoxy(1,1);
delay(l);
until keypressed;
a:=readkey; if a= #0 then a:= readkey;
case a of
#75: if hx=0 then begin hx:=-1; hy:=0; end;
#77: if hx=0 then begin hx:=1; hy:=0; end;
#72: if hy=0 then begin hx:=0; hy:=-1; end;
#80: if hy=0 then begin hx:=0; hy:=1; end;
'd': d:=d+1;
end;
until a =#27;
end.