gra 2D - deseczka

0

dosyć prymitywna gra ale pierwsza moja wykonana w pascalu;]
sterowanie lewa strzałka/prawa strzałka
oraz Esc by wyjść.
ma się 3 życia.
Link http://emuland.info/gra.exe
Jakieś ktoś by zobaczył błędy większe lub potrzebne zmiany piście tu lub gg bo to wersja 0.9beta xD

program deseczka;
{$APPTYPE GUI}
uses wingraph,wincrt;
CONST { Keyboard scancodes }
 kLeft  = #75;
 kRight = #77;
 kEsc   = #27;

var mess   : string;
    gd,gm  : smallint;
    errcode: smallint;
    a:char;
    x,y,x1,x2,x3,y1,y2,y3,zycie:integer;
    Ch:Char;

LABEL m1,m2;

begin
zycie:=3;
m1:
cleardevice;
x:=150;
x1:=200;
y1:=100;
x2:=4;
y2:=3;
  gd:=Detect;
  InitGraph(gd,gm,'');
  errcode:=GraphResult;
 	SetColor(green);
	Line(39,50,411,50);
	Line(39,50,39,420);
	Line(411,50,411,420);
  REPEAT
BEGIN

   if KeyPressed then ch := ReadKey;
  CASE ch OF
   kLeft: IF x-65>49 then
     begin
	SetColor(black);
	Line(x-65,400,x+65,400);
	x:=x-20;
	SetColor(red);
	Line(x-65,400,x+65,400);
     end;
    kRight: IF x+65<401 THEN
      begin
 	SetColor(black);
	Line(x-65,400,x+65,400);
	x:=x+20;
	SetColor(red);
	Line(x-65,400,x+65,400);

     end;
kEsc: halt;
END;
Ch:='w';
delay(20);
SetColor(black);
circle(x1,y1,10);
x1:=x1+x2;
y1:=y1+y2;
if x1>395 THEN x2:=-x2;
if x1<64 THEN x2:=-x2;
if y1<54 THEN y2:=-y2;
IF ((y1>390) AND (y1<398)) AND ((x1>x-65) AND (x1<x+65)) THEN
BEGIN
y2:=-y2;
IF (x1>x-65) AND (x1<x-49) THEN x2:=12;
IF (x1>x+65) AND (x1<x+49) THEN x2:=-12;
IF (x1>x-50) AND (x1<x-34) THEN x2:=10;
IF (x1>x+50) AND (x1<x+34) THEN x2:=-10;
IF (x1>x-35) AND (x1<x-24) THEN x2:=8;
IF (x1>x+35) AND (x1<x+24) THEN x2:=-8;
IF (x1>x-25) AND (x1<x-14) THEN x2:=6;
IF (x1>x+25) AND (x1<x+14) THEN x2:=-6;
IF (x1>x-15) AND (x1<x-4) THEN x2:=4;
IF (x1>x+15) AND (x1<x+4) THEN x2:=-4;
IF (x1>x-4) AND (x1<x) THEN x2:=4;
IF (x1<x+15) AND (x1<x-1) THEN x2:=-4;
end;
IF y1>397 THEN
BEGIN
zycie:=zycie-1;
if zycie=0 then goto m2;
goto m1;
sound(1000,10);
END;
SetColor(red);
circle(x1,y1,10);


end;
UNTIL ch = kEsc;
   m2:
   SetBkColor(green);
   cleardevice;
OutTextXY(340,240,'Koniec gry');
OutTextXY(30,400,'Jezeli widzisz bledy w grze lub wiesz co by ulepszylo gre napisz pod numerem gg3556503');
repeat until keypressed;
   CloseGraph;
    end.

1.BŁąd z wyjściem programu po wciśnięciu Esc naprawiony

</b>
0

wiec, tak. po pierwsze kiepska reakcja na klawisze, a po drugie po wyjściu esc, proces nie zostaje zamknięty i gra na nowo sie uruchamia bez końca. Trzeba ręcznie zabić proces. System, z którego korzystam to w2k3.

0

Oducz się używać duetu Label/Goto. Po to język ma różne konstrukcje języka, aby z nich korzystać (odsyłam do literatury Dijkstra GoTo Statement Considered Harmufl).

0
Szczawik napisał(a)

Oducz się używać duetu Label/Goto. Po to język ma różne konstrukcje języka, aby z nich korzystać (odsyłam do literatury Dijkstra GoTo Statement Considered Harmufl).

wiem dla ułatwienia tylko to wstawiłem. Później label i goto wywalę;]

0

Powinieneś odświeżać jeszcze "ścianki" bo po odbiciu się piłeczki zostają na nich dziurki :P

0

Odnośnie GOTO:
http://xkcd.com/292/

1 użytkowników online, w tym zalogowanych: 0, gości: 1