また、どんな役割があるのでしょうか。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "DxLib.h"
int Key[256];
int gpUpdateKey()
{
char tmpKey[256];
GetHitKeyStateAll(tmpKey);
for (int i = 0; i < 256; i++)
(tmpKey[i] == 0) ? (Key[i] = 0) : Key[i]++;//キーのフレームの習得
return 0;
}
int idou[5][5] = {
{ 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1 },
};
int box[4][7][2], teki[5][5][2];
void init_box()
{
for (int j = 0; j < 7; j++) {
int w = (j - 3) * 100, h = 600;
for (int i = 4; --i >= 0; ) {
box[i][j][0] = w + 400, box[i][j][1] = h - 200;
w = w * 9 / 10, h = h * 9 / 10;
}
}
for (int i = 1; i <= 3; i++)
for (int j = 1; j <= 3; j++) {
teki[i][j][0] = (box[i - 1][j - 1][0] + box[i][j][0]) / 2 - 25;
teki[i][j][1] = (box[i - 1][j - 1][1] + box[i][j][1]) / 2 - 66;
}
}
int WINAPI WinMain(HINSTANCE hi, HINSTANCE hp, LPSTR cl, int cs)
{
SetGraphMode(780, 680, 32); // ウィンドウの大きさを指定
ChangeWindowMode(TRUE); // 全画面ではなくウインドウを使用
if (DxLib_Init() == -1) return -1; // DXライブラリ初期化処理
SetDrawScreen(DX_SCREEN_BACK); // 裏画面を使用する設定
init_box();//これによりint box()を呼び出して初期かしたbox[4][7][2], teki[5][5][2]を呼び出した。
//int boxColor = GetColor(160, 64, 64);//ステージの色
int nx = 2, ny = 2; // tekiのxとyでの初期位置
int px = teki[ny][nx][0], py = teki[ny][nx][1]; // tekiのx、y、zでの初期位置
int move = 0; // 移動状態
int gh[12]; //グラフィックハンドル格納用配列
// 5:正面、7:右向き、2:左向き、4:上向き、3:下向き、9:移動不可
LoadDivGraph("charall.png", 12, 3, 4, 49, 66, gh); //画像読み込み
int playerphoto = gh[5];
while (ProcessMessage() == 0) {
gpUpdateKey(); // キーの入力状態を取得
// カーソルキーの右が押されている
if (1)
if (idou[ny + 0][nx + 1] == 0) {//移動しようとする先が空いていれば
//移動可能
nx = nx + 1; //移動
playerphoto = gh[6];
move = 1;
}
if (Key[KEY_INPUT_LEFT] == 1)
if (idou[ny + 0][nx - 1] == 0) { //移動しようとする先が空いていれば
//移動可能
nx = nx - 1; //移動
playerphoto = gh[4];
move = 1;
}
ClearDrawScreen(); // 裏画面をクリア
if (move > 0 && ++move == 30) {
move = 0; playerphoto = gh[5]; // 移動終了
}
DrawGraph(teki[ny][nx][0], teki[ny][nx][1], playerphoto, FALSE);//tekiの画像が描画される最初の位置
ScreenFlip(); // 裏画面を表画面に反映
}
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}