TNP資料室 @ ウィキ

ステージ情報によってマスの色を変える

最終更新:

kokeiro

- view
だれでも歓迎! 編集

ステージ情報によってマスの色を変える


 大改造はいります。今はまだ実装しませんが、ステージ情報というものは現在進行形でプレイしているステージの情報とメモリに保存されているステージ情報というものがあります。前者はプレイしているのでプレイヤーが移動することでどんどん内部の値が書き換えられます。後者はロードされるだけで書き換えられることはありません。書き換えられてしまったらプレイするたびにステージが別のものになってしまいます。この違いは重要ですのでよく覚えておきましょう。
 今回はプレイ中のステージ情報をグローバル指定したマス構造体配列に格納し、その配列の値を書き換えていくものとします。ステージ情報をロードするのはゲームを始めるとき、すなわちタイトルからゲームに移動するときとします。

  • main.hにLoadStage関数のプロトタイプ宣言を追加、Bord構造体配列の外部宣言を追加
  • struct.hにBord構造体の定義を追加
  • game.cppにBord構造体配列の本体の宣言を追加、Game関数のマスの描画の仕方を変更、LoadStage関数の定義を追加
  • title.cppにLoadStage関数を呼び出すように追加

main.h

...
#include"struct.h"			// 構造体定義のヘッダーを読み込む
extern SPlayer Player;			// プレイヤー構造体
extern SBord Bord[8][8];		// マス構造体配列

void MovePlayer();			// プレイヤーを移動する
void InitPlayer();			// プレイヤーを初期化する

void LoadStage();			// ステージ情報を読み込む*struct.h

struct.h

struct SPlayer{
	int x,y;
};

struct SBord{
	int Kind;
};

game.cpp

...
SPlayer Player;				// プレイヤー構造体の本体
SBord Bord[8][8];			// マス構造体配列の本体

// ゲームの関数
// 戻り値 なし  引数 なし
void Game(){
	for(int y=0 ; y<8 ; y++){
		for(int x=0 ; x<8 ; x++){
			DrawGraph(x*32+50,y*32+100,BordGraphic[ Bord[y][x].Kind ],FALSE);
		}
	}
...
}
...
void MovePlayer(){...}
...
void InitPlayer(){...}
...
// ステージ情報をロードする
void LoadStage(){
	int Stage1[8][8] = {
		{1,1,1,1,1,1,1,1},
		{1,0,0,0,0,0,0,1},
		{1,0,0,0,1,0,2,1},
		{1,0,0,1,0,0,0,1},
		{1,0,0,0,0,1,0,1},
		{1,0,0,1,0,0,0,1},
		{1,0,0,0,0,0,0,1},
		{1,1,1,1,1,1,1,1},
	};
	for(int y=0 ; y<8 ; y++){
		for(int x=0 ; x<8 ; x++){
			Bord[y][x].Kind = Stage1[y][x];
		}
	}
}

title.cpp

...
void Title(){
...
	if( Key[KEY_INPUT_Z] == 1 ){	// Zキーが押されたらゲームを始める
		GameState = 1;
		InitPlayer();		// プレイヤーの初期化をする
		LoadStage();		// ステージ情報を読み込む
	}
...

 これでマスの色が変えられるようになりました。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー