26. シューティング基本について

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

26. シューティング基本について

#1

投稿記事 by たこ » 15年前

カウンターと言う語句が出てきておりますが、このカウンターが
どのような意味をするのかがよくわかりません。
回答をお願いします。 画像

kazuoni

Re:26. シューティング基本について

#2

投稿記事 by kazuoni » 15年前

wiki -カウンター-
http://ja.wikipedia.org/wiki/%E3%82%AB% ... F%E3%83%BC

このページでもカウンターは使われてますよね。
訪問者の数をカウント(数え上げ)してます。

26章で使われているcounterは初期状態もしくは、
エンターキーが押された次ループ状態から
5ループ間は何があっても新たな弾の出現はしないという意味合いかと思います。

たこ

Re:26. シューティング基本について

#3

投稿記事 by たこ » 15年前

玉と玉の間が5空間と言うことですか?

紅葉

Re:26. シューティング基本について

#4

投稿記事 by 紅葉 » 15年前

大体のゲームは1秒60フレームという間隔で構成されております。
つまり毎フレーム1増えると1秒でカウンターは60溜まります。

5ループ間というのは環境によって違いますが5フレーム回ったら
つまり1/12秒たったら時だけ処理を行うということです。

60フレームと書かせていただきましたがこちらは環境依存ですので気をつけて下さい。

kazuoni

Re:26. シューティング基本について

#5

投稿記事 by kazuoni » 15年前

> 玉と玉の間が5空間

「最低でも」5空間のが正しいですね。
if文では、エンターキーの判定の前にcounterが5に達しているかどうか
の判定を行っていますので。

たこ

Re:26. シューティング基本について

#6

投稿記事 by たこ » 15年前

う~ん^^; すみません。よくわからいです…
if(counter<5)
counter++;
このインクリメントはいくつまで増加するってことですか???(?_?)

kazuoni

Re:26. シューティング基本について

#7

投稿記事 by kazuoni » 15年前

if...elseの動作を理解していますか?

if(条件A) {文a} else if(条件B) {文b} else {文c}
条件A    true :    文a処理
    false:    条件Bへ

条件B    true:    文b処理
    false:    文cへ
なのでまず、counter<5がtrueかどうか判定します。
counterが(0)~4のときはこの条件に合致するので、++counterです。
counterが5のときはこの条件に合致しないので、else ifの条件の判定を行います。
ここで、エンターキーが押されているかどうかを判定します。
押されていれば、弾の登録をしています。

なので、カウンターは最大5です。

たこ

Re:26. シューティング基本について

#8

投稿記事 by たこ » 15年前

そっか!  counterの値が5だったら 
else if( Key[ KEY_INPUT_RETURN ] == 1 )こっちの条件に行くんですね。
で、その後に、またcounterの値0にしてループして、counterの値は1になって、
if(counter<5) の条件は成立して、
else if( Key[ KEY_INPUT_RETURN ] == 1 )の処理は行われない。
で次に、
for(i=0;i<10;i++){
~以下省略~
の文を次は処理するってことですよね???
counter=5になったら、
else if( Key[ KEY_INPUT_RETURN ] == 1 )の処理にを行うですよね?
う~ん… でもやっぱりcounterがどういう処理をするのかがいまいちピンと来ないなぁ…
やばいwwなんかかなりこんがらかってきた…
「エンターを押したときに連続で発射してしまわないようにする処置です。」
と書いてあって確かに連続で発射されなくなってるんですけど…

kazuoni

Re:26. シューティング基本について

#9

投稿記事 by kazuoni » 15年前

文章からは理解しているように感じますが^^;

うまいかどうかわからないですが、
例えばレースゲームを思い出してください。(○ッジレーサー等)
ゲームだと「レディー・・・」の段階はどれだけアクセルを押してもスタートできないですよね。
(現実だとフライングがありますが・・・)
いつまでスタートできないかというとシグナル(信号)が赤から青になるまでです。
大体信号は2つですけど、今回はcounterがそれを勤めます。
なので、シグナルは5つです。その間は何を押してもスタートできません。
また、スタート可能状態になっても、アクセルを踏まなければスタートしません。
前レースがスタートしたら、再びシグナルは待ち状態になります。
(シグナルのカウントが0になる)

このようにすれば、前レースと次レースの間隔は最低でも5空きますよね。
これがシューティングでいう連射機能を抑える役目を担っているわけです。

たこ

Re:26. シューティング基本について

#10

投稿記事 by たこ » 15年前

すみません>< 返事が遅れてしまいました…
なるほど…レースのシグナルと考えるとわかりやすいですね^^
皆さんの回答のおかげ理解することができました。
ありがとうございます!

閉鎖

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