よなぷーの無駄喋り

2023年11月

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

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


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


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


▲◆■ 入力方法 ■◆▲
 全部で5153バイトあります。普通に本体で入力するか、パソコン経由でプログラムを送信してください。
 私の環境は、
・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 シリーズ第一作を完成させました。ここにいたるまで長かった……。迷宮移動は遅いし、移植作品ではありますが、そこらへんはご勘弁を。
 それにしても、グラフィック文字やカタカナが使えると、普通なゲームもより良く映えますね。次は何を作ろうかな。
 まあ楽しんでください。あ、そうそう、FX-840P や FX-841P で動作するかどうかは不明です。

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

WILD TIMES 2

WILD TIMES 2-1_3

WILD TIMES 2-2_3

WILD TIMES 2-3_3

↑このページのトップヘ