キャラクターの移動ができたので次にSHIFTでの低速移動を実装しようとしてみたところ
うまくいかずに困っています。
どのように直したらいいのか、ヒントでもいいのでよろしければ教えてください。
使っているコンパイラーはbcc32です
//ライブラリ宣言
#include "DxLib.h"
//定数の宣言
#define PLAYER_SIZE 50
#define PLAYER_SIZE_HALF PLAYER_SIZE/2
#define PLAYER_MOVE_HIGH_SPEED 5
#define PLAYER_MOVE_LOW_SPEED 2.5
#define P_FirstY 240
#define P_FirstX 320
#define A_Firstx 0
#define A_Firsty 0
//WinMain関数
int main( HINSTANCE hInstance,
HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// DXライブラリの設定
// SetOutApplicationLogValidFlag(TRUE);
SetGraphMode(640,480,16);
ChangeWindowMode( true ) ;
if( DxLib_Init()==-1) return-1;
// SetMouseDispFlag( TRUE ) ;
SetDrawScreen(DX_SCREEN_BACK);
//変数の宣言と初期化
int player_position_x=P_FirstX;
int player_position_y=P_FirstY;
int Area_x=A_Firstx;
int Area_y=A_Firsty;
int area_graph=LoadGraph("windows help.png");
int player_graph=LoadGraph("Player.png");
int joypad_state=0;
//メインループ
while(ProcessMessage()==0)
{
//ジョイスティック&キー入力
joypad_state=GetJoypadInputState(DX_INPUT_KEY_PAD1);
if(KEY_INPUT_LSHIFT!=0){
if((joypad_state&PAD_INPUT_UP)!=0)player_position_y-=PLAYER_MOVE_LOW_SPEED;
if((joypad_state&PAD_INPUT_DOWN)!=0)player_position_y+=PLAYER_MOVE_LOW_SPEED;
if((joypad_state&PAD_INPUT_LEFT)!=0)player_position_x-=PLAYER_MOVE_LOW_SPEED;
if((joypad_state&PAD_INPUT_RIGHT)!=0)player_position_x+=PLAYER_MOVE_LOW_SPEED;
}
else{
if((joypad_state&PAD_INPUT_UP)!=0)player_position_y-=PLAYER_MOVE_HIGH_SPEED;
if((joypad_state&PAD_INPUT_DOWN)!=0)player_position_y+=PLAYER_MOVE_HIGH_SPEED;
if((joypad_state&PAD_INPUT_LEFT)!=0)player_position_x-=PLAYER_MOVE_HIGH_SPEED;
if((joypad_state&PAD_INPUT_RIGHT)!=0)player_position_x+=PLAYER_MOVE_HIGH_SPEED;
}
//キャラの範囲指定と背景移動
if(player_position_x>640){
player_position_x=640;
Area_x-=5;
}
if(player_position_x<0){
player_position_x=0;
Area_x+=5;
}
if(player_position_y>480){
player_position_y=480;
Area_y-=5;
}
if(player_position_y<0){
player_position_y=0;
Area_y+=5;
}
//キャラの描画
ClearDrawScreen() ;
DrawGraph(Area_x,Area_y,area_graph, true);
DrawGraph(player_position_x-PLAYER_SIZE_HALF,
player_position_y-PLAYER_SIZE_HALF, player_graph,true);
ScreenFlip();
// ESCキーが押されたらループから抜ける
if(CheckHitKey(KEY_INPUT_ESCAPE)==TRUE)break;
}
//終了処理
DxLib_End();
return 0;
}