|
Program omino; {NOTA: per ottimizzare il programma modificare
il tempo di durata della funzione delay
in base alle prestazioni del proprio calcolatore.
Se questa operazione non viene effettuata probabile
che il salto del personaggio non sia visualizzato correttamente }
Uses graph3,crt;
Var
x0,y0,x,y,p,i,q,z:INTEGER;
c,F:CHAR;
Procedure traccia_assi;
Begin
Draw (0,199,0,0,1);
Draw (1,199,1,0,1); {asse di destra verticale}
Draw (319,199,319,0,1);
Draw (318,199,318,0,1); {asse di sinistra verticale}
Draw (0,199,319,199,1);
Draw (0,198,319,198,1); {asse in basso orizzontale }
Draw (0,0,319,0,1);
Draw (0,1,319,1,1); {asse in alto orizzontale }
For i:=1 to 12 do {ostacolo}
begin
circle (70,200,i,1);
end;
END;
Begin
REPEAT
TEXTCOLOR(4);
gOTOXY (17,24);
wRITELN ('ษอออออออออออออออออออออออออออออออออออออออออออออป');
GOTOXY (17,25);
WRITELN ('บ ***** OMINO 2 ***** บ');
GOTOXY (17,26);
WRITELN ('บ EDITED BY ROMANO ADRIANO บ');
GOTOXY (17,27);
WRITELN ('บ บ');
TEXTCOLOR (10+BLINK);
GOTOXY (17,27);
WRITELN (' PREMI INVIO PER GIOCARE ');
TEXTCOLOR (4);
GOTOXY (17,28);
WRITELN ('บ ISTRUZIONI บ');
GOTOXY (17,29);
WRITELN ('บ USA IL TASTIERINO NUMERICO PER MUOVERTI บ');
GOTOXY (17,30);
WRITELN ('บ E d/s PER SALTARE RISP. A DESTRA O SINISTRA บ');
GOTOXY (17,31);
WRITELN ('บ PREMI ESC DURANTE IL GIOCO PER USCIRE บ');
GOTOXY (17,32);
WRITELN ('ศอออออออออออออออออออออออออออออออออออออออออออออผ');
GOTOXY (56,27);
F:=READKEY;
UNTIL F=#13;
graphmode;
x0:=20;
y0:=190;
Circle(x0,y0,1,3); {disegna il personaggio nelle coordinate iniziali}
Draw (x0,y0,x0,y0+5,3);
draw (x0,y0+2,x0-2,y0+3,3); {braccio sinistro}
draw (x0,y0+2,x0+2,y0+3,3); {braccio destro}
draw (x0,y0+6,x0-2,y0+7,3); {gamba sinistra}
draw (x0,y0+6,x0+2,y0+7,3); {gamba destra}
x:=x0;
y:=y0;
p:=1;
Repeat
BEGIN
traccia_assi;
Draw (160,197,160,78,2); {scala}
Draw (168,197,168,78,2);
Draw (160,195,168,195,2);
Draw (160,191,168,191,2);
Draw (160,187,168,187,2);
Draw (160,183,168,183,2);
Draw (160,179,168,179,2);
Draw (160,175,168,175,2);
Draw (160,171,168,171,2);
Draw (160,167,168,167,2);
Draw (160,163,168,163,2);
Draw (160,159,168,159,2);
Draw (160,155,168,155,2);
Draw (160,151,168,151,2);
Draw (160,147,168,147,2);
Draw (160,143,168,143,2);
Draw (160,139,168,139,2);
Draw (160,135,168,135,2);
Draw (160,131,168,131,2);
Draw (160,127,168,127,2);
Draw (160,123,168,123,2);
Draw (160,119,168,119,2);
Draw (160,115,168,115,2);
Draw (160,111,168,111,2);
Draw (160,107,168,107,2);
Draw (160,103,168,103,2);
Draw (160,99,168,99,2);
Draw (160,95,168,95,2);
Draw (160,91,168,91,2);
Draw (160,87,168,87,2);
Draw (160,83,168,83,2);
Draw (160,79,168,79,2);
Draw (180,197,180,78,2); {scala2}
Draw (188,197,188,78,2);
Draw (180,195,188,195,2);
Draw (180,191,188,191,2);
Draw (180,187,188,187,2);
Draw (180,183,188,183,2);
Draw (180,179,188,179,2);
Draw (180,175,188,175,2);
Draw (180,171,188,171,2);
Draw (180,167,188,167,2);
Draw (180,163,188,163,2);
Draw (180,159,188,159,2);
Draw (180,155,188,155,2);
Draw (180,151,188,151,2);
Draw (180,147,188,147,2);
Draw (180,143,188,143,2);
Draw (180,139,188,139,2);
Draw (180,135,188,135,2);
Draw (180,131,188,131,2);
Draw (180,127,188,127,2);
Draw (180,123,188,123,2);
Draw (180,119,188,119,2);
Draw (180,115,188,115,2);
Draw (180,111,188,111,2);
Draw (180,107,188,107,2);
Draw (180,103,188,103,2);
Draw (180,99,188,99,2);
Draw (180,95,188,95,2);
Draw (180,91,188,91,2);
Draw (180,87,188,87,2);
Draw (180,83,188,83,2);
Draw (180,79,188,79,2);
Draw (168,77,180,77,3); {piano}
x:=x0;
y:=y0;
c:=readkey;
Circle(x,y,1,0);
Draw (x,y,x,y+5,0); {cancella il personaggio alle vecchie coordinate}
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
{ dopo aver acquisito un carattere da tastiera
modifica le coordinate del personaggio }
If (c=chr(56)) and (x<=195) and (x>=162) and (y>=70) then y:=y-1;
If (c=chr(50)) and (y<=195) and (x>=162) and (y>=68) and (y<190) then y:=y+1;
If (c=chr(52)) and (y>189) and (x>3) then x:=x-1;
If (c=chr(52)) and (y<=70) and (x<=190) and (x>=158) then x:=x-1;
If (c=chr(54)) and (y>189) and (x<316) then x:=x+1;
If (c=chr(54)) and (y<=70) and (x<=190) and (x>=158) then x:=x+1;
If (c=chr(53)) and (y>9) and (y<197) then {salto in alto (5)}
Begin
for i:=1 to 6 do
begin
delay (30);
y:=y-i;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
for i:=6 downto 0 do
begin
delay (30);
y:=y+i;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
end;
If (c=chr(100)) and (y>189) and (x<280) and (x>10) then {d:salto in avanti a destra}
Begin
for i:=0 to 6 do
begin
delay (30);
y:=y-i;
x:=x+i;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
for i:=6 downto 0 do
begin
delay (30);
y:=y+i;
x:=x+i;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
end;
If (c=chr(115)) and (y>189) and (x<316) and (x>40) then {s:salto in avanti a sinistra}
Begin
for i:=0 to 6 do
begin
delay (30);
y:=y-i;
x:=x-i;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
for i:=6 downto 0 do
begin
delay (30);
y:=y+i;
x:=x-i;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
end;
If (c=chr(115)) and (y<=189) and (x<316) and (x>40) then {s:salto in avanti a sinistra}
Begin {caduta}
for i:=0 to 6 do
begin
delay (30);
y:=y-i;
x:=x-i;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
q:=0;
z:=abs(y-190);
for i:=1 to z do
begin
delay (30);
q:=q+1;
y:=y+i;
x:=x-q;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
end;
If (c=chr(100)) and (y<=189) and (x<316) and (x>40) then {d:salto in avanti a sinistra}
Begin {caduta}
for i:=0 to 6 do
begin
delay (30);
y:=y-i;
x:=x+i;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
q:=0;
z:=abs(y-190);
for i:=1 to z do
begin
delay (30);
q:=q+1;
y:=y+i;
x:=x+q;
Circle(x,y,1,3);
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
delay (30);
Circle(x,y,1,0);
Draw (x,y,x,y+5,0);
draw (x,y+2,x-2,y+3,0); {braccio sinistro}
draw (x,y+2,x+2,y+3,0); {braccio destro}
draw (x,y+6,x-2,y+7,0); {gamba sinistra}
draw (x,y+6,x+2,y+7,0); {gamba destra}
end;
end;
Circle(x,y,1,3); {disegna il personaggio alle nuove coordinate}
Draw (x,y,x,y+5,3);
draw (x,y+2,x-2,y+3,3); {braccio sinistro}
draw (x,y+2,x+2,y+3,3); {braccio destro}
draw (x,y+6,x-2,y+7,3); {gamba sinistra}
draw (x,y+6,x+2,y+7,3); {gamba destra}
x0:=x; {aggiorna le coordinate iniziali}
y0:=y;
END;
Until c=#27;
END.
|
|