social.solarpunk.au

social.solarpunk.au

Been thinking about BASIC.

Perhaps time to return to @oats ?

@vidak

https://basiclang.solarpunk.au/d/6-game-oats-for-my-goats/6

the game as it stands.

as you can see, i have applied the improvements that mdhughes suggested.

for your information, the licence for the code is public domain.

> LIST
1 REM VARIABLES DEFINITION
2 DIM A(10,20)
3 DIM E(21): DIM F(21)
4 DIM P(9): DIM Q(9)
5 FOR I=1 TO 9
6     READ Q(I),P(I)
7 NEXT I
8 DATA -1,1, 0,1, 1,1, -1,0, 0,0, 1,0, -1,-1, 0,-1, 1,-1
9 REM SET UP PLAYFIELD BORDER
10 FOR B=1 TO 10
20     FOR C=1 TO 20
30         LET A(B,C)=0 REM Make every playfield space blank.
40         IF B=1 THEN A(B,C)=1 REM Top border is all fences.
50         IF B=10 THEN A(B,C)=1 REM Bottom border is all fences.
60         IF C=1 THEN A(B,C)=1 REM Left border, all fences.
70         IF C=20 THEN A(B,C)=1 REM Right border, all fences.
80     NEXT C
90 NEXT B
499 REM GENERATE PLAYER POSITION
500 B=INT(RND(8)+2)
510 C=INT(RND(18)+2)
520 A(B,C)=3
530 E(6)=B
540 F(6)=C
599 REM GENERATE POSITIONS OF OATS
600 FOR D=1 TO 5
610     B=INT(RND(8)+2)
620     C=INT(RND(18)+2)
630     IF A(B,C)<>0 THEN  GOTO 610 REM IF NOT BLANK RNG AGAIN
640     A(B,C)=2 REM ELEMENT IS AN OAT~
650     E(D)=B
660     F(D)=C
670 NEXT D
999 REM PRINT MAZE PATTERN
1000 FOR B=1 TO 10
1010     FOR C=1 TO 20
1020         IF A(B,C)=0 THEN PRINT ".";
1030         IF A(B,C)=1 THEN PRINT "X";
1040         IF A(B,C)=2 THEN PRINT "ΓΈ";
1050         IF A(B,C)=3 THEN PRINT "@";
1060     NEXT C
1070     PRINT
1080 NEXT B
1090 PRINT
1100 PRINT "PLAYER POSITION: ";E(6);" x ";F(6)
1110 PRINT "OATS COLLECTED: ";G
1999 REM MAKE MOVE
2000 B=E(6)
2010 C=F(6)
2020 A(B,C)=0 REM SET PLAYER ARRAY ELEMENT TO A BLANK.
2030 INPUT I
2040 PRINT "DELTA ";P(I);" , ";Q(I)
2050 B=B+P(I)
2060 C=C+Q(I)
2999 REM RESULT CALCULATION
3000 IF A(B,C)=1 GOTO 4000 REM PLAYER TOUCHED A FENCE
3010 IF A(B,C)=2 GOTO 5000 REM PLAYER TOUCHED AN OAT
3020 E(6)=B
3030 F(6)=C
3040 A(B,C)=3
3050 GOTO 1000
4000 PRINT "YOU TOUCHED A FENCE!"
4010 A(B,C)=1 REM SET PLAYFIELD CELL BACK TO FENCE
4020 B=E(6)
4030 C=F(6) REM RETURN PLAYER TO FORMER ARRAY POSITION
4040 A(B,C)=3
4050 GOTO 1000
5000 PRINT "YOU COLLECTED AN OAT!"
5010 A(B,C)=3 REM SET PLAYFIELD CELL BACK TO PLAYER.
5020 E(6)=B REM NEW YCOORDS
5030 F(6)=C REM NEW XCOORDS
5040 G=G+1
5050 GOTO 1000

@vidak gameplay
replies
0
announces
2
likes
0