第11講 シューティングゲーム開発(銃社員の自作まで)
第7話 謎のコードの解説その1
jyu.cppのコード
#include"main.h"
//jyu(じゅう) taisyoutonarukey(たいしょうとなるきー)
//対象となるキーが直前に押されておらず、今押されている場合にそのキーを押したと判定する関数
//キーが押されたと判定:1 キーが押されていないと判定:0
char jyu(int taisyoutonarukey) { //taisyoutonarukey(たいしょうとなるキー)は、今対象としているキーの出席番号
  if (CheckHitKey(taisyoutonarukey) != 0) {
    if (taisyoutonarukey_mae[taisyoutonarukey] == 0) {
      taisyoutonarukey_mae[taisyoutonarukey] = 1;
      return 1;
    }
  }
  else {
    taisyoutonarukey_mae[taisyoutonarukey] = 0;
    return 0;
  }
  return 0;
}
まず、始めにcharについて説明しましょう。
charは初めて出てくる変数型ですが、
char a;
と宣言すると箱aは255以下の整数を入れる箱となります。
jyu()社員が返す値は0か1のみですので、
charにしました。ですから、
int jyu(int taisyoutonarukey) { //taisyoutonarukey(たいしょうとなるキー)は、今対象としているキーの出席番号
でもよかったわけです。
ただintの方が容量が大きいために、コンピュータへ負荷は大きくなります。
ということは、わずかですがゲームの進行に影響します。
データが小さいことがわかっているときは、
なるべくメモリ容量の食わない小さい変数型を用いた方がよいのです。
数独生成アプリで実験したことがありますが、
すべてをint型にするとのchar型にするのとでは、2,3倍の速度差があります。
普通は2つの値しか返さないときはbool型(falseまたはtrueを返す)にするのですが、
不思議なことにchar型の方が容量が小さいのです。
それで私は、bool型は使いません。
データ容量が小さいことに加えて、
if文の条件式の部分が面倒になるからです。
bool型だと
If(〜==TRUE)〜
となるのに対してchar型の場合は
If(〜==1)〜
とシンプルになります。

jyu()社員が返す値は0か1のみなのは、
そのキーは押されたかの判定はイエスとノーしかないからです。
返す値1にイエスの意味を持たせ、
返す値0にノーのみを持たせているからです。
誰が持たせかわかりますか。
それはプログラマです。
ただ、どっちがイエスだったかノーだったかわかなくなることがあるので、
他のサイトや書籍ではbool型にしている場合が圧倒的に多いわけです。
ですが、
//キーが押されたと判定:1 キーが押されていないと判定:0
のような注釈文をあちらこちらにコピペで貼り付けておけば、
その問題はクリアです。


第6話へ   第8話へ

第2部トップへ  第1部トップへ


初心者のための excel 2016 マクロ VBA 入門講義 基
礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための]世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップ