第14講 シューティングゲームの高度化
第2話 大砲に敵の弾があったらゲームオーバとする
敵の弾に当たったらゲームオーバとなるコード
main.cpp
#include"main.h"
char ufo_arunasi[20][20]; //UFOが ある:1 ない:0 とする
char tama_arunasi[100]; //弾が ある:1 ない:0 とする]
char tamakazu; //弾を数える変数
int tama_x[100], tama_y[100]; //弾の横位置と縦位置
float ufo_hayasa; //UFOの降りる速さ
float ufo_tama_x[8][10], ufo_tama_y[8][10]; //UFOの放った弾の横位置と縦位置
int syujinkou_x, syujinkou_y; //主人公(ヒロイン)の横位置と縦位置
int ufo_yokosu=10 , ufo_tatesu=8; //UFOの横数と縦数
float ufo_yokohaba; //UFOの横幅
float ufo_tatehaba; //UFOの縦幅
int syujinkou_yokohaba , syujinkou_tatehaba; //主人公(ヒロイン)の横幅と縦幅
int tama_hankei; //弾の大きさ
     ・
     ・
main.h
#include "DxLib.h"
     ・
     ・
extern char ufo_arunasi[20][20]; //UFOが ある:1 ない:0 とする
extern char tama_arunasi[100]; //弾が ある:1 ない:0 とする
extern char tamakazu; //弾数を数える変数
extern int tama_x[100], tama_y[100]; //弾の横位置と縦位置
extern float ufo_hayasa; //UFOの降りる速さ
     ・
     ・

ufo.cpp
#include"main.h"
void ufo() {
  int i, j, a;
  for (i = 0; i < ufo_tatesu; i++) {
    for (j = 0; j < ufo_yokosu; j++) {
      if (ufo_arunasi[i][j] == 1) {
        int ufo_gazou = LoadGraph("画像/ufo.png"); //UFO画像を読み込み出席番号を付けて番号を箱に収納
        DrawGraph(ufo_yokohaba*(float)j, ufo_tatehaba*(float)i+aki, ufo_gazou, true); //UFO画像を描く
        DeleteGraph(ufo_gazou); //UFO出席番号収納箱の削除
        if (ufo_tatehaba*(float)i + aki > 1000) {
          m = 2;
        }
      }
      
ufo_tama_x[i][j] = ufo_yokohaba*(float)j + ufo_yokohaba / 2.0;
      ufo_tama_y[i][j] = ufo_tatehaba*(float)i + 3 * aki + 20;
      DrawCircle(ufo_tama_x[i][j], ufo_tama_y[i][j], 6, aka, true);

    }
  }
  aki += ufo_hayasa;
}
atarihantei.cpp
#include"main.h"
void atarihantei() {
  int i, j,k;
  for (i = 0; i < ufo_tatesu; i++) {
    for (j = 0; j < ufo_yokosu; j++) {
      if (ufo_arunasi[i][j] == 1) {
        for (k = 0; k < 100; k++) {
          if (tama_arunasi[k] == 1) {
            if (tama_x[k]>= ufo_yokohaba*j && tama_x[k] <= ufo_yokohaba*(j + 1) && tama_y[k] >= ufo_tatehaba*i-12 && tama_y[k] <= ufo_tatehaba*(i + 1)+12) {
              ufo_arunasi[i][j] = 0; //UFOが消滅するように設定
              tama_arunasi[k] = 0; //弾が消滅するように設定
              PlaySoundMem(LoadSoundMem("音/爆発.mp3"), DX_PLAYTYPE_BACK); // 爆発音を発生させる
              tokuten += 10; //ゲームカウント
              kosu--; //UFO個数を減少させる
              if (kosu == 0) { //ゲームクリア
                m = 3;
              }
            }
          }
        }
      }
    }
  }
  for (i = 0; i < ufo_tatesu; i++) {
    for (j = 0; j < ufo_yokosu; j++) {
      if (ufo_tama_x[i][j] >= syujinkou_x && ufo_tama_x[i][j] <= syujinkou_x + syujinkou_yokohaba && ufo_tama_y[i][j] >= 1000 - syujinkou_tatehaba && ufo_tama_y[i][j] <= 1000) {
        m = 2;
      }
    }
  }

}

48個ものUFOから弾が放たれるようになって、
ゲームの難度がかなり上がってしまったようです。
そこで、UFOの層数を4層まで減らし、
層の間を今より広くとり、
弾とUFOの相対速度が、
上から数えた層数に比例するようにして、
弾の間隔を空けて、
002
弾の間隔を縫うようにうまくくぐり抜けて、
UFOを打ち落としましょう。


第1話へ   第3話へ

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