home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Free 37
/
Commodore_Free_Issue_37_2010_Commodore_Computer_Club.d64
/
listing
< prev
next >
Wrap
Text File
|
2023-02-26
|
3KB
|
111 lines
ASTEROID BELT LISTING
5 REM A SIMPLE ASTERIODS GAME BY
NIGEL PARKER FOR COMMODORE FREE
7 REM WE'LL DECLARE ALL OF THE
GLOBAL VARIABLES AND STRINGS USED
LATER
8 REM IN THE PROGRAMME FIRST AS THIS
IS GOOD PRACTISE AND
9 REM ALSO MAKES THINGS JUST A
LITTLE QUICKER FOR BASIC LATER ON
10 A=0: B=A: C=A: I=A: S=A: A$=""
15 REM YOU CAN CREATE YOUR OWN TITLE
SCREEN FROM LINE 11
16 REM THROUGH TO 89 IF YOU WANT TO
88 REM RIGHT, LET'S CLEAR THE SCREEN
AND SET THE BORDER
89 REM AND BACKGROUND COLOUR TO
BLACK AND THE CHARACTERS WHITE
90 PRINT CHR$(147);:POKE 53280,0:
POKE 53281,0:POKE 646,1
99 REM NOW LETS SCROLL THE SCREEN
UPWARDS TO GET EVERYTHING READY TO
PLAY
100 FORI=0 TO 23:PRINT:NEXTI
109 REM HERE ARE THE FIRST OF THE
GLOBAL VARIABLES WE SET UP EARLIER
110 B=1504:C=20
111 REM THE VARIABLE B IS THE SHIP'S
ROW ON THE SCREEN
112 REM AND C IS FOR WHICH COLUMN IT
APPEARS IN (0 THROUGH TO 39)
120 A=INT(40*RND(1))
121 REM THE VARIABLE A IS A RANDOMLY
GENERATED NUMBER BETWEEN 0 AND 39
122 REM THIS IS USED IN THE POKE
BELOW TO RANDOMLY GENERATE WHERE THE
123 REM COLLECTIBLE DOTS WILL APPEAR
130 POKE 1984+A,46
131 REM LINE 140 WILL CREATE A
RANDOMLY GENERATED FLOATING POINT
NUMBER
132 REM GREATER THAN ZERO & NO MORE
THAN ONE, IF THIS IS GREATER THAT
133 REM 0.1 THEN IT POKES A STAR
ONTO THE SCREEN IN A RANDOM COLUMN
134 REM THE STARS MUST BE AVOIDED!
140 IF RND(1)>.1 THEN
P=INT(RND(1)*40):POKE P+1984,42
141 REM GET A$ WILL INPUT THE KEY
PRESS INTO THE STRING A$
142 REM THERE IS THEN A CONDITION TO
CHECK IF THE CONTENTS OF A$
143 REM ARE Z (WHICH MOVES THE CRAFT
LEFT) OR M (WHICH MOVES IT RIGHT)
144 REM THERE IS ALSO A SECOND
CONDITION: C MUST BE GREATER THAN
ZERO
145 REM TO MOVE LEFT AND LESS THAN
40 TO MOVE RIGHT, OBVIOUSLY BECAUSE
146 REM THE C64 HAS A 40-COLUMNS
DISPLAY
147 REM IF THERE HAS BEEN A KEY PRESS
OF LEFT OR RIGHT, & C IS GREATER
148 REM THAN ZERO AND LESS THAN 40,
THE OLD SCREEN POSITION OF THE SHIP
149 REM IS CLEARED BY POKING IT WITH
32 BEFORE CHANGING THE VALUE OF C
150 GET A$:IF A$="Z" AND C>0 THEN
POKEB+C,32:C=C-1
160 IF A$="M" AND C<40 THEN POKE
B+C,32:C=C+1
161 REM THIS BIT CLEARS POKES A SPACE
ONTO THE SCREEN AT THE PLAYER'S
162 REM LAST LOCATION DENOTED BY C
BEFORE SCROLLING IT ONE LINE-FEED
UPWARDS
170 POKE B+C,32
175 PRINT
178 REM THIS NOW PEEKS AT THE
LOCATION OF THE SHIP TO SEE IF AN
179 REM ASTERIOD IS PRESENT - IF SO,
IT JUMPS TO LINE 310
180 IF PEEK(B+C)=42 THEN GOTO 310
189 REM AND IF THERE IS A DOT
PRESENT, IT JUMPS TO A SUBROUTINE
AT LINE 400
190 IF PEEK(B+C)=46 THEN GOSUB 400
193 REM AND NOW WE POKE THE SHIP
DENOTED BY A V ONTO THE SCREEN,
JUMPING BACK
194 REM TO LINE 120 UNTIL THE
CONDITION AT LINE 180 IS MET (YOU
HIT AN ASTERIOD)
195 POKE B+C,22
300 GOTO120
309 REM LOOKS LIKE GAME IS OVER :-(
310 PRINT CHR$(147);
320 PRINT "SORRY YOU HIT AN ASTEROID"
330 PRINT "YOU SCORED ";S;"POINTS"
331 PRINT
332 END
399 REM WELL, YOU SCORE 10 POINTS
FOR COLLECTING A DOT
400 FOR I=0 TO 16:POKE 53280,I:
NEXTI:S=S+10:RETURN