home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
disks
/
disk411.lzh
/
Tron
/
Tron_sourcecode.lst
< prev
next >
Wrap
File List
|
1990-12-15
|
6KB
|
274 lines
' Dieser Sourcecode enthält nur das Wichtigste, nämlich die eigentliche Spiel-
' routine. Vorspann, Menü usw. sind nicht enthalten.
' Benutzen Sie "MERGE", um den Sourcecode in ihren GFABasicinterpreter zu laden.
' Sie dürfen diesen Sourcecode nach Belieben verändern, übernehmen und weiter-
' geben !
'
' This sourcecode contains only the main part of the game TRON. The menu and
' other details are not included.
' Use "MERGE" to load the sourcecode into the GFABasicinterpreter.
' This sourcecode is public domain. You can do with it what you want.
'
OPENS 2,0,0,320,256,3,0
OPENW #2,0,0,320,255,0,0
~ActivateWindow(WINDOW(2))
SETCOLOR 0,0
SETCOLOR 1,9,9,9
SETCOLOR 2,13,9,2
SETCOLOR 3,0,15,0
SETCOLOR 4,3,6,15
SETCOLOR 5,15,0,0
SETCOLOR 6,15,0,0
SETCOLOR 7,15,0,0
'
DIM x&(2),y&(3),alt&(2),speed&(2)
DIM ttx&(2),tty&(2),a&(1000),b&(1000),c&(1000)
'
vorsprung&=700
programme&=1
user&=2
bremse&=0
tracktracing!=TRUE
'
speed&(0)=1
x&(0)=69
y&(0)=128
alt&(0)=8
speed&(2)=1
x&(2)=70
y&(2)=136
alt&(2)=8
speed&(1)=1
x&(1)=71
y&(1)=144
alt&(1)=8
ARRAYFILL a&(),0
ARRAYFILL b&(),0
ARRAYFILL c&(),0
'
count&=user&+programme&
FOR i&=0 TO 2
ttx&(i&)=x&(i&)
tty&(i&)=y&(i&)
IF i&<=count&-1
COLOR 1
TEXT i&*50+50-12,10,STR$(i&+1)
ELSE
speed&(i&)=0
alt&(i&)=0 !sonst läuft tracktracing mit -> Geisterspuren !
ENDIF
NEXT i&
BOX 0,11,319,254 ! Spielfeldrand
' ----Spiel :--------------------------------------------------------------
REPEAT
IF INT(RND*2)=0
zufall&=-1
ELSE
zufall&=1
ENDIF
FOR i&=0 TO 2
IF speed&(i&)>0
COLOR i&+2
IF user&=1 AND i&=0
port|=1
ELSE IF user&=2 AND i&=0
port|=1
ELSE IF user&=2 AND i&=1
port|=0
ELSE
GOTO programm
ENDIF
fire&=0
userabfrage:
SELECT STICK(port|)
CASE 1
IF alt&(i&)=2
GOTO Übersprung
ENDIF
DEC y&(i&)
alt&(i&)=1
CASE 2
IF alt&(i&)=1
GOTO Übersprung
ENDIF
INC y&(i&)
alt&(i&)=2
CASE 4
IF alt&(i&)=8
GOTO Übersprung
ENDIF
DEC x&(i&)
alt&(i&)=4
CASE 8
IF alt&(i&)=4
GOTO Übersprung
ENDIF
INC x&(i&)
alt&(i&)=8
CASE 0,5,6,9,10
Übersprung:
SELECT alt&(i&)
CASE 1
DEC y&(i&)
CASE 2
INC y&(i&)
CASE 4
DEC x&(i&)
CASE 8
INC x&(i&)
ENDSELECT
ENDSELECT
IF POINT(x&(i&),y&(i&))=0
PLOT x&(i&),y&(i&)
ELSE
@tot
@tracktracing
GOTO schleifenende
ENDIF
@tracktracing
IF STRIG(port|) AND fire&=0 AND speed&(i&)>0
INC fire&
COLOR i&+2
GOTO userabfrage
ENDIF
GOTO schleifenende
programm:
SELECT alt&(i&)
CASE 1 !----------------------------------------------------
IF POINT(x&(i&),y&(i&)-1)=0
DEC y&(i&)
ELSE
GOTO zwei
ENDIF
CASE 2 !-------------------------------------------------
IF POINT(x&(i&),y&(i&)+1)=0
INC y&(i&)
ELSE
zwei:
IF POINT(x&(i&)-zufall&,y&(i&))=0
x&(i&)=x&(i&)-zufall&
alt&(i&)=6-2*zufall&
ELSE
IF POINT(x&(i&)+zufall&,y&(i&))=0
x&(i&)=x&(i&)+zufall&
alt&(i&)=6+2*zufall&
ELSE
@tot
ENDIF
ENDIF
ENDIF
CASE 4 !----------------------------------------------------
IF POINT(x&(i&)-1,y&(i&))=0
DEC x&(i&)
ELSE
GOTO acht
ENDIF
CASE 8 !----------------------------------------------------
IF POINT(x&(i&)+1,y&(i&))=0
INC x&(i&)
ELSE
acht:
IF POINT(x&(i&),y&(i&)+zufall&)=0
y&(i&)=y&(i&)+zufall&
alt&(i&)=(15+5*zufall&)/10
ELSE
IF POINT(x&(i&),y&(i&)-zufall&)=0
y&(i&)=y&(i&)-zufall&
alt&(i&)=(15-5*zufall&)/10
ELSE
@tot
ENDIF
ENDIF
ENDIF
ENDSELECT
PLOT x&(i&),y&(i&)
@tracktracing
ELSE
@tracktracing
ENDIF
FOR brake&=1 TO bremse&
NEXT brake&
schleifenende:
NEXT i&
UNTIL count&=0 OR INKEY$<>""
'
CLOSEW #2
CLOSES 2
END
' ------------------------Prozeduren :-----------------------------------
PROCEDURE tot
DEC count&
speed&(i&)=0
alt&(i&)=0
RETURN
PROCEDURE tracktracing
IF tracktracing!=FALSE
GOTO tt_ende
ENDIF
IF i&=0
IF a&(0)=0
ELSE IF a&(0)=1
DEC tty&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ELSE IF a&(0)=2
INC tty&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ELSE IF a&(0)=4
DEC ttx&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ELSE IF a&(0)=8
INC ttx&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ENDIF
DELETE a&(0)
a&(vorsprung&)=alt&(i&)
ELSE IF i&=1
IF b&(0)=0
ELSE IF b&(0)=1
DEC tty&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ELSE IF b&(0)=2
INC tty&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ELSE IF b&(0)=4
DEC ttx&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ELSE IF b&(0)=8
INC ttx&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ENDIF
DELETE b&(0)
b&(vorsprung&)=alt&(i&)
ELSE IF i&=2
IF c&(0)=0
ELSE IF c&(0)=1
DEC tty&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ELSE IF c&(0)=2
INC tty&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ELSE IF c&(0)=4
DEC ttx&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ELSE IF c&(0)=8
INC ttx&(i&)
COLOR 0
PLOT ttx&(i&),tty&(i&)
ENDIF
DELETE c&(0)
c&(vorsprung&)=alt&(i&)
ENDIF
tt_ende:
RETURN