ページ 11

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

Posted: 2009年12月31日(木) 13:50
by たこ
カウンターと言う語句が出てきておりますが、このカウンターが
どのような意味をするのかがよくわかりません。
回答をお願いします。 画像

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

Posted: 2009年12月31日(木) 14:04
by kazuoni
wiki -カウンター-
http://ja.wikipedia.org/wiki/%E3%82%AB% ... F%E3%83%BC

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

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

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

Posted: 2009年12月31日(木) 15:17
by たこ
玉と玉の間が5空間と言うことですか?

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

Posted: 2009年12月31日(木) 15:34
by 紅葉
大体のゲームは1秒60フレームという間隔で構成されております。
つまり毎フレーム1増えると1秒でカウンターは60溜まります。

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

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

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

Posted: 2009年12月31日(木) 15:54
by kazuoni
> 玉と玉の間が5空間

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

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

Posted: 2009年12月31日(木) 15:56
by たこ
う~ん^^; すみません。よくわからいです…
if(counter<5)
counter++;
このインクリメントはいくつまで増加するってことですか???(?_?)

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

Posted: 2009年12月31日(木) 17:17
by kazuoni
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. シューティング基本について

Posted: 2010年1月01日(金) 02:12
by たこ
そっか!  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なんかかなりこんがらかってきた…
「エンターを押したときに連続で発射してしまわないようにする処置です。」
と書いてあって確かに連続で発射されなくなってるんですけど…

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

Posted: 2010年1月01日(金) 09:01
by kazuoni
文章からは理解しているように感じますが^^;

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

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

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

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