- 締切済み
ブロック崩し
大学でプログラム習ってるんですが、全然できないのでこのままじゃまずいと思って勉強がてらゲームを作ってみる事にしました。ブロック崩しを作ろうとしたのですが、球を動かす機能を関数化する所とブロックの配置をどうすればいいかで悩んでます。どうすればよろしいでしょうか。DXライブラリで作ってます。 #include "DxLib.h" typedef struct _racket{ int g_racket; int g_x; int g_y; }racket; typedef struct _block{ int stone; int x; int y; }block; typedef struct _tama{ int ball; int x; int y; int vx; int vy; }tama; int Key; tama ta; void ball_attack() { ta.x = 300; ta.y = 450; ta.vx = 4; ta.vy = 4; ta.ball = LoadGraph("ball.bmp"); DrawGraph(ta.x, ta.y, ta.ball, TRUE); ta.x += ta.vx; ta.y += ta.vy; if(ta.x < 5 || ta.x > 635) ta.vx = -ta.vx; if(ta.y < 5 || ta.y > 475) ta.vy = -ta.vy; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { //tama ta; racket ra; //ta.x = 300; //ta.y = 450; //ta.vx = 4; //ta.vy = 4; ra.g_x = 300; ra.g_y = 420; ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ); // 透過色を変更 SetTransColor( 255 , 255 , 255 ) ; ra.g_racket = LoadGraph("ziki.bmp"); //ta.ball = LoadGraph("ball.bmp"); while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0) { // メッセージループに代わる処理をする if( ProcessMessage() == -1 ) { break ; // エラーが起きたらループを抜ける } ClearDrawScreen(); ball_attack(); /* DrawGraph(ta.x, ta.y, ta.ball, TRUE); ta.x += ta.vx; ta.y += ta.vy; if(ta.x < 5 || ta.x > 635) ta.vx = -ta.vx; if(ta.y < 5 || ta.y > 475) ta.vy = -ta.vy*/; // キー入力取得 Key = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; // 右を押していたら右に進む if( Key & PAD_INPUT_RIGHT ) ra.g_x += 3 ; // 左を押していたら左に進む if( Key & PAD_INPUT_LEFT ) ra.g_x -= 3 ; // 読みこんだグラフィックを画面左上に描画 DrawGraph( ra.g_x , ra.g_y , ra.g_racket , TRUE ) ; ScreenFlip(); } WaitKey(); DxLib_End(); return 0; }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BellBell
- ベストアンサー率54% (327/598)
ちゃんと見たわけではないけど、ラケットさえ動かせてないんじゃないかな? まずは、ラケットを動かしてみましょう。 ラケットがとりあえず動いたら、ラケットがスムーズに動くようにタイミングを計りましょう。 (タイマー処理) とりあえず、そこからかな。
補足
ラケットは動かせます。 ラケットのタイマー処理とは何の事でしょうか?申し訳ございません。