第11講 シューティングゲーム開発(銃社員の自作まで)
第6話 jyu関数開発
ではいよいよシューティングゲームの開発に取りかかりましょう。
今回は、第10講第6話で完成させたブロック崩しを改良していくことで、
シューティングゲームを作っていきたいと思います。
途中から、この講義に入ってきた方は大変申し分けないのですが、
我慢して、第1部の第10講だけでも読んで、
コピペなどを利用してブロック崩しを作っていただければと思います。

まず、最初に皆さんが作ったgameというフォルダ、
私の場合であれば、
C:→ユーザー→NEC-PCuser→ドキュメント→Visual Studio 2017→Projects
(c:\users\nec-pcuser\documents\visual studio 2017\Projects)
の中にあるgameというフォルダです。
これを第8講第1話で作った05
シューティングゲームというフォルダにコピペしてください。
前に、基本のgameというフォルダを貼り付けていますので、
ファイルの置換またはスキップという画面が出てきたら、
ファイルを置き換えるを選んでください。
要するに上書きしてください。
シューティングゲームのフォルダに入りますと、
gameがありさらにその中に入ると、

game.slnがありますので、それをダブルクリックしてプロジェクトを開いてください。
F5を押すと、ブロックゲームが起動します。
それを確認したらゲームは閉じます。
ファイル構成は、次のようになっているはずです。
01
gameのところで右クリックをして、
2つのファイルを追加してください。
c++ファイルjyu.ccpとヘッダファイルjyu.hです。
できたら、各ファイルのコードを次のようにしてください。
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;
}

jyu.hのコード
char jyu(int taisyoutonarukey);
//jyu(じゅう) taisyoutonarukey(たいしょうとなるきー)
//対象となるキーが直前に押されておらず、今押されている場合にそのキーを押したと判定する関数
//キーが押されたと判定:1 キーが押されていないと判定:0

main.cppのコード
・・・
int aki; //天井からブロック上端までの空きの大きさ
char taisyoutonarukey_mae[200];
//たいしょうとなるキーのまえ
//対象となるキーが直前に押されている:1 押されていない:0

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
  ・・・

main.hのコード
・・・
#include"jyu.h"
extern int arunasi[4][10]; //あるなし ブロックが ある:1 ない:0 とする
・・・
extern int aki; //天井からブロック上端までの空きの大きさ
extern char taisyoutonarukey_mae[200];
//たいしょうとなるキーのまえ
//対象となるキーが直前に押されている:1 押されていない:0


F5を押すとブロック崩しが起動します。
とはいえまだjyu();は使っていませんので、
実際に使ってみましょう。
使う部分は
if (CheckHitKey(KEY_INPUT_Z) != 0) {・・・
if (CheckHitKey(KEY_INPUT_A) != 0) {・・・
if (CheckHitKey(KEY_INPUT_B) != 0) {・・・
if (CheckHitKey(KEY_INPUT_C) != 0) {・・・
です。
つまり、saisyonogamenn.cppとmake.cppとkachi.cppについて当てはまる場所をすべて、
if (jyu(KEY_INPUT_Z) != 0) {・・・
if (jyu(KEY_INPUT_Z) != 0) {・・・
if (jyu(KEY_INPUT_A) != 0) {・・・
if (jyu(KEY_INPUT_B) != 0) {・・・
if (jyu(KEY_INPUT_C) != 0) {・・・

と書き変えます。
F5をおすとやはりゲーム画面が起動して、
A→Zでゲームが始まりますが、
今の時点では
if (CheckHitKey(KEY_INPUT_Z) != 0) {・・・
         ↓
if (jyu(KEY_INPUT_Z) != 0) {・・・
と変更した効果は余り感じませんが、
それでも少しだけですが、
前よりスムーズにゲーム画面が切りかわった気がしませんか。

基礎で引数を用いれば汎用性のあるプログラムに置き換わることは、
習ったとはいえ、
初心者の方にとってまさに謎そのものです。
次話以降ではこの意味不明のコードを初心者の方にも
理解できるように詳しく解説していきます。


第5話へ   第7話へ

第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 入門 サイト 基礎から応用まで
本サイトトップ