FC2ブログ

スポンサードリンク

【HSP3dish】「セーブ機能の検討」と「画面描写について」

  09, 2018 19:30
こちらで作成しているプログラミングの解説です。
【HSP3dish】放置すごろく 作成
http://no1027.blog.fc2.com/blog-entry-928.html

スポンサードリンク

セーブ機能の検討


ファイルを保存したり読み込む関係の関数(bsave/bload)を使ってみましたが、Windowsでのデバッグは大丈夫ですが、ブラウザにおくと保存されません。

おそらく、ブラウザの初期フォルダに書き込み権限が無いのかと思います。

それじゃ、書き込むフォルダを指定すると言う話になりますが、パソコンやAndoroid、iPhoneそれぞれでフォルダ構造が違うのでこんなもん対応しきれません。

ということでボツ。


引き続いて、パスワード入力で対応を考えました。

しかし、入力ボックス系のコマンド(inputやmesbox)がHSP3Dishに対応してません。

ということでボツ。

この作品で「前回の続きからやりたい」なんてニーズは皆無かと思いますので、他の作品を作った時に再度検討します。

画面描写について


今回は画面の描写で使っているサブルーチンを説明します。

~~~~
*gdraw
   
        redraw 0
        color 0,0,0:boxf

            repeat 10
            color 55,55,55
            if cnt=0 :color 255,55,55
            if cnt=9 :color 55,55,255
            boxf 8,8+cnt*44,48,48+cnt*44
            loop
   
        color 255,255,255:font "MS ゴシック",33
        pos 11,11+y9*44:mes "我"

        color 255,255,255:font "MS ゴシック",22
        pos 58,8 :mes "サイコロ→  "+di+" "
        mes " "
        mes "振った回数="+dn
        mes "上がった回数="+gl
        mes " "
        mes "目の分布"
            repeat 6
            mes " "+(cnt+1)+": "+dd(cnt)+"回 "
            loop

        redraw 1

    return
~~~~

この*gdrawというサブルーチンで制御しています。

サブルーチンというのは何回も何回も使うプログラムを1箇所に用意しておくものです。

描写が必要な箇所で

gosub *gdraw

と記述すると、一旦そこへ飛びます。

そして、プログラムを順番にこなして、最後のreturnでそこへ戻ります。

例えば、プログラム全体の雰囲気が

A
B
C
B
D
B
E

とあったとします。

Bが重複でテキストが多くてややこしいと感じた場合、

A
gosub B
C
gosub B
D
gosub B
E
stop

B

と記述すれば同じことになります。

あんまり変わらないと感じるかも知れませんが、Bは実際には数十行のプログラム、そしてgosub Bは一行という認識を持っていただくと、テキスト量が減少することをご理解いただけるかと。

また、Bにプログラム修正が必要なとき、まとめていないと3箇所全てを修正しないといけませんが、まとめておくと1箇所ですみ 手間も省けます。


さて、上から順番にプログラムをざっくり解説します。


~~~~
        redraw 0
        color 0,0,0:boxf
~~~~

前回のおさらいです。
描写開始宣言&画面黒塗りです。

~~~~
            repeat 10
            color 55,55,55
            if cnt=0 :color 255,55,55
            if cnt=9 :color 55,55,255
            boxf 8,8+cnt*44,48,48+cnt*44
            loop
~~~~
ここでマス目を書いてます。
repeat 10~loop でプログラムを10回繰り返します。
その際にcntという関数が動きます。
最初はcnt=0、次はcnt=1と増加していき、10回目はcnt=9で終了です。

色を55,55,55(グレー)に指定しています。
しかし、その後、cnt=0なら255,55,55へ変更(やや明るい赤)。
cnt=9ならやや明るい青に変更しています。

その後、boxfで正方形を指定。

cntを使うことで下方向へずれるように描写しています。

これで一番上が赤、一番下が青、残りがグレーの正方形が10個生成されます。

~~~~   
        color 255,255,255:font "MS ゴシック",33
        pos 11,11+y9*44:mes "我"
~~~~
我という文字(コマ)をy9という変数依存で上下に動くように設定しています。

~~~~
        color 255,255,255:font "MS ゴシック",22
        pos 58,8 :mes "サイコロ→  "+di+" "
        mes " "
        mes "振った回数="+dn
        mes "上がった回数="+gl
        mes " "
        mes "目の分布"
            repeat 6
            mes " "+(cnt+1)+": "+dd(cnt)+"回 "
            loop

        redraw 1

    return
~~~~
白字で情報を記述しています。
diがサイコロの目、dnが振った回数、glが上がった回数。

ddというのが配列変数で各目の振った回数になっています。

配列変数というのは複数の目を持つ変数で

今回は、
dd=(dd(1),dd(2),dd(3),dd(4),dd(5),dd(6))

というふうに6つの値を持つように設定しています。

左から順に
1の目が出た回数、2の目が出た回数・・・6の目が出た回数

を格納しています。

これを先程のrepeat~loopで各値を出力するようにしています。
先程の復習と思って少し考えてみて下さい。


ご覧いただきありがとうございました。



関連記事

スポンサードリンク

HSP3dish ゲーム

0 Comments

Post a comment


スポンサードリンク

What's New