プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

ドルアーガの塔 アドベンチャーシート for プチコン3号 (β版)

ドルアーガの塔 アドベンチャーシート for プチコン3号 (β版)

β(ベータ)版ですが、よければどうぞ。
マッピングはそのうち入れたいです。

プロジェクト名: EDDRU

公開キー: 5323VXKY → 最新版はhttp://d.hatena.ne.jp/eidaht/20201231/1338118772からどうぞ

公開日: 2016/03/12

バージョン: 0.05


EDKANJIPNLを取り込んで、入力フォームで日本語入力できるようにしました。
辞書にゲームブックドルアーガの塔で使いそうな単語を登録しておきました(何が入っているかは秘密)。
ダイスロールを付けました。
<今後の予定>
・アイコンのグラフィック
・(はるか未来) マッピング


★重要:スロット3へのオートセーブ
間違えて終了してプログラムの変数が消えてしまうと悲しいので、項目をどこか更新すると、数秒後にスロット3にオートセーブします。

EDDRUを起動時にスロット3にセーブデータがあればそれを読み込みます。したがって、プログラムを中断しても、再度STARTすると中断前の状態からはじまります。

起動時にスロット3にセーブデータがなければLOAD画面に移りファイルを指定します。キャンセルすると1巻の初期値が表示されます。

手動でファイルにセーブしたい時は、画面左下のファイルアイコンをタップしてセーブしてください。


★セーブ形式
テキストファイル(JSON形式)になっていますので、プログラム本体が

ドルアーガの塔 アドベンチャーシート for プチコン3号 (続続α版)

ドルアーガの塔 アドベンチャーシート for プチコン3号 (続続α版)

ほとんどが工事中のα(アルファ)版ですが、よければどうぞ。
ある程度のところまでは速攻でアップする予定です。

プロジェクト名: EDDRU

公開キー: C3ENQXDF → 最新版はhttp://d.hatena.ne.jp/eidaht/20201231/1338118772からどうぞ

公開日: 2016/03/11

バージョン: 0.04


EDKANJIPNLを取り込んで、入力フォームで日本語入力できるようにしました。
辞書にゲームブックドルアーガの塔で使いそうな単語を登録しておきました(何が入っているかは秘密)。
<今後の予定>
・サイコロ 1個または2個のサイコロ振り 履歴が残る
・アイコンのグラフィック
・(はるか未来) マッピング


★重要:スロット3へのオートセーブ
間違えて終了してプログラムの変数が消えてしまうと悲しいので、項目をどこか更新すると、数秒後にスロット3にオートセーブします。

EDDRUを起動時にスロット3にセーブデータがあればそれを読み込みます。したがって、プログラムを中断しても、再度STARTすると中断前の状態からはじまります。

起動時にスロット3にセーブデータがなければLOAD画面に移りファイルを指定します。キャンセルすると1巻の初期値が表示されます。

手動でファイルにセーブしたい時は、画面左下のファイルアイコンをタップしてセーブしてください。


★セーブ形式
テキストファイル(JSON形式)になっていますので、プログラム本体が

ドルアーガの塔 アドベンチャーシート for プチコン3号 (続α版)

ドルアーガの塔 アドベンチャーシート for プチコン3号 (α版)

ほとんどが工事中のα(アルファ)版ですが、よければどうぞ。
ある程度のところまでは速攻でアップする予定です。

プロジェクト名: EDDRU

公開キー: 233XD3QE → 最新版はhttp://d.hatena.ne.jp/eidaht/20201231/1338118772からどうぞ

公開日: 2016/03/10

バージョン: 0.03


入力フォームはできました。でもまだ日本語入力できないです。
<今後の予定>
・EDKANJIPNLで漢字入力できるようにする 辞書もカスタマイズ
・サイコロ 1個または2個のサイコロ振り 履歴が残る
・アイコンのグラフィック
・(はるか未来) マッピング


★重要:スロット3へのオートセーブ
間違えて終了してプログラムの変数が消えてしまうと悲しいので、項目をどこか更新すると、数秒後にスロット3にオートセーブします。

EDDRUを起動時にスロット3にセーブデータがあればそれを読み込みます。したがって、プログラムを中断しても、再度STARTすると中断前の状態からはじまります。

起動時にスロット3にセーブデータがなければLOAD画面に移りファイルを指定します。キャンセルすると1巻の初期値が表示されます。

手動でファイルにセーブしたい時は、画面左下のファイルアイコンをタップしてセーブしてください。


★セーブ形式
テキストファイル(JSON形式)になっていますので、プログラム本体が

SMILE BASIC 小技(4)

1フレーム単位で動くプログラムを作っているとほぼ縁がないが、キー入力が必要なプログラムでは、キーボードバッファを空にさせたい場合がある。
この時は次のようにする。

WHILE INKEY$()!="":WEND  'キーバッファを空にする


少しだけ応用して、キーボードバッファに入っている内容のうち、最後に押されたキーを調べる例:

?"キー入力待ち..."
WAIT 200
VAR K0$,K$
REPEAT
 K0$=K$
 K$=INKEY$()
UNTIL K$==""
?K0$

K0$には直前のK$の値が入っているので、K$が""になった時、最後にK0$に入っていたのが最後に押されたキーとなる。

SMILE BASIC 小技(3)

今回は、小技というよりも、よく使うコード。

様々な場面でボタンが押されるまで処理を止める、ということがある。
その時に使うのが次のコード。

'何かの処理...
BWAIT  'ボタンが押されるまで待つ
'次の処理
END

DEF BWAIT
'ボタンが押されていない→押される→離される、まで待つ
 WHILE BUTTON(0)!=0:WEND
 WHILE BUTTON(1)==0:VSYNC 1:WEND
 WHILE BUTTON(0)!=0:WEND
END

「何かの処理」の中でボタンを押している時に、そのままボタン押し待ちの処理に入ると、なぜかいきなり押されたことになることがある。
それを防ぐために、ボタンが押されていない→押される→離される、まで待つという処理をよく使う。
このBWAITの箇所は多くのプログラムで使うことになる。

サンプルプログラムでもMID$関数の代わりにA$[n]を使う記法は使われている

3号プログラミング覚え書き(3) 文字列編(http://d.hatena.ne.jp/eidaht/20150822/1440208747)で書いた、
「・特定の文字を取りたい時は、MID$だけでなく、A$[0]のような記法でも使える」
については、
「仕様上規定されていないので非推奨」と書いたけど、
サンプルプログラムでも使われているので大丈夫そう。
(例えば、SYS/STAFFROLLの中で使われいる。)

ドルアーガの塔 アドベンチャーシート for プチコン3号 (α版)

ドルアーガの塔 アドベンチャーシート for プチコン3号 (α版)

ほとんどが工事中のα(アルファ)版ですが、よければどうぞ。
ある程度のところまでは速攻でアップする予定です。

プロジェクト名: EDDRU

公開キー: 4D3J43K3 → 最新版はhttp://d.hatena.ne.jp/eidaht/20201231/1338118772からどうぞ

公開日: 2016/03/07

バージョン: 0.01


入力フォームができてないのでLINPUT文で代用してるので、文字入力はとっても使いづらい状態。とりあえず2,3日以内には入力フォームは作ります。
その後は、EDKANJIPNLを取り込んで漢字入力ができるようにしたいと思います。

★重要:スロット3へのオートセーブ
間違えて終了してプログラムの変数が消えてしまうと悲しいので、項目をどこか更新すると、数秒後にスロット3にオートセーブします。

EDDRUを起動時にスロット3にセーブデータがあればそれを読み込みます。したがって、プログラムを中断しても、再度STARTすると中断前の状態からはじまります。

起動時にスロット3にセーブデータがなければLOAD画面に移りファイルを指定します。キャンセルすると1巻の初期値が表示されます。

手動でファイルにセーブしたい時は、画面左下のファイルアイコンをタップしてセーブしてください。


★セーブ形式
テキストファイル(JSON形式)になっていますので、プログラム本体がバージョンアップしてもセーブ形式に互換性がなくなることはないようにしています。

SMILE BASIC 小技(2)

今回は結構実用的な技。

文字列を置き換えるSUBST$は、
SUBST$("文字列",開始位置,[文字数],"置換文字列")
として使う。

この時、置換文字列の長さ < 文字数 でも構わない。
これを使うと簡単に文字列の一部を削除できる。
具体的には、
SUBST$("文字列",削除開始位置,削除文字数,"")
とする。

例:

A$="ABCDEFG"
PRINT A$   'ABCDEFGと表示される
A$=SUBST$(A$,4,2,"")  '4の位置から2文字分を""で置き換える⇒削除
PRINT A$   'ABCDGと表示される

(追記)
OBONOさんのコメントを受けて試したところ、以下のようにもできることがわかりました。

A$="ABCDEFG"
PRINT A$   'ABCDEFGと表示される
A$=SUBST$(A$,4,0,"XYZ")  '4の位置から0文字分を"XYZ"で置き換える⇒挿入
PRINT A$   'ABCDXYZEFGと表示される

SMILE BASIC 小技(1)

覚え書きの文字列編でも書いた、文字変数に[]でアクセスすると任意の一文字を取り出せる技は、"でくくった文字列でも使える。

"文字列"[数字]

みたいに。
これを応用して、
"AB"[論理式]
のように書くと、
論理式が成立する時はBが、成立しない時はA
を取り出せる。

これを使ったカーソルの点滅の例:

VAR BLINK=0
WHILE 1
 LOCATE 0,CSRY
 PRINT "■_"[BLINK<30]  'BLINKが30未満の時は_を、30以上の時は■を表示
 BLINK=(BLINK+1) MOD 60
 VSYNC 1
WEND