
(PC98ゲームコード)ENDLESS DANGEON(N88互換BASIC用)
100 cls
110 width 40,20
120 'intro ############################
130 locate 0,4
140 ? "ここは最近出現したばかりの"
150 ? "新しいダンジョンです。"
160 ? ""
170 d=input$(1)
180 ? "冒険者であるあなたは一攫千金を求めて"
190 ? "今まさにダンジョンへ挑もうとしています。"
200 ? ""
210 d=input$(1)
220 ? "数々のトラップを潜り抜け、"
230 ? "凶暴なモンスターをなぎ倒し、"
240 ? "見事に宝を手に入れることが"
250 ? "できるでしょうか?"
260 d=input$(1)
270 *title
280 cls
290 'title #############################
300 locate 0,7
310 ? " Endless Dangeon"
320 ? " Ver.1.0"
330 ? ""
340 ? " By 曳舟次郎"
350 d=input$(1)
360 cls
370 'setting ##########################
380 ? ""
390 ? "はじめに、あなたの名前を教えてください。"
400 ? ""
410 input "",name$
420 ? ""
430 ? "ようこそ、";name$;"さん!"
440 d=input$(1)
450 cls
460 ? ""
470 ? "続いて、ステータスを決めます。"
480 ? ""
490 d=input$(1)
500 *parameter
510 php=100+int(rnd(1)*50)
520 maxhp=php
530 patk=20+int(rnd(1)*10)
540 pdef=20+int(rnd(1)*10)
550 pagi=20+int(rnd(1)*10)
560 pdex=20+int(rnd(1)*10)
570 pmatk=20+int(rnd(1)*10)
580 pmdef=20+int(rnd(1)*10)
590 pluk=20+int(rnd(1)*10)
600 ex=0
610 ? " HP=";php
620 ? " ATK=";patk," DEF=";pdef
630 ? " AGI=";pagi," DEX=";pdex
640 ? "M-ATK=";pmatk,"M-DEF=";pmdef
650 ? ""
660 *q1
670 ? "これでよろしいですか? (Y/N)"
680 ? ""
690 q1$=input$(1)
700 q1=instr("YyNn",q1$)
710 on q1 goto *start,*start,*parameter,*parameter
720 goto *q1
730 *start
740 ? "ステータスが確定しました。"
750 ? ""
760 d=input$(1)
770 sord=0
780 armor=0
790 shield=0
800 ? "現在あなたは"
810 ? "ショートソード"
820 ? "レザーアーマー"
830 ? "ウッドシールド"
840 ? "を装備しています。"
850 ? ""
860 d=input$(1)
870 ? "新たな装備品は自力で入手してください。"
880 ? ""
890 d=input$(1)
900 cls
910 locate 5,9
920 ? "それでは、冒険の始まりです!"
930 d=input$(1)
940 cls
950 'main ############################
960 floor=1
970 doorkey=0
980 potion=3
990 scroll=1
1000 *floor
1010 cls
1020 ? ""
1030 if floor=5 then goto *boss
1040 ? "ここはフロア";floor;"です。"
1050 ? ""
1060 if doorkey=0 then gosub *nokey else gosub *getkey
1070 ? ""
1080 ? "HP=";php
1090 ? ""
1100 if sord=0 then gosub *sord1 else gosub *sord2
1110 if armor=0 then gosub *armor1 else gosub *armor2
1120 if shield=0 then gosub *shield1 else gosub *shield2
1130 ? ""
1140 ? "回復薬=";potion,"スクロール=";scroll
1150 ? " [P]で回復薬使用"
1160 ? ""
1170 ? " ==HIT ANY KEY=="
1180 ? ""
1190 d$=input$(1)
1200 dd=instr("Pp",d$)
1210 on dd goto *usepotion,*usepotion
1220 cls
1230 dice=int(rnd(1)*6)+1
1240 on dice goto *treasure,*spring,*trap,*door,*load,*battle
1250 end
1260 'treasure ########################
1270 *treasure
1280 if tr=1 then goto *load
1290 ? "宝箱を発見しました!"
1300 ? ""
1310 *qt1
1320 ? "開けますか? (Y/N)"
1330 ? ""
1340 qt1$=input$(1)
1350 qt1=instr ("YyNn",qt1$)
1360 on qt1 goto *inside,*inside,*cancel,*cancel
1370 goto *qt1
1380 *inside
1390 dicetr=int(rnd(1)*7+1)
1400 on dicetr goto *sord3,*armor3,*shield3,*key,*potion,*scroll,*mimic
1410 *sord3
1420 if sord=1 then goto *enpty
1430 ? "あなたはロングソードを手に入れました!"
1440 ? ""
1450 d=input$(1)
1460 sord=1
1470 patk=patk+10
1480 goto *floor
1490 *armor3
1500 if armor=1 then goto *enpty
1510 ? "あなたはチェインメイルを手に入れました!"
1520 ? ""
1530 d=input$(1)
1540 armor=1
1550 pdef=pdef+10
1560 goto *floor
1570 *shield3
1580 if shield=1 then goto *enpty
1590 ? "あなたはカイトシールドを手に入れました!"
1600 ? ""
1610 d=input$(1)
1620 shield=1
1630 pdef=pdef+10
1640 goto *floor
1650 *key
1660 if doorkey=1 then goto *enpty
1670 ? "あなたは扉の鍵を手に入れました!"
1680 ? ""
1690 d=input$(1)
1700 doorkey=1
1710 goto *floor
1720 *potion
1730 if potion=10 then goto *enpty
1740 ? "あなたは回復薬を手に入れました!"
1750 ? ""
1760 d=input$(1)
1770 potion=potion+1
1780 goto *floor
1790 *scroll
1800 if scroll=10 then goto *enpty
1810 ? "あなたはスクロールを手に入れました!"
1820 ? ""
1830 d=input$(1)
1840 scroll=scroll+1
1850 goto *floor
1860 *mimic
1870 ? "宝箱はミミックだった!!"
1880 ? ""
1890 d=input$(1)
1900 ? "「暗いよー!狭いよー!」"
1910 ? ""
1920 d=input$(1)
1930 dm=10+int(rnd(1)*10)
1940 ? "あなたは";dm;"のダメージを受けました!"
1950 ? ""
1960 d=input$(1)
1970 php=php-dm
1980 if php<=0 then goto *death
1990 goto *floor
2000 *cancel
2010 ? "あなたはその場を後にしました。"
2020 ? ""
2030 d=input$(1)
2040 goto *floor
2050 *enpty
2060 ? "宝箱は空でした……"
2070 ? ""
2080 d=input$(1)
2090 goto *floor
2100 'spring ##########################
2110 *spring
2120 if spring=1 then goto *nospring
2130 ? "清らかな泉が湧いています。"
2140 ? "あなたのHPは全快しました。"
2150 ? ""
2160 d=input$(1)
2170 php=maxhp
2180 pmp=maxmp
2190 spring=1
2200 goto *floor
2210 *nospring
2220 ? "残念ながら泉は枯れていました……"
2230 ? ""
2240 d=input$(1)
2250 goto *floor
2260 'trap ########################################################
2270 *trap
2280 ? "シュパッ!!"
2290 ? "弓矢のトラップだ!!"
2300 ? ""
2310 d=input$(1)
2320 dm=int(rnd(1)*20)
2330 if dm<10 then goto *trapnodam else goto *trapdam
2340 *trapnodam
2350 ? "あなたは矢を避けました。"
2360 ? ""
2370 d=input$(1)
2380 goto *floor
2390 *trapdam
2400 ? "あなたは";dm;"のダメージを受けました!"
2410 ? ""
2420 d=input$(1)
2430 php=php-dm
2440 if php<=0 then goto *death
2450 goto *floor
2460 'door ###########################
2470 *door
2480 if doorkey=0 then goto *nodoorkey else goto *getdoorkey
2490 *nodoorkey
2500 ? "次のフロアへの扉のようですが、"
2510 ? "扉の鍵をまだ入手していません……"
2520 ? ""
2530 d=input$(1)
2540 goto *floor
2550 *getdoorkey
2560 ? "次のフロアへの扉です。"
2570 *qd1
2580 ? "鍵を使いますか? (Y/N)"
2590 ? ""
2600 qd1$=input$(1)
2610 qd1=instr("YyNn",qd1$)
2620 on qd1 goto *next,*next,*floor,*floor
2630 goto *qd1
2640 *next
2650 doorkey=0
2660 spring=0
2670 floor=floor+1
2680 ? "次のフロアへ進みます。"
2690 ? ""
2700 d=input$(1)
2710 goto *floor
2720 'load ###########################
2730 *load
2740 ? "特に何もありませんでした。"
2750 ? ""
2760 d=input$(1)
2770 goto *floor
2780 'battle ##########################
2790 *battle
2800 ? "モンスターと遭遇しました!!"
2810 ? ""
2820 d=input$(1)
2830 ehp=100+int(rnd(1)*20)+floor
2840 eatk=20+int(rnd(1)*15)+floor
2850 edef=20+int(rnd(1)*15)+floor
2860 eagi=20+int(rnd(1)*15)+floor
2870 edex=20+int(rnd(1)*15)+floor
2880 emdef=20+int(rnd(1)*15)+floor
2890 *qb1
2900 ? "HP=";php
2910 ? ""
2920 ? "どうしますか?"
2930 ? ""
2940 ? "1,戦う","2,逃げる"
2950 ? ""
2960 qb1$=input$(1)
2970 qb1=instr("12",qb1$)
2980 on qb1 goto *playerturn,*escape
2990 goto *qb1
3000 *escape
3010 if pagi+int(rnd(1)*6)>eagi+int(rnd(1)*6) then goto *escsuccess else goto *escmiss
3020 *escsuccess
3030 ? "上手く逃げ出せました。"
3040 ? ""
3050 d=input$(1)
3060 goto *floor
3070 *escmiss
3080 ? "モンスターに阻まれました……"
3090 ? ""
3100 goto *enemyturn
3110 *playerturn
3120 ? "1,攻撃","2,回復薬","3,スクロール"
3130 qb2$=input$(1)
3140 qb2=instr("123",qb2$)
3150 on qb2 goto *attack,*btlpotion,*btlscroll
3160 goto *playerturn
3170 *btlpotion
3180 if potion=0 then goto *btlnopotion
3190 potion=potion-1
3200 php=maxhp
3210 ? "HPが全快しました。"
3220 ? ""
3230 d=input$(1)
3240 goto *enemyturn
3250 *btlnopotion
3260 ? "回復薬がありません……"
3270 ? ""
3280 d=input$(1)
3290 goto *playerturn
3300 *btlscroll
3310 if scroll=0 then goto *btlnoscroll
3320 scroll=scroll-1
3330 ? "スクロールを使いました。"
3340 ? ""
3350 ? "ファイヤーボール!!"
3360 ? ""
3370 d=input$(1)
3380 dm=20+pmatk+int(rnd(1)*10)-emdef
3390 if dm<0 then dm=0
3400 ? dm;"のダメージを与えました。"
3410 ? ""
3420 d=input$(1)
3430 ehp=ehp-dm
3440 if ehp<=0 then goto *btlwin
3450 goto *enemyturn
3460 *btlnoscroll
3470 ? "スクロールがありません……"
3480 ? ""
3490 d=input$(1)
3500 goto *playerturn
3510 *attack
3520 if pagi+int(rnd(1)*10)<eagi+int(rnd(1)*10) then goto *patkmiss
3530 if pdex+int(rnd(1)*10)>edex+int(rnd(1)*10) then goto *pcritical
3540 dm=10+patk+int(rnd(1)*10)-edef
3550 if dm<0 then dm=0
3560 ? dm;"のダメージを与えました。"
3570 ? ""
3580 d=input$(1)
3590 ehp=ehp-dm
3600 if ehp<=0 then goto *btlwin
3610 goto *enemyturn
3620 *pcritical
3630 ? "Critical Hit!!"
3640 ? ""
3650 dm=20+patk+int(rnd(1)*10)-edef
3660 if dm<0 then dm=0
3670 ? dm;"のダメージを与えました。"
3680 ? ""
3690 d=input$(1)
3700 ehp=ehp-dm
3710 if ehp<=0 then goto *btlwin
3720 goto *enemyturn
3730 *patkmiss
3740 ? "あなたの剣は空を切りました……"
3750 ? ""
3760 d=input$(1)
3770 goto *enemyturn
3780 *enemyturn
3790 ? "モンスターの攻撃!"
3800 ? ""
3810 d=input$(1)
3820 if pagi+int(rnd(1)*10)>eagi+int(rnd(1)*10) then goto *eatkmiss
3830 if pdex+int(rnd(1)*10)<edex+int(rnd(1)*10) then goto *ecritical
3840 dm=5+eatk+int(rnd(1)*10)-pdef
3850 if dm<0 then dm=0
3860 ? dm;"のダメージを喰らいました……"
3870 ? ""
3880 d=input$(1)
3890 php=php-dm
3900 if php<=0 then goto *death
3910 goto *qb1
3920 *ecritical
3930 dm=10+eatk+int(rnd(1)*10)-pdef
3940 if dm<0 then dm=0
3950 ? dm;"のダメージを喰らいました……"
3960 ? ""
3970 d=input$(1)
3980 php=php-dm
3990 if php<=0 then goto *death
4000 goto *qb1
4010 *eatkmiss
4020 ? "あなたは攻撃を避けました。!
4030 ? ""
4040 d=input$(1)
4050 goto *qb1
4060 *btlwin
4070 ? "あなたはモンスターに勝利しました!"
4080 ? ""
4090 ex=ex+10
4100 ? "10の経験値を獲得しました。"
4110 d=input$(1)
4120 if ex=50 then goto *levelup
4130 goto *floor
4140 'boss ###########################
4150 *boss
4160 cls
4170 ? "他のフロアと雰囲気が違います……"
4180 ? ""
4190 d=input$(1)
4200 ? "ここは、もしかすると……"
4210 ? ""
4220 d=input$(1)
4230 ? "???「よくぞここまで来た!」"
4240 ? "???「ワシはこの洞窟のボスじゃ!」"
4250 ? ""
4260 d=input$(1)
4270 ? "ボス「ここは無粋なことをせず」"
4280 ? "ボス「サイコロ一発勝負としよう!」"
4290 ? "ボス「引き分けはお主の勝ちじゃ。」"
4300 ? ""
4310 d=input$(1)
4320 bd1=int(rnd(1)*6)+1
4330 bd2=int(rnd(1)*6)+1
4340 ? "ボス「ワシの目は……」"
4350 ? "ボス「";bd1;"と";bd2;"で";bd1+bd2;"じゃな!」"
4360 ? ""
4370 d=input$(1)
4380 if pluk>50 then pd1=6 else pd1=int(rnd(1)*6)+1
4390 if pluk>50 then pd2=6 else pd2=int(rnd(1)*6)+1
4400 ? "ボス「お主の目は……」"
4410 ? "ボス「";pd1;"と";pd2;"で";pd1+pd2;"じゃな!」"
4420 ? ""
4430 d=input$(1)
4440 ? "ボス「";bd1+bd2;"と";pd1+pd2;"で……」"
4450 if bd1+bd2<=pd1+pd2 then goto *clear
4460 ? "ボス「お主の負けじゃ!!」"
4470 ? "ボス「出直してまいれ!!」"
4480 ? ""
4490 d=input$(1)
4500 'death ###########################
4510 *death
4520 ? "あなたは力尽きました……"
4530 ? ""
4540 d=input$(1)
4550 cls
4560 locate 15,9
4570 ? "GAME OVER..."
4580 d=input$(1)
4590 goto *title
4600 'clear ###########################
4610 *clear
4620 ? "ボス「お主の勝ちじゃ!!」"
4630 ? "ボス「潔く負けを認めよう。」"
4640 ? "ボス「宝はお主のものじゃ!!」"
4650 d=input$(1)
4660 cls
4670 locate 0,7
4680 ? " こうして";name$;"の冒険は"
4690 ? " 終わりを告げました……"
4700 ? ""
4710 d=input$(1)
4720 ? " ==Congulaturations!!=="
4730 end
4740 'key #############################
4750 *getkey
4760 ? "扉の鍵は入手済みです。"
4770 return
4780 *nokey
4790 ? "扉の鍵は未入手です。"
4800 return
4810 'levelup #########################
4820 *levelup
4830 cls
4840 ? "レベルが上がりました!"
4850 ? ""
4860 d=input$(1)
4870 php=maxhp
4880 php=php+5
4890 maxhp=php
4900 patk=patk+1
4910 pdef=pdef+1
4920 pagi=pagi+1
4930 pdex=pdex+1
4940 pmatk=pmatk+1
4950 pmdef=pmdef+1
4960 pluk=pluk+int(rnd(1)*10)
4970 ? "HP=";php
4980 ? "ATK=";patk,"DEF=";pdef
4990 ? "AGI=";pagi,"DEX=";pdex
5000 ? "M-ATK=";pmatk,"M-DEF=";pmdef
5010 ex=0
5020 d=input$(1)
5030 goto *floor
5040 'equipment #######################
5050 *sord1
5060 ? "SORD= ショートソード"
5070 return
5080 *sord2
5090 ? "SORD= ロングソード"
5100 return
5110 *armor1
5120 ? "ARMOR= レザーアーマー"
5130 return
5140 *armor2
5150 ? "ARMOR= チェインメイル"
5160 return
5170 *shield1
5180 ? "SHIELD= ウッドシールド"
5190 return
5200 *shield2
5210 ? "SHIELD= カイトシールド"
5220 return
5230 *usepotion
5240 cls
5250 if potion=0 then goto *nopotion
5260 potion=potion-1
5270 php=maxhp
5280 ? "HPが全快しました。"
5290 d=input$(1)
5300 goto *floor
5310 *nopotion
5320 ? "回復薬がありません……"
5330 d=input$(1)
5340 goto *floor
―――
いわゆる、TEXT RPGというタイプのゲームです。
『N88互換BASIC for Windows95』というエミュレータで動きます。
本格的なゲームを制作したのはこれが初めてなので、色々とおかしいところもあるかと思いますが、遊んでいただけると嬉しいです。
敵が強すぎる時は、2830行~2880行を調節してください。
いいなと思ったら応援しよう!
