DXライブラリでマップが作れません・・・。
今DXライブラリとVisualC++2008を使ってゲーム(アクション)を作っているのですがマップが作れません・・・、構造体?をつかってマップの描写は成功したのですが、0のところに判定を持たせることができません・・・。どのようにすればいいのでしょうか?色々試してみてもできず困っています。
ソースの一部
#include"DxLib.h"
#define MAP_SIZE 64 // マップチップ一つのドットサイズ
#define MAP_WIDTH 10 // マップの幅
#define MAP_HEIGHT 8 // マップの縦長さ
int MapData[ MAP_HEIGHT ][ MAP_WIDTH ] =
{
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
} ;
void HYOUZI(void);
void SYOKIKA(void);
struct dousa{
int power;
int flag;
};
struct dousa jump;
struct zahyou {
int x,y;
int img;
int flag;
int muki_y;
int muki_x;
int x1;
int x2;
int x3;
int x4;
int y1;
int y2;
int y3;
int y4;
};
struct zahyou haikei;
struct charcter {
int x,y;
int img;
int flag;
};
struct charcter ziki;
struct map;
//初期化
void SYOKIKA(void){
jump.flag=0;
ziki.x=100;
ziki.y=100;
ziki.img=LoadGraph("red_player.bmp");
}
//背景
void HYOUZI(void){
int i,j;
for( i = 0 ; i < MAP_HEIGHT ; i ++ )
{
for( j = 0 ; j < MAP_WIDTH ; j ++ )
{
if( MapData[ i ][ j ] == 0 )
{
DrawBox( j * MAP_SIZE , i * MAP_SIZE ,
j * MAP_SIZE + MAP_SIZE , i * MAP_SIZE + MAP_SIZE ,
GetColor( 255 , 0 , 0 ) , TRUE ) ;
}
}
}
DrawGraph(ziki.x,ziki.y,ziki.img,TRUE);
ScreenFlip();
}
//動き
void ugoki(void){
int OldX , OldY ;
OldX = ziki.x ;
OldY = ziki.y ;
if (CheckHitKey(KEY_INPUT_RIGHT) == 1){
ziki.x=ziki.x+4;
}
if (CheckHitKey(KEY_INPUT_RIGHT) == 1)
if (CheckHitKey(KEY_INPUT_Z) == 1)
{
ziki.x=ziki.x+8;
}
if (CheckHitKey(KEY_INPUT_LEFT) == 1){
ziki.x=ziki.x-4;
}
if (CheckHitKey(KEY_INPUT_LEFT) == 1)
if (CheckHitKey(KEY_INPUT_Z) == 1)
{
ziki.x=ziki.x-8;
}
if(ziki.x>640){
ziki.x=-10;
}
if(ziki.x<-10){
ziki.x=640;
}
//ジャンプ
jump.power-=1;
ziki.y -=jump.power;
if(ziki.y>400){
jump.power=0;
ziki.y=400;
jump.flag=0;
}
if (CheckHitKey(KEY_INPUT_DOWN) == 1 && jump.flag == 0){
jump.power=30;
jump.flag=1;
}
if (CheckHitKey(KEY_INPUT_UP) == 1 && jump.flag == 0){
jump.power=20;
jump.flag=1;
}
if( MapData[ ziki.x ][ ziki.y ] == 0 )
{
ziki.x = OldX ;
ziki.y = OldY ;
}
}
int WINAPI WinMain ( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
ChangeWindowMode(TRUE);
if(DxLib_Init()==-1)
{
return -1;
}
SYOKIKA();
SetDrawScreen(DX_SCREEN_BACK);
while(ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0){
HYOUZI();
ugoki();
ClearDrawScreen();
}
DxLib_End();
return(0);
}
分かる人がいたらぜひ教えてください(o_ _)o
お礼
ありがとうございます! describe-keyですね。 これをやってみると、何も表示されません(キー待ち状態から解除できません)でした。 つまり、Ubuntu側のAnthyが、Emacsに行く前にこのキーイベントを奪い取っている?と思います。 では、Ubuntuの設定を変えればいいか?というと、Emacs以外のすべてのアプリに影響してしまうので、それは影響が大きすぎるので、できません。 ううーん、困りましたね。 C-\で我慢しようかと思います。 ありがとうございました。