弾が長押しで止まらなくなるのを防ぐ方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Ultimate

弾が長押しで止まらなくなるのを防ぐ方法

#1

投稿記事 by Ultimate » 15年前

問題の箇所のソースを載せます。

for(i=0;i<50;i++){
if(jiki.flag==0){
jiki.x=jiki.tx+10;
jiki.y=jiki.ty+10;
}
if(jiki.flag==1){
jiki.y-=10;
jiki.nagasa+=10;
if(jiki.y<0){
jiki.flag=0;
jiki.nagasa=0;
}
if(i>0&&i<49&&jiki.nagasa>100) {
jiki.flag[i+1]=1;
}

}
}
if(Key[KEY_INPUT_Z]==1){
for(i=0;i<50;i++){
if(i==0){
jiki.flag[i]=1;
}
if(jiki.flag[i]==0&&jiki.flag[i-1]==1&&jiki.nagasa[i-1]>100){
jiki.flag[i]=1;
}
}
jiki.count=0;

}
for(i=0;i<50;i++){
DrawCircle(jiki.x[i],jiki.y[i],3,BLACK);
}

変数については

//自機
typedef struct{
int tx; //本体のX座標
int ty; //本体のY座標
int x[50]; //弾のX座標
int y[50]; //弾のY座標
int flag[50]; //弾のフラグ
int hp; //本体のHP
int nagasa[50]; //次の弾のフラグを1にする基準
int count; //カウンター(未使用)
}jstruct;
jstruct jiki;


です。

回答お願いします。

パコネコ

Re:弾が長押しで止まらなくなるのを防ぐ方法

#2

投稿記事 by パコネコ » 15年前

止まらなくというのがわからないのですが…
連射を撃ちたくないのでしょうか?
連射に間を開けたいのでしょうか?
Zボタンを押した後に次の弾はもう一度おしなおすまででなくしたいのでしょうか?

とりあえず弾を1発撃つことができたらループから向けてはどうでしょうか?
後は次の弾を撃つまでの間をカウンタで調節してあげれば行けると思うのですが…


if(Key[KEY_INPUT_Z]==1){
for(i=0;i<50;i++){
if(i==0){
jiki.flag=1;
break;
}
if(jiki.flag==0&&jiki.flag[i-1]==1&&jiki.nagasa[i-1]>100){
jiki.flag=1;
break;
}
}
jiki.count=0;
}
こんな感じでしょうか?
勘違いならすいません。

==========
もしかして…
一度ボタンを押しいた後、ボタンを押してないときも弾が出てたりしませんか?
=============
if(i>0&&i<49&&jiki.nagasa>100) {
jiki.flag[i+1]=1;
}
これって必要なのでしょうか?
自動で弾を撃ってるように見えるのですが… 画像

シエル

Re:弾が長押しで止まらなくなるのを防ぐ方法

#3

投稿記事 by シエル » 15年前

意味がわかりません。具体的に質問して下さい。

Ultimate

Re:弾が長押しで止まらなくなるのを防ぐ方法

#4

投稿記事 by Ultimate » 15年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る