000
14.01.2007, 21:32 Uhr
~erpel
Gast
|
Es ist zum Verrückt werden. Mal ging das Programm, mal nicht. Jetzt geht es garnicht mehr und meine random-Fkt. scheint den Geist aufgegeben zu haben, da der Anstieg immer gleich ist. Also das Problem ist, dass die wand den ball nicht reflektiert. Hmm, hoffe ihr könnt mir helfen.
Code: |
program pingpong; uses crt, graph;
var graphmode, graphdriver : integer; anstieg, richtung : integer; x,y,yb,i,punkte : integer; taste : char;
begin clrscr; graphdriver := detect; initgraph(graphdriver, graphmode, 'C:\TP\BGI'); cleardevice;
delay(2000);
setcolor(blue); settextstyle(3,0,4); outtextxy(200,0,'PING - PONG');
setcolor(white); setlinestyle(0,0,1); line(100,80,401,80); line(100,80,100,282); line(100,282,401,282);
setviewport(101,81,401,281,clipon);
x:=50; yb:=0; richtung:=1; punkte:=0;
randomize; repeat anstieg:=random(5)-2; until anstieg <> 0; y:=random(79);
setcolor(lightred); circle(x,y,3); setfillstyle(1,lightred); floodfill(x,y,lightred); setfillstyle(1,lightred); bar(297,yb,300,yb+20); repeat
setfillstyle(1,lightred); bar(297,yb,300,yb+20);
if (y = 196) or (y = 4) or (y = 5) then begin anstieg := anstieg * -1; end;
if (x = 4) then begin richtung := richtung * -1; end;
if ((x = 294) and ((y > yb) and (y < (yb + 20)))) then begin richtung := richtung * -1; inc(punkte); end;
setcolor(black); circle(x,y,3); setfillstyle(1,black); floodfill(x,y,black);
if richtung = 1 then begin case anstieg of 1 : begin x:=x+2; y:=y-1; end; 2 : begin x:=x+2; y:=y-2; end; -1 : begin x:=x+2; y:=y-1; end; -2 : begin x:=x+2; y:=y-2; end; end; end;
if richtung = -1 then begin case anstieg of 1 : begin x:=x-2; y:=y-1; end; 2 : begin x:=x-2; y:=y-2; end; -1 : begin x:=x-2; y:=y-1; end; -2 : begin x:=x-2; y:=y-2; end; end; end;
setcolor(lightred); circle(x,y,3); setfillstyle(1,lightred); floodfill(x,y,lightred);
if keypressed = true then begin setfillstyle(1,black); bar(297,yb,300,yb+20); taste:=readkey; if taste = #72 then begin yb:=yb-5; setfillstyle(1,lightred); bar(297,yb,300,yb+20); end; if taste = #80 then begin yb:=yb+5; setfillstyle(1,lightred); bar(297,yb,300,yb+20); end; end;
delay(15);
until x = 302 ; closegraph; end.
|
|