DECLARE SUB mainmenu () DECLARE SUB game () DECLARE SUB gamestart () DECLARE SUB ci () DECLARE SUB dmap () CLS : SCREEN 9, 0, 1, 0 VIEW (10, 10)-(300, 100), , 4 VIEW PRINT 10 TO 15 man: DATA 2,2,15,2,2 DATA 8,8,8,8,8 DATA 15,2,8,2,15 DATA 2,1,1,1,2 DATA 2,15,2,15,2 wtr: DATA 1,1,1,1,1 DATA 1,1,1,1,1 DATA 1,1,1,1,1 DATA 1,1,1,1,1 DATA 1,1,1,1,1 gra: DATA 2,2,2,2,2 DATA 2,2,2,2,2 DATA 2,2,2,2,2 DATA 2,2,2,2,2 DATA 2,2,2,2,2 tre: DATA 2,10,10,10,2 DATA 10,10,10,10,10 DATA 10,6,10,6,10 DATA 2,10,6,10,2 DATA 2,2,6,2,2 map: 'DATA 4,4,4,4,4,4,4,4,4,4 'DATA 4,3,3,3,3,3,2,2,2,4 'DATA 4,3,3,3,3,3,3,2,2,4 'DATA 4,3,3,3,3,3,3,3,2,4 'DATA 4,3,3,3,3,3,3,3,3,4 'DATA 4,3,3,3,3,3,3,3,3,4 'DATA 4,3,3,3,3,3,3,3,3,4 'DATA 4,3,3,3,3,3,3,3,3,4 'DATA 4,3,3,3,3,3,3,3,3,4 'DATA 4,4,4,4,4,4,4,4,4,4 DATA 4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2 DATA 4,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 DATA 4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2 DATA 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,2,2,2 DIM SHARED m%(25), w%(25), G%(25), t%(25), grid%(20, 15), map%(100, 75) DIM SHARED x%, Y% CALL ci: CALL dmap PRINT "The game is ready!" CALL mainmenu SUB ci 'makes graphics for the game 'and stores them. PRINT "Loading Player graphics..." RESTORE man: FOR Y = 1 TO 5: FOR x = 1 TO 5: READ z: PSET (x, Y), z: NEXT: NEXT: GET (1, 1)-(5, 5), m% PRINT "Loading Water graphics..." RESTORE wtr: FOR Y = 1 TO 5: FOR x = 1 TO 5: READ z: PSET (x, Y), z: NEXT: NEXT: GET (1, 1)-(5, 5), w% PRINT "Loading Grass graphics..." RESTORE gra: FOR Y = 1 TO 5: FOR x = 1 TO 5: READ z: PSET (x, Y), z: NEXT: NEXT: GET (1, 1)-(5, 5), G% PRINT "Loading Tree graphics..." RESTORE tre: FOR Y = 1 TO 5: FOR x = 1 TO 5: READ z: PSET (x, Y), z: NEXT: NEXT: GET (1, 1)-(5, 5), t% PCOPY 1, 0 CLS END SUB SUB dmap 'draws game map 'and stores it CLS PRINT "Drawing Map..." RESTORE map FOR Y = 1 TO 15: FOR x = 1 TO 20 READ z grid%(x, Y) = z IF z = 2 THEN PUT (x * 5, Y * 5), w% IF z = 3 THEN PUT (x * 5, Y * 5), G% IF z = 4 THEN PUT (x * 5, Y * 5), t% NEXT NEXT PRINT "Storing map..." GET (5, 5)-(105, 80), map% PCOPY 1, 0 END SUB SUB game 'loops and picks up player commands 'w = up 's = down 'a = left 'd = right 'ESC = Quit PRINT "w = up": PRINT "s = down": PRINT "a = left": PRINT "d = right": PRINT "Esc = Quit" gs: PUT (5, 5), map%, PSET PUT (x% * 5, Y% * 5), m%, PSET PCOPY 1, 0 DO G$ = INPUT$(1) IF G$ = CHR$(27) THEN CALL mainmenu IF G$ = "w" THEN Y% = Y% - 1 IF grid%(x%, Y%) = 2 OR grid%(x%, Y%) = 4 THEN Y% = Y% + 1 ELSEIF G$ = "s" THEN Y% = Y% + 1 IF grid%(x%, Y%) = 2 OR grid%(x%, Y%) = 4 THEN Y% = Y% - 1 ELSEIF G$ = "a" THEN x% = x% - 1 IF grid%(x%, Y%) = 2 OR grid%(x%, Y%) = 4 THEN x% = x% + 1 ELSEIF G$ = "d" THEN x% = x% + 1 IF grid%(x%, Y%) = 2 OR grid%(x%, Y%) = 4 THEN x% = x% - 1 END IF IF G$ <> "" THEN CLS : GOTO gs LOOP eg: CLS PCOPY 1, 0 END SUB SUB gamestart 'sets player coordinates for game start x% = 5: Y% = 5 CALL game END SUB SUB mainmenu 'make a simple text menu under graphics viewport sm: CLS PRINT "_____________________________________" PRINT "" PRINT "1)Start Game" PRINT "2)Quit" PRINT "_____________________________________" PCOPY 1, 0 DO G = VAL(INPUT$(1)) IF G = 1 THEN CALL gamestart IF G = 2 THEN END LOOP END SUB