第13講 シューティングゲーム開発(完成まで)
第2話 画像への変更など
第1話課題解答例
syjinkou.cpp
#include"main.h"
void syujinkou() {
  if (CheckHitKey(KEY_INPUT_RIGHT) != 0 && syujinkou_x + syjinkou_yokohaba <= 800) {
    syujinkou_x = syujinkou_x + syujinkou_hayasa; //syujinkou_x:主人公の横位置 syujinkou_hayasa:移動の速さ
  }
  if (CheckHitKey(KEY_INPUT_LEFT) != 0 && syujinkou_x >= 0) {
    syujinkou_x = syujinkou_x - syujinkou_hayasa; //syujinkou_x:主人公の横位置 syujinkou_hayasa:移動の速さ
  }
  int syujinkou_gazou= LoadGraph("画像/h00.png"); //ヒロイン画像を読み込み、画像の出席番号を付けて番号を箱に収納
  DrawGraph(syujinkou_x, syujinkou_y, syujinkou_gazou, true); //ヒロインを描く
  //syujinkou_x:主人公の左端の横位置 syjinkou_yokohaba:主人公の横幅 syjinkou_tatehaba:主人公の縦幅
  DeleteGraph(syujinkou_gazou); //ヒロイン出席番号収納箱の削除
}
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 (arunasi[i][j] == 1) {
        int ufo_gazou = LoadGraph("画像/ufo.png"); //UFO画像を読み込み出席番号を付けて番号を箱に収納
        DrawGraph(ufo_yokohaba*j, ufo_tatehaba*i, ufo_gazou, true); //UFO画像を描く
        DeleteGraph(ufo_gazou); //UFO出席番号収納箱の削除
      }
    }
  }
}
syokika.cpp
#include"main.h"
void syokika() {
  int i, j;
  for (i = 0; i < ufo_tatesu; i++) {
    for (j = 0; j < ufo_yokosu; j++) {
      arunasi[i][j] = 1;
    }
  }
  ufo_x = 0; //ufoの最初の横位置
  ufo_y = 100; //ufoの最初の横位置
  syjinkou_tatehaba = 172; //主人公(ヒロイン)の縦幅
  syjinkou_yokohaba = 92; //主人公(ヒロイン)の横幅
  syujinkou_x = 0; //主人公(ヒロイン)の最初の横位置
  syujinkou_y = 1000- syjinkou_tatehaba; //主人公(ヒロイン)の最初の縦位置
  syujinkou_hayasa = 8; //主人公(ヒロイン)の速さ
  tama_x = syjinkou_yokohaba/2; //弾の初期の横位置
  tama_y = 1000-syjinkou_tatehaba; //弾の初期の縦位置
  tama_x_houkou = 1; //弾の横方向の最初の向き
  tama_y_houkou = -1; //弾の縦方向の最初の向き
  tama_hankei = 6; //弾の大きさ(半径)
  tama_yokohoukouhayasa = 0; //弾の横方向の速さ
  tama_tatehoukouhayasa = 12; //弾の縦方向の速さ
  aki = 100; //天井から主人公(ヒロイン)上端までの距離
  kiiro = GetColor(255, 255, 0); //黄色に出席番号を割り振りその番号を箱kiiroに収納
  aka = GetColor(255, 0, 0); //黄色に出席番号を割り振りその番号を箱kiiroに収納
  midori = GetColor(0, 255, 0); //緑色に出席番号を割り振りその番号を箱midoriに収納
  ao = GetColor(0, 0, 255); //青色に出席番号を割り振りその番号を箱aoに収納
  siro = GetColor(255, 255, 255); //白色に出席番号を割り振りその番号を箱siroに収納
  mizuiro = GetColor(0, 200, 200); //水色に出席番号を割り振りその番号を箱mizuiroに収納
  tokuten = 0; //とくてん 0に初期化
  kosu = ufo_yokosu*ufo_tatesu; //UFO個数 ufo_yokosu:UFO横数 ufo_tatesu:UFO縦数
  ufo_yokohaba = 800 / ufo_yokosu; //ufo_yokohaba:UFO横幅 ufo_yokosu:主人公(ヒロイン)横数
  ufo_tatehaba = 2*ufo_yokohaba/3; //ufo_tatehaba:主人公(ヒロイン)縦幅 主人公(ヒロイン)縦幅
  syujinkou_hayasa = 8; //主人公(ヒロイン)の速さ
}
saisyonogamen.cpp
#include"main.h"
void saisyonogamen() {
  DrawBox(0, 0, 800, 1000, siro, true);
  int gazou;
  gazou = LoadGraph("画像/02.png");
  DrawGraph(200, 100, gazou, false);
  if (CheckHitKey(KEY_INPUT_A) != 0) {

  }
  if (CheckHitKey(KEY_INPUT_B) != 0) {

  }
  if (CheckHitKey(KEY_INPUT_C) != 0) {

  }
  if (syjinkou_yokohaba == 0) { //AまたはBまたはCを押し忘れている場合には、初心者モードに設定

  }
  if (CheckHitKey(KEY_INPUT_Z) != 0) {
    /*
    ongaku = LoadSoundMem("音/00.wav"); //BGMの出席番号を箱に入れる
    PlaySoundMem(ongaku, DX_PLAYTYPE_LOOP); // BGMを再生する
    */
    m = 1;
  }
}

次の課題です。
UFOの縦幅をufo_tatehaba = 2*ufo_yokohaba/3にしたために、
弾が当たってもUFOは消えません。
atarihantei.cppの大幅な変更が必要です。
粘り強く取り組みましょう。
とりあえず、左端のUFOがすべて消えれば、
第3話の課題は成就(じょうじゅ−なしとげること)です。


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