すぅぃった その3
シナリオにHSPプログラムを混ぜる
先のサンプルプログラムにおいては
ボタンを押す事によって
ボタンの数と中身それと表示されるテキストを変更しましたが
それだけではせっかくHSPを用いている意味がない
というわけで先ほど説明した
サンプルプログラムにプログラミング要素を加えてみます
ボタンを押す事によってボタンとテキストによって構成される場面を描画するわけですが
ボタンとテキストだけで構成されるプログラミングでは
まだノベルゲームですらできません
(ノベルゲームでもフラグとかあるだろうし)
一度にたくさんの事をやっても講座の意図がよくわからなくなってしまうであろうから
フラグによる条件分岐は次の講座で扱うとして
今講座においてはボタンとテキストのみで構成されるプログラムに
普通の意味におけるプログラムを埋め込んでみたいと思います
// シナリオにHSPプログラムを混ぜる
// HSP2.61HSP3.0動作確認
// 変数X
x=0
// これらの変数の中身をobjprmに代入する
btstr_1=""
btstr_2=""
// ボタンが押された時にこれらの変数をselected_btnextに代入して
// メインルーチンにジャンプする
btnext_1=""
btnext_2=""
// ボタンによって選択される選択肢のID
selected_btnext="a"
// ここからメインルーチン
*bt_selected_gomain
switch selected_btnext
// こんなかんじならボタン内の文字の変更と文章の記述
//case "xxxx"
// btstr_1="NEXT"
// btnext_1="xxxxx"
// gosub *one_bt
// pos 150,0
// mes {"文章叙述"}
// swbreak
// こんなかんじなら変数の操作と強制条件分岐
// ここではHPの回復を行っていますね
//case "xxx1"
// player_hp=player_mhp
// selected_btnext="xxx1x"
// goto *bt_selected_gomain
case "a"
btstr_1="X足す1"
btnext_1="aa1"
btstr_2="X引く1"
btnext_2="ab1"
gosub *two_bt
pos 150,0
mes "ボタンを押してください"
swbreak
case "aa1"
x+=1
selected_btnext="ax1a"
goto *bt_selected_gomain
case "ab1"
x-=1
selected_btnext="ax1a"
goto *bt_selected_gomain
case "ax1a"
btstr_1="NEXT"
btnext_1="a"
gosub *one_bt
pos 150,0
mes "Xの値は"+x+"です"
swbreak
swend
stop
// ボタンを一つ表示してbtstrの中身をボタンに代入する
*one_bt
cls 0
pos 0,0
objsize 120,24
button btstr_1,*selected1
return
// ボタンを二つ表示してbtstrの中身をボタンに代入する
*two_bt
cls 0
pos 0,0
objsize 120,24
button btstr_1,*selected1
button btstr_2,*selected2
return
// ID0のボタンが押された時にselected_btnextにbtnext_1の中身を代入して
// メインルーチンにジャンプ
*selected1
selected_btnext=btnext_1
goto *bt_selected_gomain
// ID1のボタンが押された時にselected_btnextにbtnext_2の中身を代入して
// メインルーチンにジャンプ
*selected2
selected_btnext=btnext_2
goto *bt_selected_gomain
// ここまでサンプルプログラム
|
このサンプルプログラムと先の講座において提示した
サンプルプログラムの違いを説明します
case "aa1" x+=1 selected_btnext="ax1a" goto *bt_selected_gomain |
理解が難しい部分はここのくだりですね
まずselected_btnext="ax1a"
goto *bt_selected_gomainの記述は
*selected1
selected_btnext=btnext_1
goto *bt_selected_gomain |
とあるようにボタンを押すと
selected_btnextにbtnext_1を代入してジャンプしていたのですが
selected_btnextに直接"ax1a"を代入してジャンプしているのです
あとはx+=1と記述している部分に
bsaveだろうがbloadだろうが
足し算だろうが掛け算だろうが割り算だろうが剰余求めようが
代入しようが何だろうが好き勝手コーディングしちゃって下さい
他の部分は前講座で用いたサンプルプログラムとほぼ同じです