#1
by cupa » 2年前
コード:
#include "../../DxLib/DxLib.h"
#define FIELD_SIZE 20
#define CHIP_SIZE 20
#define CHIP_TEX_NONE 0
#define CHIP_TEX_SHARP 1
#define CHIP_TEX_PLAYER 2
#define CHIP_TEX_FOOD 3
int mField[ FIELD_SIZE + 2 ][ FIELD_SIZE + 2 ] = {
//1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },//1,
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//2
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//3
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//4
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//5
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//6
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//7
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//8
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//9
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//10
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//11
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//12
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//13
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//14
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//15
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//16
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//17
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//18
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//19
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//20
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//21
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },//22
};
int getMinToMaxRand( int min, int max );
void init(); //初期化処理
void update(); //計算処理
void draw(); //描画処理
int mX, mY;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( TRUE );
SetDrawScreen( DX_SCREEN_BACK );
if ( DxLib_Init() == -1 ) return -1;
init();
while ( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
ClearDrawScreen();
update();
draw();
ScreenFlip();
}
WaitKey();
DxLib_End();
return 0;
}
int getMinToMaxRand( int min, int max ) {
int r;
r = GetRand( max - min ) + min;
return r;
}
void init() {
mX = getMinToMaxRand( CHIP_SIZE, FIELD_SIZE * CHIP_SIZE - CHIP_SIZE );
mY = getMinToMaxRand( CHIP_SIZE, FIELD_SIZE * CHIP_SIZE - CHIP_SIZE );
mField[ mY ][ mX ] = CHIP_TEX_PLAYER;//初期座標に書き込み
}
void update() {
}
void draw() {
//フィールドの描画
for ( int y = 0; y < FIELD_SIZE + 2; y++ ) {
for ( int x = 0; x < FIELD_SIZE + 2; x++ ) {
int chip = mField[ y ][ x ];
char* chipTex[ 4 ] = { " ", "#", "●", "◯" };
DrawString( x * CHIP_SIZE, y * CHIP_SIZE, chipTex[ chip ], GetColor( 255, 255, 255 ) );
}
}
//DrawFormatString( 100, 100, GetColor( 255, 255, 255 ), "%d,%d", mX, mY );
//DrawFormatString( 100, 100, GetColor( 255, 255, 255 ), "%d", mField[ mY ][ mX ] );
}
スネークゲームを作っているのですが、プレイヤーの「●」が表示されません。
壁である、「#」は表示されるのですが・・・
init()で初期化した後、その後に不正に書き換えられていないかなど確認してみましたが私の技術じゃわからず・・・
init()で指定した座標に「●」が表示されれば成功です。
よろしくおねがいします。
[code]
#include "../../DxLib/DxLib.h"
#define FIELD_SIZE 20
#define CHIP_SIZE 20
#define CHIP_TEX_NONE 0
#define CHIP_TEX_SHARP 1
#define CHIP_TEX_PLAYER 2
#define CHIP_TEX_FOOD 3
int mField[ FIELD_SIZE + 2 ][ FIELD_SIZE + 2 ] = {
//1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18,19,20,21,22
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },//1,
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//2
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//3
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//4
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//5
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//6
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//7
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//8
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//9
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//10
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//11
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//12
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//13
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//14
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//15
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//16
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//17
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//18
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//19
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//20
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },//21
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },//22
};
int getMinToMaxRand( int min, int max );
void init(); //初期化処理
void update(); //計算処理
void draw(); //描画処理
int mX, mY;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( TRUE );
SetDrawScreen( DX_SCREEN_BACK );
if ( DxLib_Init() == -1 ) return -1;
init();
while ( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
ClearDrawScreen();
update();
draw();
ScreenFlip();
}
WaitKey();
DxLib_End();
return 0;
}
int getMinToMaxRand( int min, int max ) {
int r;
r = GetRand( max - min ) + min;
return r;
}
void init() {
mX = getMinToMaxRand( CHIP_SIZE, FIELD_SIZE * CHIP_SIZE - CHIP_SIZE );
mY = getMinToMaxRand( CHIP_SIZE, FIELD_SIZE * CHIP_SIZE - CHIP_SIZE );
mField[ mY ][ mX ] = CHIP_TEX_PLAYER;//初期座標に書き込み
}
void update() {
}
void draw() {
//フィールドの描画
for ( int y = 0; y < FIELD_SIZE + 2; y++ ) {
for ( int x = 0; x < FIELD_SIZE + 2; x++ ) {
int chip = mField[ y ][ x ];
char* chipTex[ 4 ] = { " ", "#", "●", "◯" };
DrawString( x * CHIP_SIZE, y * CHIP_SIZE, chipTex[ chip ], GetColor( 255, 255, 255 ) );
}
}
//DrawFormatString( 100, 100, GetColor( 255, 255, 255 ), "%d,%d", mX, mY );
//DrawFormatString( 100, 100, GetColor( 255, 255, 255 ), "%d", mField[ mY ][ mX ] );
}
[/code]
スネークゲームを作っているのですが、プレイヤーの「●」が表示されません。
壁である、「#」は表示されるのですが・・・
init()で初期化した後、その後に不正に書き換えられていないかなど確認してみましたが私の技術じゃわからず・・・
init()で指定した座標に「●」が表示されれば成功です。
よろしくおねがいします。