[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]
(* Just one of the (dozens) of possible ways of doing the old Tron game in *)
(* Pascal... Have fun! *)
(* Two players only. Cursor keys, and O, P, Q, R *)
(* Freeware - 1994 - Luis Evaristo Beda Netto Marques da Fonseca *)
(* Thunderball Software Inc. *)
Program Tron;
Uses Graph,Crt;
Var Cpos1,Lpos1,Cpos2,Lpos2,Npos1,Npos2,Winner,Vel,Ngames:Integer;
Conta,Bluep,Yellowp:Integer;
Out:Boolean;
Exitgame:Char;
Procedure Initg; {initialize graphics}
var gd,gm:integer;
Begin
Gd:=detect;
Initgraph(Gd,Gm,'C:\TP\BGI');
End;
Procedure InitVar(Var Cpos1,Lpos1,Cpos2,Lpos2,Npos1,Npos2:Integer;Var out:Boolean);
Begin {initilize game variables}
Npos1:=3;
Npos2:=1;
Lpos1:=240;
Lpos2:=240;
Cpos1:=370;
Cpos2:=270;
out:=False;
End;
Procedure PressKey(Var Npos1,Npos2:Integer);
Var Ch:Char;
Num:Integer;
Begin
If Keypressed then {get the key pressed and}
Ch:=ReadKey; {change course accordingly}
if Ch=#0 then
begin
Ch:=ReadKey;
Num:=Ord(Ch);
Case Num of
75:If Npos1<>3 then Npos1:=1;
72:If Npos1<>4 then Npos1:=2;
77:If Npos1<>1 then Npos1:=3;
80:If Npos1<>2 then Npos1:=4;
End;
End
Else
Begin
Num:=Ord(Ch);
Case Num of
111:If Npos2<>3 then Npos2:=1;
113:If Npos2<>4 then Npos2:=2;
112:If Npos2<>1 then Npos2:=3;
97:If Npos2<>2 then Npos2:=4;
End;
end;
End;
Procedure ScrnOutput(Npos1,Npos2:integer;Var Lpos1,Lpos2,Cpos1,Cpos2,Winner,Vel:Integer; Var out:Boolean);
Var Color:Word;
Begin
Case Npos1 of {write output at screen and}
1:Cpos1:=Cpos1-1; {actualize position variables}
2:Lpos1:=Lpos1-1;
3:Cpos1:=Cpos1+1;
4:Lpos1:=Lpos1+1;
End;
Color:=GetPixel(Cpos1,Lpos1);
If Color<>0 then
Begin
out:=true;
winner:=2;
End;
Color:=Cyan;
PutPixel(Cpos1,Lpos1,Color);
Case Npos2 of
1:Cpos2:=Cpos2-1;
2:Lpos2:=Lpos2-1;
3:Cpos2:=Cpos2+1;
4:Lpos2:=Lpos2+1;
End;
Color:=GetPixel(Cpos2,Lpos2);
If Color<>0 then
Begin
out:=true;
winner:=1;
End;
Color:=Yellow;
PutPixel(Cpos2,Lpos2,Color);
Delay(Vel);
End;
Begin
exitgame:='Y';
While Upcase(exitgame)='Y' do
Begin
yellowp:=0;
bluep:=0;
Clrscr;
Writeln('Choose speed (1-very fast to 100-really slow):');
Readln(Vel);
Writeln('Choose number of games:');
Readln(ngames);
if not odd(ngames) then
begin
writeln('Only odd numbers are accepted. Adding one.');
inc(ngames);
readln;
end;
For Conta:=1 to ngames do
Begin
Initg;
InitVar(Cpos1,Lpos1,Cpos2,Lpos2,Npos1,Npos2,out);
SetColor(Blue);
Rectangle(0,0,639,479);
While out=False do
Begin
Presskey(Npos1,Npos2);
ScrnOutput(Npos1,Npos2,Lpos1,Lpos2,Cpos1,Cpos2,winner,Vel,out);
End;
Clrscr;
If winner=1 then
bluep:=bluep+1
else
yellowp:=yellowp+1;
Closegraph;
End;
Write('And the winner is the ');
if bluep>yellowp then
Write('blue')
else
Write('yellow');
writeln(' player!');
Write('New game? (Y/N): ');
Readln(exitgame);
End;
End.
[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]