跳ね返りができません。
Posted: 2010年5月30日(日) 22:37
#include "DxLib.h"
typedef struct{
int x,y,z,img,flag,down,up;
}ch_t;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
ch_t ball;//構造体ball
ball.x=320;
ball.y=450;
ball.z=10;
ball.up=0;
ball.down=0;
int bx=270;//bx:バーのX座標
int bcolor; bcolor=GetColor(255,255,255);//バーの色の設定
char key[256];
SetDrawScreen( DX_SCREEN_BACK ) ;
int start=0;//発射確認
while(1){
if(ProcessMessage()==-1) break;
ClearDrawScreen();
GetHitKeyStateAll(key);
if(key[KEY_INPUT_SPACE]==1){
ball.flag=1;
}
if(key[KEY_INPUT_RIGHT]==1){ bx+=5; if(ball.flag==0) ball.x+=5;};//右キーでバーを右に+ボール操作
if(key[KEY_INPUT_LEFT]==1){ bx-=5; if(ball.flag==0) ball.x-=5;}//左キーでバーを左に+ボール操作
if(bx>540){ bx=540; if(ball.flag==0) ball.x=590;}
if(bx<0){ bx=0;if(ball.flag==0) ball.x=50;}
if(ball.flag==1){
if(ball.x==0&&ball.down==1&&ball.y>=5){
ball.x+=5;
ball.y-=5;
ball.up=0;
ball.down=1;
}
if(ball.x==640&&ball.down==0&&ball.y>=5){
ball.x-=5;
ball.y-=5;
ball.up=1;
ball.down=0;
}
if(ball.y<5&&ball.up==1){
ball.x-=5;
ball.y+=5;
ball.up=1;
ball.down=0;
}
else {
ball.x+=5;
ball.y-=5;
ball.up=1;
ball.down=0;
}
}
DrawBox(bx,460,bx+100,470,bcolor,TRUE);
DrawCircle(ball.x,ball.y,ball.z,bcolor,TRUE);
ScreenFlip();
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
スペースでボール発射
ball.upはボールが上へ向かっている状態
ball.downはボールが下へ向かっている状態です。
どうしたらいいか教えてください。
typedef struct{
int x,y,z,img,flag,down,up;
}ch_t;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
ch_t ball;//構造体ball
ball.x=320;
ball.y=450;
ball.z=10;
ball.up=0;
ball.down=0;
int bx=270;//bx:バーのX座標
int bcolor; bcolor=GetColor(255,255,255);//バーの色の設定
char key[256];
SetDrawScreen( DX_SCREEN_BACK ) ;
int start=0;//発射確認
while(1){
if(ProcessMessage()==-1) break;
ClearDrawScreen();
GetHitKeyStateAll(key);
if(key[KEY_INPUT_SPACE]==1){
ball.flag=1;
}
if(key[KEY_INPUT_RIGHT]==1){ bx+=5; if(ball.flag==0) ball.x+=5;};//右キーでバーを右に+ボール操作
if(key[KEY_INPUT_LEFT]==1){ bx-=5; if(ball.flag==0) ball.x-=5;}//左キーでバーを左に+ボール操作
if(bx>540){ bx=540; if(ball.flag==0) ball.x=590;}
if(bx<0){ bx=0;if(ball.flag==0) ball.x=50;}
if(ball.flag==1){
if(ball.x==0&&ball.down==1&&ball.y>=5){
ball.x+=5;
ball.y-=5;
ball.up=0;
ball.down=1;
}
if(ball.x==640&&ball.down==0&&ball.y>=5){
ball.x-=5;
ball.y-=5;
ball.up=1;
ball.down=0;
}
if(ball.y<5&&ball.up==1){
ball.x-=5;
ball.y+=5;
ball.up=1;
ball.down=0;
}
else {
ball.x+=5;
ball.y-=5;
ball.up=1;
ball.down=0;
}
}
DrawBox(bx,460,bx+100,470,bcolor,TRUE);
DrawCircle(ball.x,ball.y,ball.z,bcolor,TRUE);
ScreenFlip();
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
スペースでボール発射
ball.upはボールが上へ向かっている状態
ball.downはボールが下へ向かっている状態です。
どうしたらいいか教えてください。