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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0429
ファッスー「●」の弾がうまく表示できません(STG)4解決


ファッスー

リンク

2012/4/29(Sun) 01:29:47|NO.46321

今、STGを作っているのですが緑色の弾の「●」がうまく表示されません(1個ずつしか表示されない状態)。
もう一方の「▼」の弾の方はうまくいってるのですが・・・・
何がいけないんでしょうか?
バリバリの初心者なんで分かりやすく説明してもらえると有難いです。
あと当たり判定などがおかしいことになってますが気にしないでください。


x1=0:y1=0
x2=640:y2=480

blsize=20
blspd=7
blx=240:bly=400
bpx=8:bpy=8
bk=0
tamasize_x=17
tamasize_y=16
jkx=40
jky=30

jiki=10


screen 0,x2,y2


//弾の情報


dim tama,100
dim tama_x,100
dim tama_y,100

dim tama2,100
dim tama2_x,100
dim tama2_y,100




*main
//自機の情報
redraw 1
gradf 0,0,x2,y2,1,0,128


color 0,255,0
pos blx,bly:color 255,255,255:font msgothic,blsize
mes"■"
//自機の操作
stick key,31
if key&2:bly-10
if key&1:blx-10
if key&4:blx+10
if key&8:bly+10
//自機の操作範囲
if blx<=x1 : blx=x1
if blx>=x2-43 : blx=x2-43
if bly>=y2-38 : bly=y2-38
if bly<=0 : bly=0

//弾出現ルーチン
time++
if(time \ 2)=0{
repeat 100
if tama(cnt)=0{
tama(cnt)=1
tama_x(cnt)=rnd(x2)
tama_y(cnt)=-10
tama_hp(cnt)=10


break

}
loop
}
if(time \ 50)=0{
repeat 100
if teki2(cnt)=0{
tama2(cnt)=1
tama2_x(cnt)=rnd(x2)
tama2_y(cnt)=-10
tama2_hp(cnt)=10


break

}
loop
}

//弾の処理
repeat 100
if tama_y(cnt)>y2:tama(cnt)=0
if tama(cnt)=1{
tama_x(cnt)+=rnd(3)
tama_y(cnt)+=10
if (abs(blx - tama_x(cnt)) < 30) & (abs(bly - tama_y(cnt)) < 16){
jiki=jiki-1
if jiki=0:goto*gameover
tama(cnt)=0
}
pos tama_x(cnt),tama_y(cnt)
mes "▼"

}
loop

repeat 100
if tama2_y(cnt)>y2:tama2(cnt)=0
if tama2(cnt)>=1{
tama2_x(cnt)+=-2
tama2_y(cnt)+=20
if (abs(blx -tama2_x(cnt)) < 30) and (abs(bly - tama2_y(cnt)) < 16){
jiki=jiki-1
if jiki=0:goto*gameover
tama2(cnt)=0
}
pos tama2_x(cnt),tama2_y(cnt)
color 0,255,0
mes"●"

}
loop



await 16
redraw 0

goto *main



*gameover
tama_y=0
tama_y=0
pos 280,140
color 255,255,0
mes "GameOver"

objsize 180,32
pos 235,240:button"終了",*owari
stop

*owari
end



この記事に返信する


暇人

リンク

2012/4/29(Sun) 02:08:26|NO.46322

弾の発射部分がおかしいのは分かってるんだから
一行一行見ていけば発見できたはず・・・

> if teki2(cnt)=0{
> tama2(cnt)=1



TMKL

リンク

2012/4/29(Sun) 07:49:26|NO.46328

暇人さんの指摘のほかに、
>if(time \ 50)=0{
も直さないと、目的の動作はしないですよ

ファッスーさんは\の意味は分かってますか?



M

リンク

2012/4/29(Sun) 09:06:26|NO.46329

まず一つ、73行目 if teki2(cnt)=0{ を、if tama2(cnt)=0{ にする。

もう一つ、●が画面に一個ずつしか出てこない問題について。
71行目のif(time¥\50)=0{ の「50」を小さい数字に調整する。
(現状では、発射間隔が長すぎるせいで、画面に一つずつしか出てこない)

これで、意図したうごきになるんじゃないカナ?

repeat〜loopの間にgoto命令で飛ばしているのが、ちょとお行儀が悪いので、ループの外で飛ぶようにしたほうが良いと思う。
ex.

repeat 100 // jiki=jiki-1 if jiki=0:goto*gameover // loop ;↓ repeat 100 // jiki=jiki-1 // loop if jiki<=0:goto*gameover



ファッスー

リンク

2012/4/29(Sun) 11:59:01|NO.46331

皆さんのおかげで緑の弾をうまく表示させることができました!!
ありがとうございました。
(なんかくだらない凡ミスですみませんでした・・・)



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