home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OS9_6X09
/
GAMES
/
minefield.lzh
/
minefield.b09
< prev
next >
Wrap
Text File
|
2001-03-23
|
5KB
|
327 lines
PROCEDURE Minefield
BASE 0
DIM m(30,20),n(30,20),tt(4),sx(101),syy(101):INTEGER
DIM hour,min,sec:INTEGER
DIM starthour$,startsec$,startmin$:STRING[2]
DIM b,c,z,r,mx,my,l,h,v,oh,ov,x,y:INTEGER
DIM sk,st,sy:INTEGER
DIM f$,bb$:STRING[32]
DIM t,timer:INTEGER
DIM qq$:STRING[1]
SHELL "tmode -pause -echo"
RUN GFX2("DEFCOL")
RUN GFX2("PALETTE",3,16)
RUN GFX2("BORDER",2)
x=RND(-(VAL(RIGHT$(DATE$,2))))
1 FOR x=0 TO 29
FOR y=0 TO 19
m(x,y)=0
n(x,y)=0
NEXT y
NEXT x
FOR x=0 TO 3
tt(x)=0
NEXT x
FOR x=0 TO 100
sx(x)=0
syy(x)=0
NEXT x
x=0
y=0
b=0
c=0
z=0
r=0
mx=0
my=0
l=0
h=0
v=0
oh=0
ov=0
5 GOTO 10
6 RUN GFX2("COLOR",0,8)
RUN GFX2("FILL",(h*8+16)*2,v*8+16)
RUN GFX2("COLOR",8,2)
RETURN
7 RUN GFX2("COLOR",4,8)
RUN GFX2("FILL",(h*8+16)*2,v*8+16)
RUN GFX2("COLOR",8,2)
RETURN
8 RUN GFX2("COLOR",3,8)
RUN GFX2("FILL",(h*8+16)*2,v*8+16)
RUN GFX2("COLOR",8,2)
RETURN
9 RUN GFX2("COLOR",1,8)
RUN GFX2("FILL",(h*8+16)*2,v*8+16)
RUN GFX2("COLOR",8,2)
RETURN
10 RUN GFX2("CUROFF")
20 RUN GFX2("COLOR",8,2)
30 RUN GFX2("CLEAR")
RUN LOCATE(15,1)
PRINT "MINEFIELD!"
RUN LOCATE(9,3)
PRINT "By Kenneth Reighard, Jr."
RUN LOCATE(8,15)
PRINT "OS9 Version by Jim Gerrie"
RUN LOCATE(16,6)
PRINT "1. Easy"
RUN LOCATE(16,7)
PRINT "2. Medium"
RUN LOCATE(16,8)
PRINT "3. Hard"
50 RUN INKEY(qq$)
IF qq$="" THEN 50
IF qq$<>CHR$(49) AND qq$<>CHR$(50) AND qq$<>CHR$(51) THEN 50
sk=VAL(qq$)
IF sk<1 OR sk>3 THEN 50
RUN LOCATE(10,20)
PRINT "One Moment Please..."
60 ON sk GOTO 65,70,75
65 mx=9
my=9
b=10
GOTO 80
70 mx=19
my=14
b=45
GOTO 80
75 mx=29
my=19
b=99
80 l=b
85 f$="b7,7N5SE2W1"
bb$="B4,4NE4SE4SW4NW4E10"
90 r=(mx+1)*(my+1)-b
95 REM Randomize Timer using H
100 FOR z=1 TO b
105 h=RND(mx)
v=RND(my)
110 IF m(h,v)=-1 THEN
GOTO 105
ELSE
m(h,v)=-1
ENDIF
115 NEXT z
120 FOR v=0 TO my
FOR h=0 TO mx
125 IF m(h,v)<>-1 THEN 155
130 FOR y=-1 TO 1
FOR x=-1 TO 1
135 IF x=0 AND y=0 THEN 150
140 IF h+x<0 OR h+x>mx OR v+y<0 OR v+y>my THEN 150
145 IF m(h+x,v+y)<>-1 THEN
m(h+x,v+y)=m(h+x,v+y)+1
ENDIF
150 NEXT x
NEXT y
155 NEXT h
NEXT v
160 RUN GFX2("COLOR",8,2)
RUN GFX2("CLEAR")
165 RUN LOCATE(34,0)
PRINT "Mines"
170 RUN GFX2("BOX",15*2,15,(mx*8+23)*2,my*8+23)
175 RUN GFX2("COLOR",4,8)
RUN GFX2("FILL",16*2,16)
RUN GFX2("COLOR",8,2)
180 FOR x=0 TO mx
185 RUN GFX2("LINE",(x*8+15)*2,15,(x*8+15)*2,23+my*8)
190 NEXT x
195 FOR y=0 TO my
200 RUN GFX2("LINE",15*2,y*8+15,(23+mx*8)*2,y*8+15)
205 NEXT y
210 h=0
v=0
t=0
215 starthour$=MID$(DATE$,10,2)
startmin$=MID$(DATE$,13,2)
startsec$=MID$(DATE$,16,2)
hour=VAL(starthour$)
min=VAL(startmin$)
sec=VAL(startsec$)
timer=hour*60*60+min*60+sec
220 RUN GFX2("COLOR",2,8)
RUN GFX2("BOX",(h*8+15)*2,v*8+15,(h*8+23)*2,v*8+23)
225 IF r=0 THEN 440
235 RUN GFX2("COLOR",8,2)
RUN LOCATE(36,1)
PRINT " ";
RUN LOCATE(36,1)
PRINT l;
240 RUN INKEY(qq$)
IF qq$="" THEN 240
245 RUN GFX2("COLOR",8,2)
RUN GFX2("BOX",(h*8+15)*2,v*8+15,(h*8+23)*2,v*8+23)
250 IF qq$=CHR$(8) THEN
h=h-1
IF h<0 THEN
h=mx
GOTO 220
ELSE
GOTO 220
ENDIF
ENDIF
255 IF qq$=CHR$(9) THEN
h=h+1
IF h>mx THEN
h=0
GOTO 220
ELSE
GOTO 220
ENDIF
ENDIF
260 IF qq$=CHR$(10) THEN
v=v+1
IF v>my THEN
v=0
GOTO 220
ELSE
GOTO 220
ENDIF
ENDIF
265 IF qq$=CHR$(12) THEN
v=v-1
IF v<0 THEN
v=my
GOTO 220
ELSE
GOTO 220
ENDIF
ENDIF
270 IF qq$=CHR$(13) THEN
IF n(h,v)=0 AND l>0 THEN
GOSUB 9
RUN GFX2("COLOR",8,2)
RUN GFX2("SETDPTR",(h*8+15)*2,v*8+15)
RUN GFX2("DRAW",f$)
n(h,v)=1
l=l-1
GOTO 220
ELSE
IF n(h,v)=1 THEN
RUN GFX2("COLOR",4,8)
RUN GFX2("SETDPTR",(h*8+15)*2,v*8+15)
RUN GFX2("DRAW",f$)
GOSUB 7
n(h,v)=0
l=l+1
GOTO 220
ELSE
GOTO 220
ENDIF
ENDIF
ENDIF
275 IF qq$<>CHR$(32) THEN 220
280 IF n(h,v)<>0 THEN 220
285 c=m(h,v)
290 GOSUB 6
295 IF c=-1 THEN 400
300 r=r-1
305 IF c=0 THEN
n(h,v)=3
GOTO 325
ENDIF
310 RUN GFX2("COLOR",3,8)
RUN LOCATE(h+2,v+2)
PRINT CHR$(c+48)
315 n(h,v)=2
320 GOTO 220
325 oh=h
ov=v
330 st=1
sx(st)=h
syy(st)=v
335 IF st=0 THEN
h=oh
v=ov
GOTO 220
ENDIF
340 x=sx(st)
y=syy(st)
345 FOR h=x-1 TO x+1
FOR v=y-1 TO y+1
350 IF h<0 OR h>mx OR v<0 OR v>my THEN 390
355 IF n(h,v)<>0 THEN 390
360 IF m(h,v)>0 THEN
n(h,v)=2
r=r-1
GOSUB 6
RUN GFX2("COLOR",3,8)
RUN LOCATE(h+2,v+2)
PRINT CHR$(m(h,v)+48)
GOTO 390
ENDIF
365 IF m(h,v)=-1 THEN 390
370 GOSUB 6
375 n(h,v)=3
380 r=r-1
385 st=st+1
sx(st)=h
syy(st)=v
GOTO 340
390 NEXT v
NEXT h
395 st=st-1
GOTO 335
400 GOSUB 8
RUN GFX2("COLOR",2)
RUN GFX2("SETDPTR",(h*8+15)*2,v*8+15)
RUN GFX2("DRAW",bb$)
RUN GFX2("BELL")
405 FOR v=0 TO my
FOR h=0 TO mx
410 IF m(h,v)=-1 THEN
GOSUB 8
RUN GFX2("COLOR",2)
RUN GFX2("SETDPTR",(h*8+15)*2,v*8+15)
RUN GFX2("DRAW",bb$)
ENDIF
415 IF n(h,v)=1 AND m(h,v)<>-1 THEN
GOSUB 9
RUN GFX2("COLOR",6,8)
RUN GFX2("SETDPTR",(h*8+15)*2+4,v*8+15)
RUN GFX2("DRAW","SE8B0,-8SW8")
ENDIF
420 NEXT h
NEXT v
425 RUN GFX2("COLOR",8,2)
RUN LOCATE(11,23)
435 GOTO 480
440 starthour$=MID$(DATE$,10,2)
hour=VAL(starthour$)
startmin$=MID$(DATE$,13,2)
min=VAL(startmin$)
startsec$=MID$(DATE$,13,2)
sec=VAL(startsec$)
t=hour*60*60+min*60+sec
445 RUN LOCATE(15,22)
PRINT "Time= "; t-timer
RUN GFX2("BOX",(h*8+15)*2,v*8+15,(h*8+23)*2,v*8+23)
450 FOR v=0 TO my
FOR h=0 TO mx
455 IF m(h,v)=-1 AND n(h,v)<>1 THEN
GOSUB 9
RUN GFX2("COLOR",5,8)
RUN GFX2("SETDPTR",(h*8+15)*2,v*8+15)
RUN GFX2("DRAW",f$)
ENDIF
460 NEXT h
NEXT v
465 RUN GFX2("COLOR",8,2)
RUN LOCATE(11,23)
480 PRINT "Play Again (y/n)? ";
560 RUN INKEY(qq$)
IF qq$="Y" OR qq$="y" THEN
GOTO 1
ENDIF
IF qq$<>"N" AND qq$<>"n" THEN 560
SHELL "tmode echo"
RUN GFX2("CURON")
END
PROCEDURE LOCATE
PARAM A,B:INTEGER
RUN GFX2("CURXY",A,B)
END