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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0804
雷光STG作ってました。敵が攻撃してきません。4解決


雷光

リンク

2011/8/4(Thu) 00:23:08|NO.40378

STGを作りなおしていたんですが以前はできた敵の攻撃ができません。
変数を間違えたかと思ったんですが、まったく変わりません。
どこを直したらいいですか?

randomize *start mx=100//自機のX座標 my=200//自機のY座標 eka=10//一度に画面に残せる敵の数 endm=10//一度に画面に残せる敵の弾の数 esp=1//敵の弾の速度 repeat eka ekaa.cnt=1//敵がいるかどうか ekax.cnt=rnd(440)+200//敵のX ekay.cnt=rnd(380)//敵のY loop repeat endm edaa.cnt=0//敵の弾があるかどうか edax.cnt=0//敵の弾のX eday.cnt=0//敵の弾のY loop *main //メインのところ repeat redraw 2 color:boxf: color 255,255,255 //画面クリア gosub*han//敵の攻撃のサブルーチン gosub*hyo//物を表示するサブルーチン gosub*key//自機移動のサブルーチン redraw 1 wait 1 loop *hyo//物を表示するサブルーチン pos mx,my:mes"→"//自機の表示 repeat eka if ekaa.cnt=1 :ekax.cnt=ekax.cnt-1:pos ekax.cnt,ekay.cnt:mes"←"//敵の描写 loop repeat endm if edaa.cnt=1:edax.cnt=edax.cnt-esp:pos edax.cnt,eday.cnt:mes"."//敵の弾の描写 loop return *key//自機移動のサブルーチン stick in,15 if in&1:if mx>3:mx=mx-3//左 if in&2:if my>3:my=my-3//上 if in&4:if mx<570:mx=mx+3//右 if in&8:if my<440:my=my+3//下 if in&128:goto*start//下 return *han//敵の攻撃サブルーチン tcon=10 er=rnd(endm) tta=rnd(eka) if (edaa.er=0)&(tcon=esp){ edda.er=1;弾があることに edax.er=ekax.tta-12;弾の出現位置X eday.er=ekay.tta;弾の出現位置Y tcon=10 } repeat maxd if edax.cnt<0 :edaa.cnt=0:edax.cnt=0:eday.cnt=0;弾を消す loop if tcon<esp:tcon++;連射速度制御 return



この記事に返信する


ひらまる

リンク

2011/8/4(Thu) 00:54:49|NO.40380

単純なタイプミスです。
50行目に

edda.er=1;弾があることに
とありますが、おそらく正確には

edaa.er=1;弾があることに
です。

それと条件式

if (edaa.er=0)&(tcon=esp){
は、

if (edaa.er=0)&(tcon>=esp){
とした方が良いでしょう。



晩御飯

リンク

2011/8/4(Thu) 00:55:35|NO.40381

tconなる変数に常に10を代入しているみたいだけどこれはいったい何の変数です?



晩御飯

リンク

2011/8/4(Thu) 00:56:21|NO.40382

わー見なかったことにして



雷光

リンク

2011/8/4(Thu) 08:53:18|NO.40386

解決しました。皆さんありがとうございました。



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