図形を→キーで動かしたいです。
Posted: 2010年5月24日(月) 21:26
DXライブラリを昨日始めた中学2年です。
13. 裏画面処理をして画像を動かす。
までやってみて、それまでのやり方などを使って、円を右矢印と左矢印のキーを押したら左右に動くようなものを作ってみたいのですが、うまくいきません。(イメージとしてはウィンベーダーゲーム)
うまくいかないというのを具体的に書くと、左キーがうまく動作しません。
なぜか教えてください。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
SetDrawScreen(DX_SCREEN_BACK);
int i=100,j=100;
int mugen;
int White,x;
White=GetColor(255,255,255);
while(CheckHitKey(KEY_INPUT_RIGHT)==0&&CheckHitKey(KEY_INPUT_LEFT)==0){
if( ProcessMessage() == -1 )
break ; // エラーが発生したらループを抜ける
}
while(CheckHitKey(KEY_INPUT_RIGHT)==1){
ClearDrawScreen();
if( ProcessMessage() == -1 )
break ; // エラーが発生したらループを抜ける
for(x=0;x<640;x+=20){
ClearDrawScreen();
DrawCircle(x,100,50,White,TRUE);
ScreenFlip();
if( ProcessMessage() == -1 )
break ;
}
}
while(CheckHitKey(KEY_INPUT_LEFT)==1){
ClearDrawScreen();
if( ProcessMessage() == -1 )
break ; // エラーが発生したらループを抜ける
int y;
for(y=0;y>0||y<640;y-=20){
ClearDrawScreen();
DrawCircle(y,100,50,White,TRUE);
ScreenFlip();
if( ProcessMessage() == -1 )
break ;
}
}
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
13. 裏画面処理をして画像を動かす。
までやってみて、それまでのやり方などを使って、円を右矢印と左矢印のキーを押したら左右に動くようなものを作ってみたいのですが、うまくいきません。(イメージとしてはウィンベーダーゲーム)
うまくいかないというのを具体的に書くと、左キーがうまく動作しません。
なぜか教えてください。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
SetDrawScreen(DX_SCREEN_BACK);
int i=100,j=100;
int mugen;
int White,x;
White=GetColor(255,255,255);
while(CheckHitKey(KEY_INPUT_RIGHT)==0&&CheckHitKey(KEY_INPUT_LEFT)==0){
if( ProcessMessage() == -1 )
break ; // エラーが発生したらループを抜ける
}
while(CheckHitKey(KEY_INPUT_RIGHT)==1){
ClearDrawScreen();
if( ProcessMessage() == -1 )
break ; // エラーが発生したらループを抜ける
for(x=0;x<640;x+=20){
ClearDrawScreen();
DrawCircle(x,100,50,White,TRUE);
ScreenFlip();
if( ProcessMessage() == -1 )
break ;
}
}
while(CheckHitKey(KEY_INPUT_LEFT)==1){
ClearDrawScreen();
if( ProcessMessage() == -1 )
break ; // エラーが発生したらループを抜ける
int y;
for(y=0;y>0||y<640;y-=20){
ClearDrawScreen();
DrawCircle(y,100,50,White,TRUE);
ScreenFlip();
if( ProcessMessage() == -1 )
break ;
}
}
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}