Even more reasonable levels: rooms do not touch (FULL only.)
catseye
12 years ago
9 | 9 |
some amount of memory expansion, and a MINI version, which runs on an
|
10 | 10 |
unexpanded VIC-20. With the MINI version, you get:
|
11 | 11 |
|
12 | |
* random generation of reasonable dungeon levels, with rooms and passages
|
13 | |
* the contents of rooms and passages are not visible until entered
|
|
12 |
* random generation of somewhat reasonable dungeon levels, with rooms and
|
|
13 |
passages
|
|
14 |
* the contents of rooms are not visible until entered
|
14 | 15 |
* levels populated with monsters, treasure, and stairwells
|
15 | |
* (possibly more, if I can squeeze it in)
|
|
16 |
* (possibly a tiny bit more, if I can squeeze it in)
|
16 | 17 |
|
17 | |
With the FULL version, you will, one day, get:
|
|
18 |
With the FULL version, you get:
|
18 | 19 |
|
|
20 |
* more reasonable dungeon level generation
|
|
21 |
|
|
22 |
And you may one day get:
|
|
23 |
|
|
24 |
* progressively more difficult dungeon levels
|
19 | 25 |
* more than one kind of monster
|
20 | 26 |
* character generation with three stats (strength, intelligence, and
|
21 | 27 |
dexterity) and hit points
|
26 | 26 |
|
27 | 27 |
rem dm : damage done during combat
|
28 | 28 |
|
|
29 |
#ifdef FULL
|
29 | 30 |
rem sg : strength
|
30 | 31 |
rem in : intelligence
|
31 | 32 |
rem de : dexterity
|
|
33 |
rem pt : health potions
|
|
34 |
#endif
|
32 | 35 |
rem hp : hit points
|
33 | 36 |
rem mh : max hit points
|
34 | 37 |
rem au : gold
|
35 | |
rem pt : health potions
|
36 | 38 |
rem dl : dungeon level
|
37 | 39 |
|
38 | 40 |
rem r%(#,p) : room matrix: first dimension is room number, second:
|
|
148 | 150 |
1010 ifsb=1thenprint"gold"au"{left} ";
|
149 | 151 |
|
150 | 152 |
#ifdef FULL
|
151 | |
|
152 | 153 |
1012 ifsb=2thenprint"potion"pt"{left} ";
|
153 | 154 |
1015 ifsb=3thenprint"str"sg"{left} int"in"{left} dex"de"{left} ";
|
154 | |
|
155 | 155 |
#endif
|
156 | 156 |
|
157 | 157 |
1085 fori=pos(0)to21:print" ";:next
|
|
241 | 241 |
7060 fori=0tomm:m%(i,3)=0:next
|
242 | 242 |
|
243 | 243 |
rem ... then make some rooms
|
244 | |
rem ... (this part isn't as clever as it should be)
|
245 | 244 |
|
246 | 245 |
7100 fori=0to4
|
247 | |
7110 r%(i,2)=int(rnd(1)*6)+3:r%(i,3)=int(rnd(1)*6)+3
|
248 | |
7120 r%(i,0)=int(rnd(1)*(20-r%(i,2)))+1:r%(i,1)=int(rnd(1)*(20-r%(i,3)))+1
|
|
246 |
7110 r%(i,2)=int(rnd(1)*3)*2+2:r%(i,3)=int(rnd(1)*3)*2+2
|
|
247 |
7120 r%(i,0)=int(rnd(1)*(20-r%(i,2))/2)*2+1
|
|
248 |
7125 r%(i,1)=int(rnd(1)*(20-r%(i,3))/2)*2+1
|
249 | 249 |
|
250 | 250 |
rem ... if this is the first room, no checking or tunnel is needed.
|
251 | 251 |
|
|
320 | 320 |
|
321 | 321 |
rem init
|
322 | 322 |
|
323 | |
8000 dim m%(9,3),r%(4,3)
|
324 | |
8005 sg=10:in=11:de=12:mh=31:hp=mh:dl=1:mm=9
|
325 | |
8010 sc=7680:cm=38400
|
|
323 |
8000 dimm%(9,3),r%(4,3)
|
|
324 |
8005 sc=7680:cm=38400:mh=31:hp=mh:dl=1:mm=9
|
|
325 |
#ifdef FULL
|
|
326 |
8010 sg=10:in=11:de=12
|
|
327 |
#endif
|
326 | 328 |
8012 print"{clr}"
|
327 | 329 |
8015 m$="hit any key to begin":gosub4000:gosub4000
|
328 | 330 |
rem ... tricky! tricky! tail call!
|