Hi everyone,
I was bored on Sunday night so I wrote a Minesweeper clone for the Model 100.
it is called Text Sweeper.
it's pretty barebones, but it works. It's written in BASIC.
Please test it out, and if you find any bugs or issues, let me know. So far the only problem is that Calculating the Minefield is dreadfully slow.
Controls:
Spacebar - Check a cell.
F - Flag as cell.
Arrow Keys - Move Cursor
Link:
http://s000.tinyupload.com/?file_id=...63128597634782
Screenshot running in Virtual T
Capture.JPG
SOURCE CODE:
I was bored on Sunday night so I wrote a Minesweeper clone for the Model 100.
it is called Text Sweeper.
it's pretty barebones, but it works. It's written in BASIC.
Please test it out, and if you find any bugs or issues, let me know. So far the only problem is that Calculating the Minefield is dreadfully slow.
Controls:
Spacebar - Check a cell.
F - Flag as cell.
Arrow Keys - Move Cursor
Link:
http://s000.tinyupload.com/?file_id=...63128597634782
Screenshot running in Virtual T
Capture.JPG
SOURCE CODE:
Code:
1 ' VERSION 1.0
2 ' COPYRIGHT, GEORGE M. RIMAKIS, 2017.
3 ' ALL RIGHTS RESERVED.
900 CLEAR
1000 CLS
1010 PRINT @ 36,"TEXT"
1020 PRINT @ 73,"SWEEPER"
1040 PRINT @ 158,"BY"
1050 PRINT @ 196,"G.M."
1060 PRINT @ 233,"RIMAKIS"
1070 LET I = 0
1080 LET X1%=0:Y1%=0:R%=0:W%=0
1090 M=0:MC=192
1100 LET CX=0:CY=0
2000 FOR N = I TO I+31
2010 PRINT @ N,CHR$(239)
2020 NEXT N
2030 I = I + 40
2050 IF I<=240 GOTO 2000
2060 LET X=0:Y=0
2070 DIM S%(31,6):DIM P$(31,6)
2075 DIM ST%(231,1)
2080 FOR X = 0 TO 31
2090 S%(X,Y)=0
2100 NEXT X
2110 Y = Y+1
2120 IF Y <=6 GOTO 2080
2125 X=0:Y=0
2130 FOR X = 0 TO 31
2140 P$(X,Y)=CHR$(239)
2150 NEXT X
2160 Y = Y+1
2170 IF Y <=6 GOTO 2130
2180 X=16:Y=3
2200 LET M=0
3000 PRINT @ (Y*40)+X,CHR$(255)
3002 FOR Q=0 TO 10
3004 NEXT Q
3010 PRINT @ (Y*40)+X,P$(X,Y)
3012 FOR Q=0 TO 10
3014 NEXT Q
3020 A$=INKEY$
3030 IF A$="" THEN A$="Q"
3040 A%=ASC(A$):IF A%=28 THEN GOTO 3500
3050 IF A%=29 THEN GOTO 3520
3060 IF A%=31 THEN GOTO 3540
3070 IF A%=30 THEN GOTO 3560
3080 IF A%=70 THEN GOTO 3600
3090 IF A%=102 THEN GOTO 3600
3100 IF A%=32 THEN GOTO 4000
3200 IF MC=0 THEN GOTO 13000
3490 GOTO 3000
3500 IF X<31 THEN X=X+1
3510 GOTO 3000
3520 IF X>0 THEN X=X-1
3530 GOTO 3000
3540 IF Y<6 THEN Y=Y+1
3550 GOTO 3000
3560 IF Y>0 THEN Y=Y-1
3570 GOTO 3000
3600 IF P$(X,Y)=CHR$(239) THEN P$(X,Y)=CHR$(170):GOTO 3000
3610 IF P$(X,Y)=CHR$(170) THEN P$(X,Y)=CHR$(239):GOTO 3000
3620 GOTO 3000
4000 IF M=1 THEN GOTO 5000
4002 PRINT @ 129,"CALCULATING..."
4010 I=0:N=1
4020 SEC = VAL(RIGHT$(TIME$,2))
4030 FOR I=1 TO SEC
4040 DUMMY= RND(1)
4050 NEXT I
4060 IF N>32 THEN GOTO 4200
4070 DX= FIX(RND(1)*32)
4080 DY= FIX(RND(1)*7)
4100 IF X=DX-1 THEN IF Y=DY-1 THEN GOTO 4070
4101 IF X=DX THEN IF Y=DY-1 THEN GOTO 4070
4102 IF X=DX+1 THEN IF Y=DY-1 THEN GOTO 4070
4103 IF X=DX-1 THEN IF Y=DY THEN GOTO 4070
4104 IF X=DX THEN IF Y=DY THEN GOTO 4070
4105 IF X=DX+1 THEN IF Y=DY THEN GOTO 4070
4106 IF X=DX-1 THEN IF Y=DY+1 THEN GOTO 4070
4107 IF X=DX THEN IF Y=DY+1 THEN GOTO 4070
4108 IF X=DX+1 THEN IF Y=DY+1 THEN GOTO 4070
4110 IF S%(DX,DY)=0 THEN S%(DX,DY)=1 ELSE GOTO 4020
4120 N= N+1:GOTO 4020
4200 M=1
4300 FOR Q=0 TO 13
4400 PRINT @ 129+Q,CHR$(239)
4450 NEXT Q
4500 GOTO 5000
5000 IF S%(X,Y)=1 THEN GOTO 10000
5010 IF S%(X,Y)=2 THEN GOTO 3000
5020 S%(X,Y)=2:MC=MC-1
5050 ST%(W%,0)=X:ST%(W%,1)=Y:W%=W%+1
5060 CX=ST%(R%,0):CY=ST%(R%,1):R%=R%+1
6010 C=0
7000 IF CY-1<0 THEN GOTO 7060
7010 IF CX-1<0 THEN GOTO 7030
7020 IF S%(CX-1,CY-1)=1 THEN C=C+1:REM Check Top Left
7030 IF S%(CX,CY-1)=1 THEN C=C+1:REM Check Top Middle
7040 IF CX+1>31 THEN GOTO 7060
7050 IF S%(CX+1,CY-1)=1 THEN C=C+1:REM Check Top Right
7060 IF CX-1<0 THEN GOTO 7080
7070 IF S%(CX-1,CY)=1 THEN C=C+1:REM Check Middle Left
7080 IF CX+1>31 THEN GOTO 7100
7090 IF S%(CX+1,CY)=1 THEN C=C+1:REM Check Middle Right
7100 IF CY+1>6 THEN GOTO 7160
7110 IF CX-1<0 THEN GOTO 7130
7120 IF S%(CX-1,CY+1)=1 THEN C=C+1:REM Check Bottom Left
7130 IF S%(CX,CY+1)=1 THEN C=C+1:REM Check Bottom Middle
7140 IF CX+1>31 THEN GOTO 7160
7150 IF S%(CX+1,CY+1)=1 THEN C=C+1:REM Check Bottom Right
7160 IF C=0 THEN PRINT @ (CY*40)+CX," ":P$(CX,CY)=" "
7170 IF C>0 THEN PRINT @ (CY*40)+CX,RIGHT$(STR$(C),1):P$(CX,CY)=RIGHT$(STR$(C),1)
7200 IF C=0 THEN GOTO 8000
7300 IF R%=W% THEN GOTO 3000
7400 IF R%<W% THEN GOTO 5060
8000 IF CY-1<0 THEN GOTO 8060
8010 IF CX-1<0 THEN GOTO 8030
8020 IF S%(CX-1,CY-1)=0 THEN ST%(W%,0)=CX-1:ST%(W%,1)=CY-1:W%=W%+1:S%(CX-1,CY-1)=2:MC=MC-1
8030 IF S%(CX,CY-1)=0 THEN ST%(W%,0)=CX:ST%(W%,1)=CY-1:W%=W%+1:S%(CX,CY-1)=2:MC=MC-1
8040 IF CX+1>31 THEN GOTO 8060
8050 IF S%(CX+1,CY-1)=0 THEN ST%(W%,0)=CX+1:ST%(W%,1)=CY-1:W%=W%+1:S%(CX+1,CY-1)=2:MC=MC-1
8060 IF CX-1<0 THEN GOTO 8080
8070 IF S%(CX-1,CY)=0 THEN ST%(W%,0)=CX-1:ST%(W%,1)=CY:W%=W%+1:S%(CX-1,CY)=2:MC=MC-1
8080 IF CX+1>31 THEN GOTO 8100
8090 IF S%(CX+1,CY)=0 THEN ST%(W%,0)=CX+1:ST%(W%,1)=CY:W%=W%+1:S%(CX+1,CY)=2:MC=MC-1
8100 IF CY+1>6 THEN GOTO 8160
8110 IF CX-1<0 THEN GOTO 8130
8120 IF S%(CX-1,CY+1)=0 THEN ST%(W%,0)=CX-1:ST%(W%,1)=CY+1:W%=W%+1:S%(CX-1,CY+1)=2:MC=MC-1
8130 IF S%(CX,CY+1)=0 THEN ST%(W%,0)=CX:ST%(W%,1)=CY+1:W%=W%+1:S%(CX,CY+1)=2:MC=MC-1
8140 IF CX+1>31 THEN GOTO 8160
8150 IF S%(CX+1,CY+1)=0 THEN ST%(W%,0)=CX+1:ST%(W%,1)=CY+1:W%=W%+1:S%(CX+1,CY+1)=2:MC=MC-1
8160 IF R%<W% GOTO 5060 ELSE GOTO 3000
10000 I=0:N=0
12000 FOR N = I TO I+31
12010 IF N<40 THEN X=N:Y=0:GOTO 12110
12020 IF N<80 THEN X=N-40:Y=1:GOTO 12110
12030 IF N<120 THEN X=N-80:Y=2:GOTO 12110
12040 IF N<160 THEN X=N-120:Y=3:GOTO 12110
12050 IF N<200 THEN X=N-160:Y=4:GOTO 12110
12060 IF N<240 THEN X=N-200:Y=5:GOTO 12110
12070 IF N<280 THEN X=N-240:Y=6:GOTO 12110
12110 IF S%(X,Y)=1 THEN PRINT @ N,CHR$(77)
12120 NEXT N
12130 I = I + 40
12150 IF I<=240 GOTO 12000
12210 PRINT @ 32," YOU"
12220 PRINT @ 72," LOSE"
12230 PRINT @ 112," "
12240 PRINT @ 152," TRY"
12250 PRINT @ 192," AGAIN?"
12260 PRINT @ 232," (Y/N)"
12270 A$=INKEY$
12280 IF A$="" THEN A$="Q"
12290 IF A$="Y" THEN GOTO 900
12295 IF A$="y" THEN GOTO 900
12300 IF A$="N" THEN END
12350 IF A$="n" THEN END
12310 GOTO 12270
13000 PRINT @ 32," YOU"
13220 PRINT @ 72," WIN"
13230 PRINT @ 112," "
13240 PRINT @ 152," PLAY"
13250 PRINT @ 192," AGAIN?"
13260 PRINT @ 232," (Y/N)"
13270 GOTO 12270