よなぷーの無駄喋り

2025年05月

========================================================
【  ソフト名   】 Moonlit_Castle
【 バージョン  】 version 1.1
【 ソフト種別  】 フリーウェア/RPG
【  制作者名   】 よなぷー
【  ファイル名 】 Moonlit_Castle_ver11.txt
【   対応PC   】 FX-860P シリーズ
【   連絡先   】 stfaastf@yahoo.co.jp
【    転載    】 下記参照
【 最終更新   】 2025年 5月17日
========================================================

▲◆■ 概要 ■◆▲
 PB-100 で作った拙作『COLLAPSE ver.2』を FX-860P シリーズに移植してみました。迷宮探検型のロールプレイングゲームです。


▲◆■ 著作権・免責事項 ■◆▲
 「Moonlit_Castle」はフリーソフトです。このソフト(プログラム及び関連ドキュメントを含める)の著作権は、作者であるよなぷーに帰属します。
 ソフト、及び付属テキストは、著作権法および著作権に関する条約をはじめ、その他の無体財産権に関する法律ならびに条約によって保護されています。
 作者に認められている場合を除き、このソフトを第三者に有償で提供することはこれらに違反することになりますのでご注意ください。
 ソフトを使用したことにより生じたいかなる障害、損害において、作者は一切責任を負わないものとします。各自の責任において使用してください。
 また、作者はバグが発見された場合においても、その修正、バージョンアップの義務を負わないものとします。


▲◆■ このソフトの配布、転載に関して ■◆▲
 このプログラム・関連ドキュメントの利益を伴わない再配布、または転載等は基本的に自由とします。雑誌付録への収録なども構いません。その際作者への連絡を必要としません。
 ※一切のデータはオリジナルの場合に限ります。


▲◆■ 入力方法 ■◆▲
 全部で6976バイトあります。普通に本体で入力するか、パソコン経由でプログラムを送信してください。
 私の環境は、
・Windows 7 ノートパソコン
・BOOTH の『ac-shop』さんで購入した『CASIO FX-860Pvc 用 USB シリアル変換モジュール(FA-6 相当 IF 版)』
・USB 2.0 ケーブル【A】-【miniB】
・Windows ドライバーに WCH 製の CH340C
・通信ソフトに『PB-1000 Data Communicator32』(『JUN AMANO'S HOMEPAGE』さんより入手)
といった感じです。

●私の送信方法
 まずドライバーと通信ソフトをダウンロードして、あらかじめパソコンに入れておきます。
 次にポケコンへ USB シリアル変換モジュールを接続し、USB ケーブルで繋いで、パソコンの USB 端子にセットします。パソコンにドライバーが入っていれば、初回はそれのインストールが行なわれます。
 続いてポケコンを[MODE][1]で BASIC モードにします。そのうえで通信ソフトを立ち上げ、そこに書かれている『PB-1000 Settings:』の後の文字列をポケコンに入力します。たとえば、そのままの設定なら『LOAD"COM0:6,E,8,1,N,N,N,B,N"』となります。
 最後にポケコンのその命令を実行してから、『PB-1000 Data Communicator32』で『Send』を押してテキストファイルを選べば、パソコンからポケコンへプログラムが送信されます。なお、リストの最後は必ず空白行を付けておいてください。
 逆にポケコンからパソコンへプログラムを送りたい(セーブしたい)なら、『Receive』を押してパソコン側の準備を整えてから、ポケコンで『SAVE"COM0:6,E,8,1,N,N,N,B,N"』を実行します。
 エラーが出てしまう場合は、『Parity』を『None』にしたり『Odd』にしたりしてみてください(私の場合はそれでうまくいきました)。そのときは『SAVE』や『LOAD』の文字列の『E』も変化しますのでご注意を。


▲◆■ 遊び方 ■◆▲

 CAL モードで[SHIFT][(入力したプログラムエリア)]と入力するとゲーム開始です。初めて遊ぶ場合は[9]を、続きを遊ぶ場合はそのままで[EXE]してください。

 画面左上に3マスの迷宮画像、プレイヤーの横座標.縦座標、向いている方向が表示されます。[Q][W]で左右を、[A]で背後を向き、[/]で一歩前進します。枕(Pillow)があれば、[*]でキャンプもできます(体力が若干回復)。

 その階のスタート地点には『△』があり、『NX』で示される経験値を貯めていればレベルが上がります(体力の最大値が増加)。『○』は枕保管所で、キャンプに必要な枕が9までチャージされます。『↑』は次の階へのはしごであり、ボスである天使との戦闘となります。倒せば次の階に進みます。

 ちなみに迷宮は各階9×9のブロックで構成されており、全15フロアとなっております。

 前進すると、運がよければ剣を発見します。剣の威力が表示されるので、装備する(GET)か捨てる(Throw)か、[Q][W]で選択し[/]で決定してください。剣の耐久度(EN)は8~17の範囲となります。

 また、敵に遭遇することもあります。戦う(FIGHT)か研磨剤を使う(Abrasive)か、それとも逃げる(RUN)か、[Q][W]で選択し[/]で決定してください。ちなみに研磨剤は持っていなければ当然使えません。また、逃走は失敗することもあります。
 戦うを選択した場合、敵を攻撃(HIT)しますが、そのたびに剣の耐久度は1減ってしまいます。これが0になると壊れてダメージを与えられなくなります。研磨剤を使うと耐久度は10に回復します。
 敵の体力を0にすると経験値が手に入り、運がよければ研磨剤も入手できます(1個しか持ち歩けません)。

 以上のどの場面でも、[6]でプレイヤーの状態が表示されます。順に階数、レベル、体力、経験値、剣の威力と耐久度、研磨剤の有無、枕の数、となります。

 15階の堕天使を倒すか、体力が0になるとゲームオーバーです。前者の場合はエンディングとなり、後者の場合は経験値を半分にされてスタート地点に戻されます。


▲◆■ 変数表 ■◆▲
A  汎用                N  汎用
B  キー入力         O  ―――
C  データ文字列  P  レベル
D  スタート地点  Q  体力
E  汎用                R  剣の威力
F  階段位置         S  剣の耐久度
G  向き                T  経験値
H  階                   U  敵の攻撃力
I  枕の数            V  汎用
J  汎用                W  研磨剤の有無
K  迷宮用            X  汎用
L  敵の種類         Y  汎用
M  敵の体力         Z  現在地


▲◆■ 開発後記 ■◆▲
 ついに FX-860P シリーズ第一作を完成させました。ここにいたるまで長かった……。迷宮移動は遅いし、移植作品ではありますが、そこらへんはご勘弁を。
 それにしても、グラフィック文字やカタカナが使えると、普通なゲームもより良く映えますね。次は何を作ろうかな。
 まあ楽しんでください。

 Version 1.1……迷宮移動の高速化を行ないました。

10 '=MOONLIT CASTLE= VER.1.1 BY YONAPUU,2023-2025
20 GOTO 1130
30 'メイロ コウチク
40 Y=0:IF X<1 THEN 90
50 E=FRAC(1E6*LN(H*X)):IF E>.7 THEN Y=1:IF E>.95 THEN Y=2
60 IF X=D THEN Y=3
70 IF X=F THEN Y=4
80 IF X>=11 AND X<=99 AND FRAC(X/10)<>0 THEN 100
90 Y=1
100 AA=Y:RETURN
110 'キ-ニュウリョク
120 B$=INKEY$:IF B$="Q" THEN B=0:RETURN
130 IF B$="W" THEN B=1:RETURN
140 IF B$="/" THEN B=8:RETURN
150 IF B$="*" THEN B=2:RETURN
160 IF B$="A" THEN B=4:RETURN
170 IF B$<>"6" THEN 120
180 LOCATE 9,0:PRINT H;"FL:LV";P:LOCATE 9,0:PRINT Q;"HP:EX";T
190 LOCATE 9,0:PRINT R;"SW:EN";S;" ":LOCATE 9,0:PRINT W;"ABR:P";I;" ";
200 B=3:GOTO 1080
210 'メイロ ヒョウジ
220 CLS
230 IF P3>0 THEN PRINT MID$(C$,P3+4,1);:GOTO 250
240 IF P4>0 THEN PRINT MID$(C$,P4+8,1);
250 PRINT TAB(1);:IF P1>0 THEN PRINT MID$(C$,P1+8,1);:GOTO 270
260 IF P2>0 THEN PRINT CHR$(165);
270 PRINT TAB(2);:IF P5>0 THEN PRINT MID$(C$,P5+12,1);:GOTO 290
280 IF P6>0 THEN PRINT MID$(C$,P6+8,1);
290 PRINT TAB(3);Z/10;MID$(C$,G,1);
300 GOSUB 120
310 IF B<>1 THEN 390
320 'ミギヲ ムク
330 G=G-1:IF G<1 THEN G=4
340 P3=P1:P4=P6:P1=P5
350 IF G=1 THEN X=Z+10:GOSUB 40:P5=AA:X=Z+9:GOSUB 40:P6=AA:IF P1<>1 THEN X=Z-2:GOSUB 40:P2=AA
360 IF G=2 THEN X=Z-1:GOSUB 40:P5=AA:X=Z-11:GOSUB 40:P6=AA:IF P1<>1 THEN X=Z-20:GOSUB 40:P2=AA
370 IF G=3 THEN X=Z-10:GOSUB 40:P5=AA:X=Z-9:GOSUB 40:P6=AA:IF P1<>1 THEN X=Z+2:GOSUB 40:P2=AA
380 IF G=4 THEN X=Z+1:GOSUB 40:P5=AA:X=Z+11:GOSUB 40:P6=AA:IF P1<>1 THEN X=Z+20:GOSUB 40:P2=AA
390 IF B<>0 THEN 470
400 'ヒダリヲ ムク
410 G=G+1:IF G>4 THEN G=1
420 P5=P1:P6=P4:P1=P3
430 IF G=1 THEN X=Z-10:GOSUB 40:P3=AA:X=Z-11:GOSUB 40:P4=AA:IF P1<>1 THEN X=Z-2:GOSUB 40:P2=AA
440 IF G=2 THEN X=Z+1:GOSUB 40:P3=AA:X=Z-9:GOSUB 40:P4=AA:IF P1<>1 THEN X=Z-20:GOSUB 40:P2=AA
450 IF G=3 THEN X=Z+10:GOSUB 40:P3=AA:X=Z+11:GOSUB 40:P4=AA:IF P1<>1 THEN X=Z+2:GOSUB 40:P2=AA
460 IF G=4 THEN X=Z-1:GOSUB 40:P3=AA:X=Z+9:GOSUB 40:P4=AA:IF P1<>1 THEN X=Z+20:GOSUB 40:P2=AA
470 IF B<>8 OR P1=1 THEN 560
480 'ゼンシン
490 Z=Z-(G=4)*10-(G=3)+(G=2)*10+(G=1)
500 C=P1+1:P3=P4:P1=P2:P5=P6 
510 IF G=1 THEN X=Z-11:GOSUB 40:P4=AA:X=Z+9:GOSUB 40:P6=AA:IF P1<>1 THEN X=Z-2:GOSUB 40:P2=AA
520 IF G=2 THEN X=Z-9:GOSUB 40:P4=AA:X=Z-11:GOSUB 40:P6=AA:IF P1<>1 THEN X=Z-20:GOSUB 40:P2=AA
530 IF G=3 THEN X=Z+11:GOSUB 40:P4=AA:X=Z-9:GOSUB 40:P6=AA:IF P1<>1 THEN X=Z+2:GOSUB 40:P2=AA
540 IF G=4 THEN X=Z+9:GOSUB 40:P4=AA:X=Z+11:GOSUB 40:P6=AA:IF P1<>1 THEN X=Z+20:GOSUB 40:P2=AA
550 ON C GOTO 620,220,660,680,710
560 IF B=4 THEN G=G-2:IF G<1 THEN G=4+G
570 IF B=4 THEN 1380
580 IF B=2 AND I>0 THEN 1050
590 IF B=8 AND P1=1 THEN 300
600 GOTO 220
610 'デクワス モノ
620 IF RAN#<.3 THEN GOSUB 730
630 IF RAN#>.3 THEN 220
640 L=H+INT(RAN#*2:M=L^2+5:U=3*L+2:PRINT "ENEMY!";:GOSUB 800:GOTO 220
650 'マクラ ゲット
660 PRINT "GET PLW";:I=9:GOSUB 1080:GOTO 220
670 'レベル アップ?
680 E=(P+2)^2:PRINT "NX";E;:GOSUB 1080:IF T<E THEN 220
690 PRINT "LV UP!";:P=P+1:T=0:GOSUB 1080:GOTO 220
700 'テンシ シュツゲン
710 PRINT "ANGEL!";:M=H^2*6+20:U=8+INT(H^2/3:L=1:Y=8:GOSUB 800:GOTO 220
720 'ツルギ ゲット
730 E=INT(RAN#*H^2+3:J=1:PRINT "FIND SW";
740 LOCATE 0,1:PRINT E;"SW:";MID$(C$,17+3*J,3);
750 GOSUB 120:IF B=0 THEN J=0 ELSE IF B=1 THEN J=1
760 IF B<>8 THEN 740
770 IF J=0 THEN PRINT ":EQUIP!";:R=E:S=INT(10*RAN#+8)
780 GOSUB 1080:RETURN
790 'テキ スガタヲ ロ-ド
800 N=0:RESTORE INT((L-1)/2)*10+1060:READ N$:IF FRAC(L/2)=0 THEN READ N$
810 DEFCHR$(252)=N$:IF Y=8 THEN DEFCHR$(252)="70183E1870"
820 LOCATE 1,0:IF Y<8 OR H<15 THEN PRINT CHR$(252);:GOTO 870
830 RESTORE 1310:LOCATE 0,0:FOR X=0 TO 2:READ N$:DEFCHR$(252+X)=N$:PRINT CHR$(252+X);:NEXT:M=1500
840 LOCATE 9,0:PRINT "バカメ,イマサラ ニンゲンゴトキガ ナンノヨウダ.":GOSUB 1100:PRINT "ワタシノ マネイタ メツボウマデ アト スコシ...":GOSUB 1100
850 PRINT "ヒマツブシカ ウサハラシカ?":GOSUB 1100:PRINT "イイダロウ,ウケテタッテヤル!":GOSUB 1100
860 'セントウメイン
870 LOCATE 0,1:PRINT MID$(C$,23+N*5,5);:LOCATE 9,0:GOSUB 120
880 IF B=0 THEN N=N-SGN N
890 IF B=1 THEN N=N+SGN(2-N
900 IF B<>8 THEN 870
910 X=SGN S*(R+INT(RAN#*R)):IF N+RAN#>2.2 THEN GOSUB 1080:PRINT "RUN!";:GOTO 1080
920 S=S-SGN S:IF N*W=1 THEN PRINT "USE ABR";:W=0:N=0:S=10:GOTO 870
930 PRINT "HIT";X;:IF S=0 THEN PRINT ":SW BREAK";:GOSUB 1080
940 M=M-X:X=U-INT(RAN#*U:IF M<1 THEN 970
950 PRINT "DAM!";X;:Q=Q-X:GOSUB 1080:IF Q>0 THEN 870
960 Z=D:Q=48:T=INT(T/2):LOCATE 0,1:PRINT "LOSE";:GOSUB 1080:END
970 LOCATE 0,1:PRINT "WIN!!";:T=T+U:IF RAN#>.8 THEN PRINT ":ABR!";:W=1
980 GOSUB 1080:IF Y<>8 THEN RETURN
990 H=H+1:IF H<16 THEN D=F:F=INT(11+89*FRAC(TAN H*1E7:RETURN
1000 'オシマイ
1010 H=15:STOP:CLS:RESTORE 1340:FOR B=1 TO 6:READ N$:E=LEN(N$):FOR A=1 TO E
1020 J$=MID$(N$,A,1):IF J$="A" THEN J$=CHR$(224) ELSE IF J$="B" THEN J$=CHR$(225)
1030 J$=CHR$(ASC(J$)-3):PRINT J$;:NEXT:STOP:CLS:NEXT:END
1040 'キャンプ
1050 I=I-1:E=48+INT(P^2/3):Q=Q+INT(E/5):IF Q>E THEN Q=E
1060 PRINT "CAMP";Q;:GOSUB 1080:GOTO 630
1070 'ジカンカセギ
1080 FOR V=0 TO 200:NEXT
1090 'ブンショウ クリア
1100 LOCATE 9,0:PRINT "                       ";
1110 LOCATE 0,1:PRINT "                                ";:LOCATE 9,0:RETURN
1120 'ゲ-ム カイシ
1130 C=0:INPUT "9=サイショカラ,ホカ=ツヅキカラ",N$:IF N$<>"9" THEN 1380
1140 RESTORE 1320:FOR X=0 TO 3:READ C$:DEFCHR$(252+X)=C$:NEXT:CLS:PRINT CHR$(252);CHR$(135);CHR$(135);
1150 PRINT TAB(0);CHR$(253);CHR$(254);CHR$(255);" MOONLIT CASTLE"
1160 PRINT "カミト タタカイ ヤブレタ ダテンシハ","サイゴノ テイコウト シテ,チキュウニ インセキノ アメヲ フラセルコトニシタ."
1170 PRINT "カミノ ツクリシ ニンゲンタチヲ ミチヅレニ スルタメダ.","サイハ ナゲラレ,モハヤ チキュウメツボウヲ トメル スベハ ナイ."
1180 PRINT "ホロビユク セカイデ,アナタハ ゲンキョウノ ダテンシニ フクシュウシヨウトスル.","ソレガ イマヤ マッタク オロカナコウイデ アルト,ムエキデ ムカチナタタカイデ アルト シリナガラ..."
1190 CLEAR:G=4:H=1:Z=55:C$=CHR$(227)+CHR$(228)+CHR$(229)+CHR$(230):DEFCHR$(255)="00FEFEFE00"
1200 C$=C$+"])>I"+CHR$(236)+CHR$(237)+CHR$(238)+CHR$(227)+"[(<I"
1210 C$=C$+"GETTRWFIGHTABR  RUN  ":R=3:S=10:Z=99:D=Z:Q=48:P=1:F=15:GOTO 1450
1220 'テキノ スガタ デ-タ
1230 DATA060E0E0A06,7820702078
1240 DATAF0307E2C00,20B678B620
1250 DATAE214381462,0042720E02
1260 DATAAC703070AC,08107E3C30
1270 DATA18F27CF218,6076F87640
1280 DATA74DAF6DA74,70F80A1C0A
1290 DATA04CA32C20C,087C7E10F0
1300 DATA303AFEFC3A,167EBE7E16
1310 DATA00183C7060,D0207E20D0,60703C1800
1320 DATAFEF6F6CEFE,FEFEDE90DE,E0AEA8AEA0,A0B0DE90DE
1330 'エンディング メッセ-ジ
1340 DATAエネテヘ#テBニAソゥ#テクソテ1,ソケソ/ユナムBカヘ#ヌユレンネオ1
1350 DATAゾヘ#ムカケオソニオサ1,セオスBノ#エネテヘ#オフイテ1
1360 DATAテBンヨケB#ソエ゚チフ#カトノ#ソヒメタルカノ111ヌ1,ILQ1
1370 'メイロ コウチク
1380 ON G GOTO 1390,1410,1430,1450
1390 X=Z-1:GOSUB 40:P1=AA:X=Z-2:GOSUB 40:P2=AA:X=Z-10:GOSUB 40:P3=AA
1400 X=Z-11:GOSUB 40:P4=AA:X=Z+10:GOSUB 40:P5=AA:X=Z+9:GOSUB 40:P6=AA:GOTO 220
1410 X=Z-10:GOSUB 40:P1=AA:X=Z-20:GOSUB 40:P2=AA:X=Z +1:GOSUB 40:P3=AA
1420 X=Z-9:GOSUB 40:P4=AA:X=Z-1:GOSUB 40:P5=AA:X=Z-11:GOSUB 40:P6=AA:GOTO 220
1430 X=Z+1:GOSUB 40:P1=AA:X=Z+2:GOSUB 40:P2=AA:X=Z+10:GOSUB 40:P3=AA
1440 X=Z+11:GOSUB 40:P4=AA:X=Z-10:GOSUB 40:P5=AA:X=Z-9:GOSUB 40:P6=AA:GOTO 220
1450 X=Z+10:GOSUB 40:P1=AA:X=Z+20:GOSUB 40:P2=AA:X=Z-1:GOSUB 40:P3=AA
1460 X=Z+9:GOSUB 40:P4=AA:X=Z+1:GOSUB 40:P5=AA:X=Z+11:GOSUB 40:P6=AA:GOTO 220

↑このページのトップヘ