原因を知りたい、バグを解決したい。
Posted: 2019年8月14日(水) 20:37
環境
DXライブラリ
C言語
visyual studio 2019
以下はコードです。
は自分で書いたプログラムです。ですが、少し原因がわからないことがあります。
問題1、
とelseでKey[KEY_INPUT_RIGHT] == 1の時のみにでつけたのですが、他のUPやDOWN、LEFTの関数にも反映されます。
なぜでしょうか。理由が知りたいです。
質問2、バグに関してなのですが、キャラが下向きに行くとなんだかキャラが被って変に見えます。
解決方法となぜそうなったのか理由が知りたいです。
DXライブラリ
C言語
visyual studio 2019
以下はコードです。
#include "DxLib.h"
int Key[256]; // キーが押されているフレーム数を格納する
// キーの入力状態を更新する
int gpUpdateKey() {
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll(tmpKey); // 全てのキーの入力状態を得る
for (int i = 0; i < 256; i++) {
if (tmpKey[i] != 0) { // i番のキーコードに対応するキーが押されていたら
Key[i]++; // 加算
}
else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
return 0;
}
// プログラムは WinMain から始まります
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
SetGraphMode(1300, 680, 32); // ウィンドウの大きさを指定
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
//キー取得用配列
//char key[256];
//x座標
int playerX = 0; // X座標
int playerY = 300; // Y座表
int a[2][2];//移動制限のための配列の変数
//グラフィックハンドル格納用配列
int gh[12];
LoadDivGraph("charall.png", 12, 3, 4, 49, 66, gh);
DrawGraph(playerX, playerY, gh[8], FALSE);// プレイヤーの画像を描画
while (ScreenFlip() == 0 && ProcessMessage() == 0 && gpUpdateKey() == 0) {
int 加算 = 70;
int b = 70;
// カーソルキーの右が押されている
if (Key[KEY_INPUT_RIGHT] == 1) {
playerX = playerX + 加算; // プレイヤーのX座標を加算//左だけplayerX2とするとfor文ではないので、一回しか起きない、playerXだとplayerX = playerX + 加算より、加算されたあとのplayerXが再び右辺のplayerXに入り加算されるを繰り返すため∞に右に行けるのだ
// 画面に出力
ScreenFlip();
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[2], FALSE);//DrawGraphはLoadDivGraphにより12分割された配列の一つである、gh[8]を描画できる関数である。
}
else { DrawGraph(playerX, playerY, gh[8], FALSE); }//右を押されて加算されていく中で、もし加算されない間はキャラの描画はgh[8]にする。elseを付けることで条件を否定できる。
if (Key[KEY_INPUT_UP] == 1) {
playerY = playerY - b; // プレイヤーのY座標を加算
// 画面に出力
ScreenFlip();
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[5], FALSE);
}
if (Key[KEY_INPUT_LEFT] == 1) {
playerX = playerX - 加算; // プレイヤーのX座標を加算
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[1], FALSE);
}
if (Key[KEY_INPUT_DOWN] == 1) {
playerY = playerY + b; // プレイヤーのY座標を加算
// 画面に出力
ScreenFlip();
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[11], FALSE);
}
}
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}
問題1、
DrawGraph(playerX, playerY, gh[2], FALSE);//DrawGraphはLoadDivGraphにより12分割された配列の一つである、gh[8]を描画できる関数である。
}
else { DrawGraph(playerX, playerY, gh[8], FALSE); }//右を押されて加算されていく中で、もし加算されない間はキャラの描画はgh[8]にする。elseを付けることで条件を否定できる。
なぜでしょうか。理由が知りたいです。
質問2、バグに関してなのですが、キャラが下向きに行くとなんだかキャラが被って変に見えます。
解決方法となぜそうなったのか理由が知りたいです。