#1
by Ouxiy » 4年前
コード:
#include "DxLib.h"
// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
SetGraphMode(1000, 480, 32); // ウィンドウの大きさを指定
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
//キー取得用配列
char key[256];
//x座標
int playerX = 20; // X座標
int playerY = 300; // Y座表
//グラフィックハンドル格納用配列
int gh[12];
LoadDivGraph("charall.png", 12, 3, 4, 49, 66, gh);
DrawGraph(playerX, playerY, gh[8], FALSE);// プレイヤーの画像を描画
while (ScreenFlip() == 0 && ProcessMessage() == 0 ) {
int 加算=70;
int b = 10;
// カーソルキーの右が押されている
if (CheckHitKey(KEY_INPUT_RIGHT)) {
playerX = playerX + 加算; // プレイヤーのX座標を加算
// 画面に出力
ScreenFlip();
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[2], true);//DrawGraphはLoadDivGraphにより12分割された配列の一つである、gh[8]を描画できる関数である。
}
if (CheckHitKey(KEY_INPUT_UP)) {
playerY = playerY - b; // プレイヤーのY座標を加算
// 画面に出力
ScreenFlip();
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[5], true);
}
if (CheckHitKey(KEY_INPUT_LEFT)) {
playerX = playerX - 加算; // プレイヤーのX座標を加算
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[8], true);
}
if (CheckHitKey(KEY_INPUT_DOWN)) {
playerY = playerY + b; // プレイヤーのY座標を加算
// 画面に出力
ScreenFlip();
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[11], true);
}
}
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}
ロックマンエグゼのような動きにするため、座標や配列を用いてキャラを動かそうと考えました。
そこで質問が二つあります。
一つは、+加算では、動画
ロックマンエグゼのようにきっちり一マス分動けないのですが、どんな関数をどのように使えば瞬間移動するように左右上下に動けるでしょうか?
二つ目は、keyを使いupで+bとするとy座標は下に下り、downで-bとするとyは上がるのですが、これは何故でしょうか?
コード:
if (CheckHitKey(KEY_INPUT_UP)) {
playerY = playerY - b; // プレイヤーのY座標を加算
と
コード:
if (CheckHitKey(KEY_INPUT_DOWN)) {
playerY = playerY + b; // プレイヤーのY座標を加算
です。
関数を調べたのですが、わからないままです。
[code]#include "DxLib.h"
// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
SetGraphMode(1000, 480, 32); // ウィンドウの大きさを指定
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
//キー取得用配列
char key[256];
//x座標
int playerX = 20; // X座標
int playerY = 300; // Y座表
//グラフィックハンドル格納用配列
int gh[12];
LoadDivGraph("charall.png", 12, 3, 4, 49, 66, gh);
DrawGraph(playerX, playerY, gh[8], FALSE);// プレイヤーの画像を描画
while (ScreenFlip() == 0 && ProcessMessage() == 0 ) {
int 加算=70;
int b = 10;
// カーソルキーの右が押されている
if (CheckHitKey(KEY_INPUT_RIGHT)) {
playerX = playerX + 加算; // プレイヤーのX座標を加算
// 画面に出力
ScreenFlip();
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[2], true);//DrawGraphはLoadDivGraphにより12分割された配列の一つである、gh[8]を描画できる関数である。
}
if (CheckHitKey(KEY_INPUT_UP)) {
playerY = playerY - b; // プレイヤーのY座標を加算
// 画面に出力
ScreenFlip();
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[5], true);
}
if (CheckHitKey(KEY_INPUT_LEFT)) {
playerX = playerX - 加算; // プレイヤーのX座標を加算
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[8], true);
}
if (CheckHitKey(KEY_INPUT_DOWN)) {
playerY = playerY + b; // プレイヤーのY座標を加算
// 画面に出力
ScreenFlip();
// 画面をクリア
ClearDrawScreen();
// プレイヤーの画像を描画
DrawGraph(playerX, playerY, gh[11], true);
}
}
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}[/code]
ロックマンエグゼのような動きにするため、座標や配列を用いてキャラを動かそうと考えました。
そこで質問が二つあります。
一つは、+加算では、動画[url=https://www.youtube.com/watch?v=Bx0HfBmMM0I&t=3s]ロックマンエグゼ[/url]のようにきっちり一マス分動けないのですが、どんな関数をどのように使えば瞬間移動するように左右上下に動けるでしょうか?
二つ目は、keyを使いupで+bとするとy座標は下に下り、downで-bとするとyは上がるのですが、これは何故でしょうか?
[code]if (CheckHitKey(KEY_INPUT_UP)) {
playerY = playerY - b; // プレイヤーのY座標を加算[/code]
と[code]if (CheckHitKey(KEY_INPUT_DOWN)) {
playerY = playerY + b; // プレイヤーのY座標を加算[/code]です。
関数を調べたのですが、わからないままです。