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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1025
しろRPG作成、マップがループしてしまう24解決


しろ

リンク

2015/10/25(Sun) 20:20:41|NO.72501

説明が下手かもしれませんが回答お願いします。
体育館前から体育館前渡り廊下へ行った後、体育館へもう一度行こうとすると
体育館1にいってしまいます。改善方法を教えてください、
//--------//体育館前//----------------
*taiikukanmae ; 体育館前
gosub *taiikukanmae_map :gosub *taiikukanmae_hyouji
*taiikukanmae_drawloop ;体育館前繰り返し
redraw 0 :gosub *ryuuyou2 :gosub *map_moveme_ee :gosub *ryuuyou3 :gosub *taiikukanmae_background_character :redraw 1 :wait 7
goto *taiikukanmae_drawloop
//-------------//体育館前マップ//---------------------------------------
*taiikukanmae_map
dim MAP,32,18
//1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2
Map(0,0) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
map(0,1) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
map(0,2) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
map(0,3) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
map(0,4) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
map(0,5) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
map(0,6) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
map(0,7) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
map(0,8) =0,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0
map(0,9) =1,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
map(0,10)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
map(0,11)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
map(0,12)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4
map(0,13)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
map(0,14)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
map(0,15)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
map(0,16)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4
map(0,17)=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
//1(通行禁止),2(自分),3(体育館前渡り廊下),4(渡り廊下左),5(),6(),7(),8(),
return
//-------------------------------------------------------------------------//
*taiikukanmae_hyouji
repeat 32
cnta=cnt
repeat 18
cntb=cnt
if taiikukanmae_ue = 1 and MAP(cnta,cntb)=9 { ;自分を表示
MX=cnta*40 : MY=cntb*40
MAP (cnta,cntb)=0 }
if taiikukanmae_migi = 1 and MAP(cnta,cntb)=2 {
MX=cnta*40 : MY=cntb*40
MAP (cnta,cntb)=0 }
loop :loop :return
//---------------------------//マップ間の移動//----------------------------//
*map_moveme_ee
;判定作成
MPX0=(MX+MDX)/40 :MPY0=(MY+MDY)/40 :MPX1=(MX+MDX+39)/40 :MPY1=(MY+MDY+39)/40
if MAP(MPX0,MPY0)=1 or MAP(MPX1,MPY0)=1 or MAP(MPX0,MPY1)=1 or MAP(MPX1,MPY1)=1 { //1を通をらせない
MDX=0 :MDY=0 }
;マップ切り替え
if MAP(MPX0,MPY0)=3 or MAP(MPX1,MPY0)=3 or MAP(MPX0,MPY1)=3 or MAP(MPX1,MPY1)=3 { //3に入ったら体育館前渡り廊下へ
taiikukanmaewatarirouka_sita = taiikukanmaewatarirouka_sita + 1 :goto *taiikukanmae_kakuninn }
if MAP(MPX0,MPY0)=4 or MAP(MPX1,MPY0)=4 or MAP(MPX0,MPY1)=4 or MAP(MPX1,MPY1)=4 { //4に入ったら渡り廊下左へ
watariroukahidari_hidari = watariroukahidari_hidari + 1 :goto *taiikukanmae_kakuninn } :return
//-------------//体育館前とキャラクターの画像//---------------------------------------
*taiikukanmae_background_character
pos 0,0 : gcopy 19,0,0,1280,720 ;体育館前
pos MX,MY :celput 6,2 :return
//-----------------------------------------------------------------------------//
*taiikukanmae_kakuninn
taiikukanmae_hidari = 0 :taiikukanmae_migi = 0
if taiikukanmaewatarirouka_sita = 1 { goto *watarirouka2 }
if watariroukahidari_hidari = 1 { goto *watariroukahidari }
//--------//体育館前渡り廊下//----------------
*watarirouka2 ; 体育館前渡り廊下
gosub *watarirouka2_map :gosub *watarirouka2_hyouji
*watarirouka2_drawloop ;渡り廊下左繰り返し
redraw 0 :gosub *ryuuyou2 :gosub *map_moveme_ff :gosub *ryuuyou3 :gosub *watarirouka2_background_character :redraw 1 :wait 7
goto *watarirouka2_drawloop
//-------------//体育館前渡り廊下マップ//---------------------------------------
*watarirouka2_map
dim MAP,32,18
//1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2
Map(0,0) =0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,1) =0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,2) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,9,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,3) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,4) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,5) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,6) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,7) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,8) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,9) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,10)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,11)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,12)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,13)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,14)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,15)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,16)=0,0,0,0,0,0,0,0,0,0,0,0,1,4,4,4,4,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0
map(0,17)=0,0,0,0,0,0,0,0,0,0,0,0,1,4,4,4,4,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0
//1(通行禁止),2(自分),3(体育館1),4(体育館前),5(),6(),7(),8(),
return
//----------------------------------------------------------------------------//
*watarirouka2_hyouji
repeat 32
cnta=cnt
repeat 18
cntb=cnt
if taiikukanmaewatarirouka_ue = 1 and MAP(cnta,cntb)=9 {
MX=cnta*40 : MY=cntb*40
MAP (cnta,cntb)=0 }
if taiikukanmaewatarirouka_sita = 1 and MAP(cnta,cntb)=7 {
MX=cnta*40 : MY=cntb*40
MAP (cnta,cntb)=0 }
loop :loop :return
//---------------------------//マップ間の移動//----------------------------//
*map_moveme_ff
;判定作成
MPX0=(MX+MDX)/40 :MPY0=(MY+MDY)/40 :MPX1=(MX+MDX+39)/40 :MPY1=(MY+MDY+39)/40
if MAP(MPX0,MPY0)=1 or MAP(MPX1,MPY0)=1 or MAP(MPX0,MPY1)=1 or MAP(MPX1,MPY1)=1 { MDX=0 :MDY=0 }
;マップ切り替え
if MAP(MPX0,MPY0)=3 or MAP(MPX1,MPY0)=3 or MAP(MPX0,MPY1)=3 or MAP(MPX1,MPY1)=3 { //3に入ったら体育館1へ
taiikukan1_sita = taiikukan1_sita + 1 :goto *watarirouka2_kakuninn }
if MAP(MPX0,MPY0)=4 or MAP(MPX1,MPY0)=4 or MAP(MPX0,MPY1)=4 or MAP(MPX1,MPY1)=4 { //4に入ったら体育館前へ
taiikukanmae_ue = taiikukanmae_ue + 1 :goto *watarirouka2_kakuninn } :return
//-------------//体育館前渡り廊下とキャラクターの画像//---------------------------------------
*watarirouka2_background_character
pos 0,0 : gcopy 18,0,0,1280,720 ;体育館前渡り廊下
pos MX,MY :celput 6,2 :return
//---------------------------------------------------------------------------------------------//
*watarirouka2_kakuninn
taiikukanmaewatarirouka_ue = 0 :taiikukanmaewatarirouka_sita = 0
if taiikukan1_sita = 1 { goto *taiikukann1 }
if taiikukanmae_ue = 1 { goto *taiikukanmae }
//--------//体育館1//----------------
*taiikukann1 ; 体育館1
gosub *taiikukan1_map :gosub *taiikukan1_hyouji
*taiikukan1_drawloop ;体育館1繰り返し
redraw 0 :gosub *ryuuyou2 :gosub *map_moveme_gg :gosub *ryuuyou3 :gosub *taiikukan1_background_character :redraw 1 :wait 7
goto *taiikukan1_drawloop
//-------------//体育館1//---------------------------------------
*taiikukan1_map
dim MAP,32,18
//1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2
Map(0,0) =1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1
map(0,1) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,2) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,3) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,4) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,5) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,6) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,7) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,8) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,9) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,10)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,11)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,12)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,13)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,14)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,15)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,16)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
map(0,17)=1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1
//1(通行禁止),2(自分),3(体育館1),4(体育館前),5(),6(),7(),8(),
return
//---------------------------------------------------------------------------//
*taiikukan1_hyouji
repeat 32
cnta=cnt
repeat 18
cntb=cnt
if taiikukan1_migi = 1 and MAP(cnta,cntb)=2 {
MX=cnta*40 : MY=cntb*40
MAP (cnta,cntb)=0 }
if taiikukan1_sita = 1 and MAP(cnta,cntb)=7 {
MX=cnta*40 : MY=cntb*40
MAP (cnta,cntb)=0 }
loop :loop :return
//---------------------------//マップ間の移動//----------------------------//
*map_moveme_gg
;判定作成
MPX0=(MX+MDX)/40 :MPY0=(MY+MDY)/40 :MPX1=(MX+MDX+39)/40 :MPY1=(MY+MDY+39)/40
if MAP(MPX0,MPY0)=1 or MAP(MPX1,MPY0)=1 or MAP(MPX0,MPY1)=1 or MAP(MPX1,MPY1)=1 { //1を通をらせない
MDX=0 :MDY=0 }
;マップ切り替え
//if MAP(MPX0,MPY0)=3 or MAP(MPX1,MPY0)=3 or MAP(MPX0,MPY1)=3 or MAP(MPX1,MPY1)=3 { //3に入ったら体育館2へ
//taiikukan2_sita = taiikukan2_sita + 1 : goto *taiikukann1_kakuninn }
if MAP(MPX0,MPY0)=4 or MAP(MPX1,MPY0)=4 or MAP(MPX0,MPY1)=4 or MAP(MPX1,MPY1)=4 { //4に入ったら体育館前渡り廊下へ
taiikukanmaewatarirouka_ue = taiikukanmaewatarirouka_ue + 1 :goto *taiikukan1_kakuninn } :return
//-------------//体育館1とキャラクターの画像//---------------------------------------
*taiikukan1_background_character
pos 0,0 : gcopy 16,0,0,1280,720 ;体育館1
pos MX,MY :celput 6,2 :return
//------------------------------------------------------------------//
*taiikukan1_kakuninn
taiikukan1_migi = 0 :taiikukan1_sita = 0
//if taiikukan2_sita = 1 { goto *taiikukan2 }
if taiikukanmaewatarirouka_ue = 1 { goto *watarirouka2 }
//--------------------------//移動時の塗りつぶしと強制停止//--------//
*ryuuyou2
color 255,255,255 : boxf
if MX\40 = 0 : MDX = 0
if MY\40 = 0 : MDY = 0
stick KY,15 ;カーソルキーをチェックして移動量を設定 移動ボタンの設定
if KY=1 :MDX=-10
if KY=4 :MDX=10
if KY=2 :MDY=-10
if KY=8 :MDY=10
return
//---------------------------//移動量の計算//----------------------------//
*ryuuyou3
MX=MX+MDX :MY=MY+MDY
if MX<0 : MX=0
if MX>1280 :MX=1279
if MY<0 : MY=0
if MY>720 : MY=719
return



この記事に返信する


マソ子

リンク

2015/10/25(Sun) 20:57:11|NO.72503

実行しようとしたら失敗しました。

上記はソースの一部なのでしょうか?

恐縮ですがソースだけでも実行できるようにして頂けるとありがたいです。



Mituki

リンク

2015/10/25(Sun) 22:18:57|NO.72505

はい。マソ子さんと同じ失敗しました。
失敗の理由?:
・何かをインクルードしてない
・ソースコードのところが違う



skyblue

リンク

2015/10/26(Mon) 17:02:19|NO.72516

実行してみたら
ラベルが存在しないエラーが出る
2ヶ所だけ全角スペースがあった。
以上2点です。



くちくん

リンク

2015/10/26(Mon) 17:17:56|NO.72517

問題点
1.ラベル watariroukahidari が存在していない
2.文法を間違えている?(watariroukahidariを作成してみてから)



Noap

リンク

2015/10/26(Mon) 19:29:01|NO.72525

とりあえず動かしてみましたが、
おそらく聞いていることはマップ構造が私の解釈であっているのか分からないので合っているかどうかはわかりませんがラベル「*watarirouka2_kakuninn」の「goto *taiikukanmae 」の部分で座標を変えていないのが原因だと思います。
ただサブルーチンの中からGotoでジャンプしたり同じような処理をしていたり他にも座標指定をちゃんとしていないなど問題が多いです。(もしかしたら投稿されていないであろう部分でいろいろ処理しているのかもしれませんが)
解釈に間違いがあればすみません。



くろ

リンク

2015/10/26(Mon) 20:18:41|NO.72526

しろさんと一緒に作っている者です。
Noapさんの「座標を変えていないのが原因だと思います。」と教えていただきましたが
具体的にはどのようにすればよいのでしょうか?



Noap

リンク

2015/10/26(Mon) 20:31:04|NO.72527

移動前と移動先の座標が同じになっている、移動前と移動先でマップ上の出入り口の座標が異なるのに対し操作キャラクターの座標はそのままのため変な場所にいく、この場合は正確には体育館1ではなく体育館前の下のほうに行く、のが問題であるとわたしは考えます。
あくまでもわたしの解釈なので間違っているかもしれない気がします。
とりあえず先ほどのスクリプトを動くようにしたものを投稿していいのであれば投稿します。
ただとりあえず見栄えだけは動くように適当に書きかえたものなので汚いですし、gotoの問題などは直していませんし、わたしの勝手な解釈や手抜きがありますがそれでもよければ投稿します。
マップごとにラベルをつくるのはごちゃごちゃするのでやめたほうがいい気がします。



y.tack

リンク

2015/10/26(Mon) 21:56:30|NO.72537

ここのスレ見て思ったんですけど
なんこかのMAPを一つにして表示IDつけるとかよさそうですね
01 01 02 02
01 01 02 02
03 03 04 04
03 03 04 04
みたいな
0は床で
1〜4はMAPIDみたいな
そうすると移動がMAP更新しなくていいから
問題が簡単になりますよね



Noap

リンク

2015/10/26(Mon) 21:57:51|NO.72538

わたしもそう思います



くろ

リンク

2015/10/27(Tue) 07:00:30|NO.72547

手間をかけさせて申し訳ないですが
Noapさんの作ったプログラムを見せてもらえたら嬉しいです



Noap

リンク

2015/10/27(Tue) 17:36:10|NO.72548

かなり適当な修正なので決して期待しないでください


//とりあえず動くようにした(手抜き) //サブルーチンからgotoで外にジャンプして戻らないでいた(適当に修正) //マップ間の座標切り替えが手抜き(切り替えのしかたや切り替え先の座標が)(自分の修正が) //体育館2や廊下左はもとのスクリプト中にないので適当に処理(廊下左は渡り廊下に行くように、体育館2はコメントにして無効化) //マップごとにラベルをつくっているのでイベントなどを追加していった場合どんどん同じような処理で長くなっていく(無駄が多くバグの元) //マップの追加がしにくい(マップとマップ間のつながり(出入り口)はプログラム本体と分けて(別ファイルにして読みこむ)、イベントもなるべく分けたほうがいいと思う) //配列のチェックはしていません(右端に行くと配列外になりエラー) //などなどテキトウな直し方のためもあり問題が山積しています //直したらマップ本体しか残らない気がします //かなり適当に直したのでこれを基にするのではなく一から作り直したほうがカンタンかもしれません #define MX chrpos.0 #define MY chrpos.1 #define MDX chrpos.2 #define MDY chrpos.3 #define KY chrpos.4 dim chrpos,5 //配列にしたほうがいいと思う dim taiikukanmae_ue,1 dim taiikukanmae_hidari,1 dim taiikukan1_migi,1 dim taiikukan1_sita,1 dim taiikukan2_sita,1 dim taiikukanmaewatarirouka_sita,1 dim taiikukanmaewatarirouka_ue,1 dim watariroukahidari_hidari,1 //仮のスプライトを用意 //デバッグのためbufferではなくscreenでウィンドウにしています screen 6,40*5,40*5,screen_tool,,,40*5,40*5 title "スプライト" boxf 80,0,119,39 : color 255,255,255 : boxf 81,1,118,38 : color pos 80,0 mes "自分" celdiv 6,40,40 //おそらくマップの背景に使われていると思われるバッファーが存在しないので(後で元のスクリプトを流用して仮のマップ画像を作成しています) //デバッグのためbufferではなくscreenでウィンドウにしています //screen 19,32*40,18*40,,,,32*40.18*40 screen 19,1280,720,screen_tool,,,1280,720 screen 18,1280,720,screen_tool,,,1280,720 screen 16,1280,720,screen_tool,,,1280,720 screen 0,1280,720,,,,1280,720 //--------//体育館前//---------------- *taiikukanmae ; 体育館前 if taiikukanmae_ue{ MX=5*40 : MY=6*40 : MDX=0 : MDY=0 } //フラグがごちゃごちゃしているので全部0にする taiikukanmae_ue=0 taiikukanmae_hidari=0 taiikukan1_migi=0 taiikukan1_sita=0 taiikukan2_sita=0 taiikukanmaewatarirouka_sita=0 taiikukanmaewatarirouka_ue=0 watariroukahidari_hidari=0 gosub *taiikukanmae_map :gosub *taiikukanmae_hyouji while;体育館前繰り返し redraw 0 gosub *ryuuyou2 gosub *map_moveme_ee //サブルーチンの中からgotoで脱出するのをてきとうに修正 if taiikukanmaewatarirouka_sita : goto *watarirouka2 if watariroukahidari_hidari : goto *watariroukahidari gosub *ryuuyou3 gosub *taiikukanmae_background_character redraw 1 title "体育館前: MX="+MX+":MY="+MY+" MDX="+MDX+" MDY="+MDY await 70 wend //-------------//体育館前マップ//--------------------------------------- *taiikukanmae_map dim map,32,18 //1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2 map(0,0) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 map(0,1) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 map(0,2) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 map(0,3) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 map(0,4) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 map(0,5) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 map(0,6) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 map(0,7) =0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 map(0,8) =0,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 map(0,9) =1,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4 map(0,10)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4 map(0,11)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4 map(0,12)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4 map(0,13)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4 map(0,14)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4 map(0,15)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4 map(0,16)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4 map(0,17)=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 //1(通行禁止),2(自分),3(体育館前渡り廊下),4(渡り廊下左),5(),6(),7(),8(), return //-------------------------------------------------------------------------// //おそらくマップの背景に使われていると思われるバッファーが存在しないのでとりあえずもとのスクリプトを流用して仮のマップ画面を作成 *taiikukanmae_hyouji gsel 19 title "体育館前マップ" color 255,255,255:boxf color repeat 32 cnta=cnt repeat 18 pos cnta*40,cnt*40 if map.cnta.cnt==1 : mes "かべ" if map.cnta.cnt==3 : mes "廊下" if map.cnta.cnt==4 : mes "廊左" /*if taiikukanmae_ue = 1 and map(cnta,cntb)=9 { ;自分を表示 MX=cnta*40 : MY=cntb*40 map(cnta,cntb)=0 } if taiikukanmae_migi = 1 and map(cnta,cntb)=2 { MX=cnta*40 : MY=cntb*40 map(cnta,cntb)=0 }*/ loop loop gsel 0 return //---------------------------//マップ間の移動//----------------------------// *map_moveme_ee ;判定作成 MPX0=(MX+MDX)/40 :MPY0=(MY+MDY)/40 :MPX1=(MX+MDX+39)/40 :MPY1=(MY+MDY+39)/40 if MAP(MPX0,MPY0)=1 or MAP(MPX1,MPY0)=1 or MAP(MPX0,MPY1)=1 or MAP(MPX1,MPY1)=1 {//1を通をらせない MDX=0 :MDY=0 } ;マップ切り替え if MAP(MPX0,MPY0)=3 or MAP(MPX1,MPY0)=3 or MAP(MPX0,MPY1)=3 or MAP(MPX1,MPY1)=3 { //3に入ったら体育館前渡り廊下へ taiikukanmaewatarirouka_sita=1 //サブルーチンの中からgotoで脱出すべきではない //goto *taiikukanmae_kakuninn } if MAP(MPX0,MPY0)=4 or MAP(MPX1,MPY0)=4 or MAP(MPX0,MPY1)=4 or MAP(MPX1,MPY1)=4 { //4に入ったら渡り廊下左へ watariroukahidari_hidari=1 //goto *taiikukanmae_kakuninn } return //-------------//体育館前とキャラクターの画像//--------------------------------------- *taiikukanmae_background_character pos 0,0 gcopy 19,0,0,1280,720 ;体育館前 pos MX,MY color celput 6,2 return //-----------------------------------------------------------------------------// //とりあえずコメント化 /**taiikukanmae_kakuninn taiikukanmae_hidari = 0 :taiikukanmae_migi = 0 if taiikukanmaewatarirouka_sita : goto *watarirouka2 if watariroukahidari_hidari : goto *watariroukahidari*/ *watariroukahidari //どのような処理をするところなのか分からないので watariroukahidari_hidari=0 //--------//体育館前渡り廊下//---------------- *watarirouka2 ; 体育館前渡り廊下 if taiikukanmaewatarirouka_sita{ MDX=0 : MDY=0 : MX= 13*40: MY=13*40 } if taiikukanmaewatarirouka_ue{ MDX=0 : MDY=0 : MX= 15*40: MY=4*40 } //フラグがごちゃごちゃしているので全部0にする taiikukanmae_ue=0 taiikukanmae_hidari=0 taiikukan1_migi=0 taiikukan1_sita=0 taiikukan2_sita=0 taiikukanmaewatarirouka_sita=0 taiikukanmaewatarirouka_ue=0 watariroukahidari_hidari=0 gosub *watarirouka2_map gosub *watarirouka2_hyouji while;渡り廊下左繰り返し redraw 0 gosub *ryuuyou2 gosub *map_moveme_ff //サブルーチンの中からgotoで脱出するのをてきとうに修正 if taiikukan1_sita: goto *taiikukann1 if taiikukanmae_ue: goto *taiikukanmae gosub *ryuuyou3 gosub *watarirouka2_background_character redraw 1 title "渡り廊下: MX="+MX+":MY="+MY+" MDX="+MDX+" MDY="+MDY await 70 wend //-------------//体育館前渡り廊下マップ//--------------------------------------- *watarirouka2_map dim MAP,32,18 //1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2 map(0,0) =0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,1) =0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,2) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,9,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,3) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,4) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,5) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,6) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,7) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,8) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,9) =0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,10)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,11)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,12)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,13)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,14)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,15)=0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,16)=0,0,0,0,0,0,0,0,0,0,0,0,1,4,4,4,4,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0 map(0,17)=0,0,0,0,0,0,0,0,0,0,0,0,1,4,4,4,4,4,4,1,0,0,0,0,0,0,0,0,0,0,0,0 //1(通行禁止),2(自分),3(体育館1),4(体育館前),5(),6(),7(),8(), return //----------------------------------------------------------------------------// *watarirouka2_hyouji gsel 18 title "渡り廊下マップ" color 255,255,255:boxf color repeat 32 cnta=cnt repeat 18 pos cnta*40,cnt*40 if map.cnta.cnt==1 : mes "かべ" if map.cnta.cnt==3 : mes "体一" if map.cnta.cnt==4 : mes "体前" //cntb=cnt //if taiikukanmaewatarirouka_ue == 1 and MAP(cnta,cntb)==9{ // MX=cnta*40 : MY=cntb*40 // MAP (cnta,cntb)=0 //} //if taiikukanmaewatarirouka_sita == 1 and MAP(cnta,cntb)==7 { // MX=cnta*40 : MY=cntb*40 // MAP (cnta,cntb)=0 //} loop loop gsel 0 return //---------------------------//マップ間の移動//----------------------------// *map_moveme_ff ;判定作成 MPX0=(MX+MDX)/40 :MPY0=(MY+MDY)/40 :MPX1=(MX+MDX+39)/40 :MPY1=(MY+MDY+39)/40 //かべ if MAP(MPX0,MPY0)==1 or MAP(MPX1,MPY0)==1 or MAP(MPX0,MPY1)==1 or MAP(MPX1,MPY1)==1{ MDX=0 :MDY=0 } ;マップ切り替え if MAP(MPX0,MPY0)==3 or MAP(MPX1,MPY0)==3 or MAP(MPX0,MPY1)==3 or MAP(MPX1,MPY1)==3{ //3に入ったら体育館1へ taiikukan1_sita=1 //goto *watarirouka2_kakuninn } if MAP(MPX0,MPY0)==4 or MAP(MPX1,MPY0)==4 or MAP(MPX0,MPY1)==4 or MAP(MPX1,MPY1)==4 { //4に入ったら体育館前へ taiikukanmae_ue=1 //goto *watarirouka2_kakuninn } return //-------------//体育館前渡り廊下とキャラクターの画像//--------------------------------------- *watarirouka2_background_character pos 0,0 gcopy 18,0,0,1280,720 ;体育館前渡り廊下 pos MX,MY celput 6,2 return //---------------------------------------------------------------------------------------------// /**watarirouka2_kakuninn taiikukanmaewatarirouka_ue = 0 :taiikukanmaewatarirouka_sita = 0 if taiikukan1_sita: goto *taiikukann1 if taiikukanmae_ue: goto *taiikukanmae*/ //--------//体育館1//---------------- *taiikukann1 ; 体育館1 if taiikukan1_sita{ MDX=0 : MDY=0 : MX= 13*40: MY=13*40 } //フラグがごちゃごちゃしているので全部0にする taiikukanmae_ue=0 taiikukanmae_hidari=0 taiikukan1_migi=0 taiikukan1_sita=0 taiikukan2_sita=0 taiikukanmaewatarirouka_sita=0 taiikukanmaewatarirouka_ue=0 watariroukahidari_hidari=0 gosub *taiikukan1_map gosub *taiikukan1_hyouji while;体育館1繰り返し redraw 0 gosub *ryuuyou2 gosub *map_moveme_gg //他と同じ if taiikukanmaewatarirouka_ue: goto *watarirouka2 gosub *ryuuyou3 gosub *taiikukan1_background_character redraw 1 title "体育館1: MX="+MX+":MY="+MY+" MDX="+MDX+" MDY="+MDY await 70 wend //-------------//体育館1//--------------------------------------- *taiikukan1_map dim MAP,32,18 //1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2 Map(0,0) =1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1 map(0,1) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,2) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,3) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,4) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,5) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,6) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,7) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,8) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,9) =1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,10)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,11)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,12)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,13)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,14)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,15)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,16)=1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 map(0,17)=1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1 //1(通行禁止),2(自分),3(体育館1),4(体育館前),5(),6(),7(),8(), return //---------------------------------------------------------------------------// *taiikukan1_hyouji gsel 16 title "体育館1マップ" color 255,255,255:boxf color repeat 32 cnta=cnt repeat 18 //cntb=cnt //if taiikukan1_migi = 1 and MAP(cnta,cntb)=2 { // MX=cnta*40 : MY=cntb*40 // MAP (cnta,cntb)=0 //} //if taiikukan1_sita = 1 and MAP(cnta,cntb)=7 { // MX=cnta*40 : MY=cntb*40 // MAP (cnta,cntb)=0 //} pos cnta*40,cnt*40 if map.cnta.cnt==1 : mes "かべ" if map.cnta.cnt==3 : mes "体一" if map.cnta.cnt==4 : mes "体前" loop loop gsel 0 return //---------------------------//マップ間の移動//----------------------------// *map_moveme_gg ;判定作成 MPX0=(MX+MDX)/40 :MPY0=(MY+MDY)/40 :MPX1=(MX+MDX+39)/40 :MPY1=(MY+MDY+39)/40 if MAP(MPX0,MPY0)=1 or MAP(MPX1,MPY0)=1 or MAP(MPX0,MPY1)=1 or MAP(MPX1,MPY1)=1 { //1を通をらせない MDX=0 :MDY=0 } ;マップ切り替え //if MAP(MPX0,MPY0)=3 or MAP(MPX1,MPY0)=3 or MAP(MPX0,MPY1)=3 or MAP(MPX1,MPY1)=3 { //3に入ったら体育館2へ // taiikukan2_sita =1 // goto *taiikukan1_kakuninn //} if MAP(MPX0,MPY0)=4 or MAP(MPX1,MPY0)=4 or MAP(MPX0,MPY1)=4 or MAP(MPX1,MPY1)=4{ //4に入ったら体育館前渡り廊下へ taiikukanmaewatarirouka_ue=1 //goto *taiikukan1_kakuninn } return //-------------//体育館1とキャラクターの画像//--------------------------------------- *taiikukan1_background_character pos 0,0 : gcopy 16,0,0,1280,720 ;体育館1 pos MX,MY celput 6,2 return //------------------------------------------------------------------// /**taiikukan1_kakuninn taiikukan1_migi = 0 :taiikukan1_sita = 0 //体育館2の部分がないので //if taiikukan2_sita = 1 { goto *taiikukan2 } if taiikukanmaewatarirouka_ue: goto *watarirouka2*/ //--------------------------//移動時の塗りつぶしと強制停止//--------// *ryuuyou2 color 255,255,255 : boxf if MX\40==0 : MDX=0 if MY\40==0 : MDY=0 stick KY,15 ;カーソルキーをチェックして移動量を設定 移動ボタンの設定 if KY=1 :MDX=-10 if KY=4 :MDX=10 if KY=2 :MDY=-10 if KY=8 :MDY=10 return //---------------------------//移動量の計算//----------------------------// *ryuuyou3 MX+=MDX :MY+=MDY if MX<0 : MX=0 if MX>1280 :MX=1279 if MY<0 : MY=0 if MY>720 : MY=719 return



Noap

リンク

2015/10/27(Tue) 18:01:21|NO.72549

スクリプトには書いていませんがフラグにも不具合があったので一応修正しています。
いろいろとコメントに書いてありますがあくまでもわたしの考えなのでいろいろとおかしいかもしれません。
あくまでもわたしの考えですがわたしの直したスクリプトより一から作り直したほうがいい気がします。あくまでも私の意見です。



くろ

リンク

2015/10/27(Tue) 21:59:56|NO.72568

Noapさんありがとうございます。
「マップとマップ間のつながり(出入り口)はプログラム本体と分けて
(別ファイルにして読みこむ)」というのはテキストファイルを使うということですか?



Noap

リンク

2015/10/27(Tue) 22:18:17|NO.72569

はいそういうことです
具体的な実装までする元気はありません



くろ

リンク

2015/10/27(Tue) 22:26:12|NO.72571

ありがとうございます。
「while」と「wend」は知りませんでした。
テキストファイルを使うほうは、自分で頑張ってみます。
また質問がありましたら回答をお願いします。



くろ

リンク

2015/10/27(Tue) 22:37:56|NO.72572

たびたびすいませんが
#define MX chrpos.0 #define MY chrpos.1 #define MDX chrpos.2
#define MDY chrpos.3 #define KY chrpos.4
これは、どういった意味があるのでしょうか?



Noap

リンク

2015/10/27(Tue) 23:22:50|NO.72574

#defineは知っていると思いますがただ大文字でしたので変数名ではなく定数なのかと思い、それなら座標関係の数値は配列で管理していてそれを分かりやすくするために定数を元のスクリプトで使っているのかと思って書きました(つまり構造体風に使っているのかと思いました)。
ようするに私の勝手な解釈による産物です。
元のスクリプトでは定数ではなく普通の変数として使っているのであれば、その部分は消すか結果レポート(スクリプトがHSPのコンパイラが解釈できなかった場合に表示される)(メニューのHSPからエラー表示を選んでも表示できる)で未初期化の変数と表示されるのがいやであれば

dim MX,1 dim MY,1 dim MDX,1 dim MDY,1 dim KY,1
としてください。つまり無視してくださってかまいません。



くろ

リンク

2015/10/28(Wed) 09:55:05|NO.72579

分かりました。
ありございます。



くろ

リンク

2015/10/28(Wed) 13:27:48|NO.72580

if taiikukanmaewatarirouka_sita : goto *watarirouka2
この部分なのですが
if taiikukanmaewatarirouka_sita = 1 : goto *watarirouka2
と書かなくていいようですがどうしてでしょうか?



kanamaru

リンク

2015/10/28(Wed) 13:48:59|NO.72581

詳しい説明は省きますが、条件分岐は多言語では、Boolean型とか呼ばれる値を指定します。
trueとfalseのどちらかです。
でも、条件式で指定することももちろんできます。
その時は、コンパイラが内部で変換してくれます。
さて、プログラミングでは、度々変数型の変換を伴います。
そこでBooleanをintに変換すると、trueは1、falseは0となります。
条件分岐では、この2つの数字のどちらかを条件式に指定してもいいことになっています。
そこで、変数の中身が1ならと調べるぐらいなら、変数をそのまま指定したんだと思います。
プログラミングでは結構使う省略です。



くろ

リンク

2015/10/28(Wed) 19:35:22|NO.72588

ありがとうございます。
次の質問なのですが、背景画像が1280、720の大きさで
すでにある場合は、repeat32〜loopまでは
書かなくてもいいのでしょうか?



kanamaru

リンク

2015/10/28(Wed) 21:22:06|NO.72590

背景を画像にする場合は、通れるところと通れないところを配列にでも入れとく必要があります。
そう考えると、マップは確か生成用プログラムが標準でついていたような…。
チップはプログラムが使う画像をすり替えれば問題ないし。



Noap

リンク

2015/10/28(Wed) 21:33:45|NO.72591

元のわたしがコメントアウトした処理がどういう処理なのか元のスクリプトからはわたしは判断できないので分かりませんが、
しろさんと相談して以下の部分がいらないのであれば消していいと思います。

if taiikukanmae_ue = 1 and map(cnta,cntb)=9 { ;自分を表示 MX=cnta*40 : MY=cntb*40 map(cnta,cntb)=0 } if taiikukanmae_migi = 1 and map(cnta,cntb)=2 { MX=cnta*40 : MY=cntb*40 map(cnta,cntb)=0 }
どちらにしてもマップ画像を用意できているのであればわたしがその場所に書き加えた部分は消していいです。
わたしならばマップ画像は用意せずもとのマップデータから画像を並べるなどします。
kanamaruさん、しろさんの元のスクリプトをですでに配列で通れるところと通れないところは入れています。
mapedit.hspのことではないかと思います。



くろ

リンク

2015/10/30(Fri) 22:52:27|NO.72638

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



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