1.下記、main.cpp、Stage.cpp、Stage.hを作成しましたが、いかがなのでしょうか。
0を何もない場所、9を壁としましたが、壁の表示には使っていません。
色々と情報はありますが、下記wikiのプレイフィールドは、壁以外の0の場所とはことなるのでしょうか。
壁とブロックの計算は、必要だと思っていますが、よくわかってないです。
http://wiki.game-develop.com/index.php? ... C#l8e30baf
2.また、Stage.cppとは別にBlocs.cppを作ろうと思っているのですが、いかがなのでしょうか。
分ける必要はないのでしょうか。
メリットデメリット等がよくわかっていません。
//インクルード_dxライブラリ
#include "DxLib.h"
//インクルード_ローカル
#include "Stage.h"
//グローバル変数
/* ************************************** *
* 関数名 :WINAPI WinMain *
* 概要 :ここからプログラムが動き出す *
* 戻り値 :0 *
* ************************************** */
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
//MessageBoxの戻り値用変数
int flag;
//ウィンドウモードに変更
ChangeWindowMode(true);
//DXライブラリ初期化
if (DxLib_Init() != 0)
{
//エラーメッセージを表示
flag = MessageBox(
NULL ,
TEXT("DxLib_Init() err") ,
TEXT("Err") ,
MB_OK);
return -1;
}
//ステージの初期化
Stage_Initialize();
while( 1 ){
// 裏画面の内容を表画面に表示
if( ScreenFlip() != 0 ){
//エラーメッセージを表示
flag = MessageBox(
NULL ,
TEXT("ScreenFlip err") ,
TEXT("Err") ,
MB_OK);
break;
}
//メッセージ処理
if( ProcessMessage() != 0 ){
//エラーメッセージを表示
/*flag = MessageBox(
NULL ,
TEXT("ProcessMessage err(End)") ,
TEXT("Err") ,
MB_OK);
*/
break;
}
// 画面を初期化
if( ClearDrawScreen() != 0 ){
//エラーメッセージを表示
flag = MessageBox(
NULL ,
TEXT("ClearDrawScreen err") ,
TEXT("Err") ,
MB_OK);
break;
}
//ステージの描画
Stage_Draw();
}
//ステージの終了処理
void Stage_Finalize();
//DXライブラリ使用の終了処理
DxLib_End();
//ソフトの終了
return 0;
}
//インクルード_dxライブラリ
#include "DxLib.h"
//インクルード_ローカル
#include "Stage.h"
//グローバル変数
static const int MAX_WIDTH = 12; //壁を含めたステージの横幅
static const int MAX_HEIGHT = 21; //壁を含めたステージの高さ
static const int Block_Size = 20;
static Stage_t Stage;
/*********************************************************
宣言 : Stage_Initialize()
概略 : Stage.Stage[width][height]の値の初期化とステージ画像の初期化
引数 : なし
戻り値 : なし
*}********************************************************/
void Stage_Initialize(){
int width;
int height;
//Stageの壁を9に、それ以外を0に初期化
for(width = 0; width < MAX_WIDTH; width++)
{
for(height = 0; height < MAX_HEIGHT; height++)
{
if (width == 0 || width == MAX_WIDTH - 1 || height == 0)
{
Stage.Stage[width][height] = 9;
} else {
Stage.Stage[width][height] = 0;
}
}
}
Stage.Handle_stage = LoadGraph(TEXT("C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/block_kabe.png"));
}
/************************************************
宣言 : Stage_Draw()
概略 : ステージの描画処理
引数 : なし
戻り値: なし
*}*********************************************/
void Stage_Draw(){
int width;
int height;
int x = 0;
int y = 0;
DrawGraph( 0, 0, Stage.Handle_stage, FALSE);
for(height = 0; height < MAX_HEIGHT; height++)
{
DrawGraph( 0, y, Stage.Handle_stage, TRUE );
DrawGraph( (MAX_WIDTH - 1) * Block_Size, y, Stage.Handle_stage, TRUE );
y += Block_Size;
}
for(width = 0; width < MAX_WIDTH; width++)
{
DrawGraph( x, (MAX_HEIGHT - 1) * Block_Size, Stage.Handle_stage, TRUE );
x += 20;
}
}
/************************************************
宣言 : Stage_Finalize()
概略 : ステージの終了処理
引数 : なし
戻り値: なし
*}*********************************************/
void Stage_Finalize(){
DeleteGraph(Stage.Handle_stage);
}