#include "../../DxLib/DxLib.h"
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define FIELD_BORDER 2
#define FIELD_WIDTH 10+FIELD_BORDER
#define FIELD_HEIGHT 20+FIELD_BORDER
#define TILE_NUM 10
#define TILE_SIZE 16
#define SHAPE_NUM 7
#define SHAPE_SIZE 4
//1=壁、9は何もなし
byte gField[FIELD_HEIGHT][FIELD_WIDTH]={
// 1 2 3 4 5 6 7 8 9 10 11 12
{7,7,7,7,7,7,7,7,7,7,7,7},//1
{7,9,9,9,9,9,9,9,9,9,9,7},//2
{7,9,9,9,9,9,9,9,9,9,9,7},//3
{7,9,9,9,9,9,9,9,9,9,9,7},//4
{7,9,9,9,9,9,9,9,9,9,9,7},//5
{7,9,9,9,9,9,9,9,9,9,9,7},//6
{7,9,9,9,9,9,9,9,9,9,9,7},//7
{7,9,9,9,9,9,9,9,9,9,9,7},//8
{7,9,9,9,9,9,9,9,9,9,9,7},//9
{7,9,9,9,9,9,9,9,9,9,9,7},//10
{7,9,9,9,9,9,9,9,9,9,9,7},//11
{7,9,9,9,9,9,9,9,9,9,9,7},//12
{7,9,9,9,9,9,9,9,9,9,9,7},//13
{7,9,9,9,9,9,9,9,9,9,9,7},//14
{7,9,9,9,9,9,9,9,9,9,9,7},//15
{7,9,9,9,9,9,9,9,9,9,9,7},//16
{7,9,9,9,9,9,9,9,9,9,9,7},//17
{7,9,9,9,9,9,9,9,9,9,9,7},//18
{7,9,9,9,9,9,9,9,9,9,9,7},//19
{7,9,9,9,9,9,9,9,9,9,9,7},//20
{7,9,9,9,9,9,9,9,9,9,9,7},//21
{7,7,7,7,7,7,7,7,7,7,7,7}//22
};
byte gShape[SHAPE_NUM][SHAPE_SIZE][SHAPE_SIZE]={
//Ⅰミノ
{
{0,0,0,0},
{0,0,0,0},
{1,1,1,1},
{0,0,0,0}
},
//Oミノ
{
{0,0,0,0},
{0,1,1,0},
{0,1,1,0},
{0,0,0,0}
},
//Sミノ
{
{0,0,0,0},
{0,1,1,0},
{1,1,0,0},
{0,0,0,0}
},
//Zミノ
{
{0,0,0,0},
{1,1,0,0},
{0,1,1,0},
{0,0,0,0}
},
//Jミノ
{
{0,0,0,0},
{1,0,0,0},
{1,1,1,0},
{0,0,0,0}
},
//Lミノ
{
{0,0,0,0},
{0,0,1,0},
{1,1,1,0},
{0,0,0,0}
},
//Tミノ
{
{0,0,0,0},
{0,1,0,0},
{1,1,1,0},
{0,0,0,0}
}
};
void put(int x,int y,int ang,byte type);
int gTile[TILE_NUM];
int gTileSz=TILE_SIZE*1.25;
int gX,gY;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
SetGraphMode(SCREEN_WIDTH,SCREEN_HEIGHT,32);
ChangeWindowMode(TRUE);
SetMainWindowText("Tetris");
if (DxLib_Init()==-1) return -1;
SetDrawMode(DX_SCREEN_BACK);
LoadDivGraph("../assets/tile.png",10,10,1,TILE_SIZE,TILE_SIZE,gTile);
for (int y=0;y<FIELD_HEIGHT;y++) {
for (int x=0;x<FIELD_WIDTH;x++) {
DrawExtendGraph(x*gTileSz,y*gTileSz,x*gTileSz+gTileSz,y*gTileSz+gTileSz,gTile[gField[y][x]],FALSE);
}
}
put(3,5,0,1);
ScreenFlip();
WaitKey();
DxLib_End();
return 0;
}
void put(int x,int y,int ang,byte type) {
for (int y=0;y<SHAPE_SIZE;y++) {
for (int x=0;x<SHAPE_SIZE;x++) {
if (gShape[type][y][x])
gField[y+gY][x+gX]=type;
}
}
}
その処理を行っている関数は一番下のput()という関数です。
このたびもよろしくお願いします。