HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0902
popif文が作動しません4解決


pop

リンク

2013/9/2(Mon) 10:27:50|NO.56819

ラベル「door1」からラベル「door2」へジャンプするif文が作動しないので、
助言とアドバイスが欲しいです。

初心者なので、もっと簡単にする方法などが分からなく、
長いソースかもしれませんがお願いします。

以下はソースです。

#define win_end getkey g_end, 27:if(g_end = 1){end}//エスケープキーでゲーム終了

buffer 1
picload "扉グラフィック.bmp"

screen 0,600,500,0//横600:縦500

/*-------------------------------------------------*/
*main//メインループ
redraw 0

gosub *sousa

gosub *opening
gosub *door1
gosub *door2

win_end

redraw 1
await 16

goto *main
/*---------------------------------------------*/
*sousa//マウスのドラッグ、クリック認識
getkey Lmouse,1

return
/*-----------------------------*/
*opening
redraw 0

color 255,255,255//色設定
boxf 0,0,600,500//壁の色塗り

pos 225,70//カレント
gcopy 1,0,0,160,320//扉の画像表示

color 50,50,50//色設定
boxf 0,390,600,500//床の色塗り

color 0,0,0//カレント
boxf 0,390,600,392//床との堺目の線


pos 10,10
font "MS ゴシック",50
mes " 解く YES or NO 退く"//画面上段黒メッセージ

objsize 100,20
pos 60,200
button gosub "YES",*door1//ゲーム分岐

redraw 1
await 16

stop
return
/*----------------------------*/
*door1
clrobj//ボタン削除
redraw 0

color 255,255,255//色設定
boxf 0,0,600,500//壁の色塗り

pos 225,70//カレント
gcopy 1,0,0,160,320//扉の画像表示

color 50,50,50//色設定
boxf 0,390,600,500//床の色塗り

color 0,0,0//色設定
boxf 0,390,600,392//床との堺目の線

pos 0,430
color 255,0,0
mes "1"//画面左下に赤色で1を表示

if Lmouse=1 & 225<=mousex & mousex<=385 & 70<=mousey & mousey<=390{//もし扉の上でクリックしたら
gosub *door2//次へ
}

redraw 1

stop
return
/*--------------------------------*/
*door2
    clrobj
redraw 0

color 255,255,255//色設定
boxf 0,0,600,500//壁の色塗り

pos 225,70//カレント
gcopy 1,0,0,160,320//扉の画像表示

color 50,50,50//色設定
boxf 0,390,600,500//床の色塗り

color 0,0,0//色設定
boxf 0,390,600,392//床との堺目の線

pos 0,430
color 255,0,0
mes "2"

redraw 1

stop
return
/*-----------------------------------*/



この記事に返信する


KA

リンク

2013/9/2(Mon) 11:12:31|NO.56822

「どういう動作をするのか」ぐらいは説明願います。



pop

リンク

2013/9/2(Mon) 11:24:29|NO.56823

すいません。こういう場は不慣れなもので。

やりたいことは、
「opening」で「YESボタン」を押してもらい「door1」に移動する。
そして「door1」の画面で、中央のドアの絵を押してもらい、「door2」に移動する。
ということです。

記事を書いたあとに画像ファイルを載せるつもりだったのですが、
未だに載せ方が分かりません。すいません。



あり

リンク

2013/9/2(Mon) 14:37:19|NO.56825

質問を見た限りではまだHSPプログラムの約束事が理解出来ていないようなので
マニュアルやサンプル等を見て、プログラムの流れと組み方を勉強していって下さい。

以下は、質問のスクリプトをとりあえず動作できる様にしたものですが
我流の書式なのでそのまま使うのではなく、HSPの処理の参考程度として見てください。
(※本来の目的としている処理とは違うかもしれませんが
メインループに倣ってループ型の処理にしています。)

st_label = *opening, *door1, *door2, *ending ; ラベル型配列 st_no = 0 ; ストーリー進行度(上のラベル型配列変数に対応) buffer 1 color 255 : boxf;picload "扉グラフィック.bmp" screen 0,600,500,0//横600:縦500 bt_flg = 0 ; ボタンの表示フラグ /*-------------------------------------------------*/ *main//メインループ redraw 0 gosub *sousa gosub st_label(st_no) ; st_noに対応したラベルに移動 title "" + game_st ; ステータス表示 redraw 1 await 33 goto *main /*---------------------------------------------*/ *sousa//マウスのドラッグ、クリック認識 stick key if key & 128 : end ; ESCで終了 return /*-----------------------------*/ *opening game_st = "オープニング" color 255,255,255//色設定 boxf 0,0,600,500//壁の色塗り pos 225,70//カレント gcopy 1,0,0,160,320//扉の画像表示 color 50,50,50//色設定 boxf 0,390,600,500//床の色塗り color 0,0,0//カレント boxf 0,390,600,392//床との堺目の線 pos 10,10 font "MS ゴシック",50 mes " 解く YES or NO 退く"//画面上段黒メッセージ if bt_flg = 0 { ; ボタン表示を重複させない objsize 100,20 pos 60,200 button gosub "YES",*door1//ゲーム分岐 bt_ID = stat : bt_flg = bt_ID ; ボタンIDをフラグに使用 } return /*----------------------------*/ *door1 game_st = "ドア1" if st_no ! 1 : clrobj ; 最初だけボタンの処理でくるのでここで処理 st_no = 1 ; この数値で処理するシーンを管理する if (key = 256) & (mousex >= 225) & (mousex <= 385) & (mousey >= 70) & (mousey <= 390) {//もし扉の上でクリックしたら st_no = 2 //st_noを2にして戻ると、次から*door2に飛ぶ return } color 255,255,255//色設定 boxf 0,0,600,500//壁の色塗り pos 225,70//カレント gcopy 1,0,0,160,320//扉の画像表示 color 50,50,50//色設定 boxf 0,390,600,500//床の色塗り color 0,0,0//色設定 boxf 0,390,600,392//床との堺目の線 pos 0,430 color 255,0,0 mes "1"//画面左下に赤色で1を表示 return /*--------------------------------*/ *door2 game_st = "ドア2" st_no = 2 if (key = 256) & (mousex >= 225) & (mousex <= 385) & (mousey >= 70) & (mousey <= 390) {//もし扉の上でクリックしたら st_no = 3 ; st_noを3にする return//次へ } color 255,255,255//色設定 boxf 0,0,600,500//壁の色塗り pos 225,70//カレント gcopy 1,0,0,160,320//扉の画像表示 color 50,50,50//色設定 boxf 0,390,600,500//床の色塗り color 0,0,0//色設定 boxf 0,390,600,392//床との堺目の線 pos 0,430 color 255,0,0 mes "2" return /*-----------------------------------*/ *ending dialog "ゲームを終わります",0 ,"ENDING" end



pop

リンク

2013/9/2(Mon) 15:49:35|NO.56826

ありさん、返信ありがとうございます。

想像通りの「door2」の表示だったので感動しました。

まだスクリプトの解読ができてないのですが、
頑張って面白いゲームを作ってみようと思います。

改めて、ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.