第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の相対速度が、
上から数えた層数に比例するようにして、
弾の間隔を空けて、
弾の間隔を縫うようにうまくくぐり抜けて、
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 入門 サイト 基礎から応用まで
本サイトトップ