初めてのゲームで言ってみればカスゲーですが・・・
#include "DxLib.h"
#define Menu 0
#define Play 1
#define Help 2
#define Play2 3
typedef struct
{
int x; //ボールX座標
int y; //ボールY座標
int dx; //Xスピード
int dy; //Yスピード
int r; //円の直半径
int flag; //発射フラグ
}ch_t;
struct
{
int x; //ボールX座標
int y; //ボールY座標
int dx; //Xスピード
int dy; //Yスピード
int r; //円の直半径
int flag; //発射フラグ
}ball2;
int GetHitKeyStateAll_2(int KeyStateBuf[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i3)){
GameFlag=Play;
}
if( ( key[KEY_INPUT_DOWN]>3)){
menu=1;
key[KEY_INPUT_DOWN]=0;
}
}
if(menu==1){
SetFontSize(30);
DrawString(120,100,"EASY",BLACK);
SetFontSize(50);
DrawString(120,190,"HARD",randcolor);
SetFontSize(30);
DrawString(120,270,"操作方法",BLACK);
if( ( key[KEY_INPUT_Z]>3)){
GameFlag=Play2;
}
if( (key[KEY_INPUT_DOWN]>3)){
menu=2;
key[KEY_INPUT_DOWN]=0;
}
}
if(menu==2){
SetFontSize(30);
DrawString(120,100,"EASY",BLACK);
DrawString(120,190,"HARD",BLACK);
SetFontSize(50);
DrawString(120,270,"操作方法",randcolor);
if( ( key[KEY_INPUT_Z]>3)){
GameFlag=Help;
}
if( ( key[KEY_INPUT_DOWN]>3)){
menu=0;
key[KEY_INPUT_DOWN]=0;
}
}
ScreenFlip();
break;
case Play:
SetFontSize(20);
DrawGraph(0,0,back,FALSE);
DrawBox(0,0,640,480,WHITE,FALSE);
// 発射
if(key[KEY_INPUT_Z]==1&&scount==0){
ball.flag=1;
ball.dx = 7;
ball.dy = -7;
scount=1;
wcount=0;
}
// バー移動と発射前ボール移動
if(key[KEY_INPUT_RIGHT]){
if(ball.flag==0) ball.x += 8;
bx += 8;
}
if(key[KEY_INPUT_LEFT]){
if(ball.flag==0) ball.x -= 8;
bx -= 8;
}
// バー移動範囲と発射前ボール範囲
if(bx > 640-blong){
if(ball.flag==0) ball.x = 640-blong/2;
bx = 640-blong;
}
if(bx =1&&key[KEY_INPUT_Z]>=1){
ballmax=0;
SetDrawBright( 255 , 255 , 0 );
key[KEY_INPUT_X]=0;
key[KEY_INPUT_Z]=0;
}
// ボールの移動 壁との当たり判定
if(ball.flag==1){
// 移動距離計算
ball.x += ball.dx;
ball.y += ball.dy;
// 移動範囲
if(ball.x 640 - 5){
ball.dx *= -1;
}
if(ball.y = ball.y && bx = ball.x){
ball.y = by-10;
ball.dy *= -1;
}
}
//ブロックとの当たり判定
for(i=0;i=i*30&&ball.x>=j*82&&ball.x480&&wcount==0&&ballmax480&&wcount==0&&ballmax==3) ballmax+=1;
//ブロック絵画
for(i=0;i 640-blong){
if(ball2.flag==0) ball2.x = 640-blong/2;
bx = 640-blong;
}
if(bx 640 - 5){
ball2.dx *= -1;
}
if(ball2.y = ball2.y && bx = ball2.x){
ball2.y = by-10;
ball2.dy *= -1;
}
}
//ブロックとの当たり判定
for(i=0;i=i*30&&ball2.x>=j*82&&ball2.x480&&wcount==0&&ballmax480&&wcount==0&&ballmax==3) ballmax+=1;
//ブロック絵画
for(i=0;i<4;i++){
for(j=0;j<8;j++){
if(blockflag[i][j]==1){
DrawBox(j*82+5,i*30+10,j*82+64,i*30+30,blockcolor[i][j],TRUE);
}
}
}
//その他絵画
DrawBox(bx, by, bx + blong, by + 10, WHITE, TRUE); // バー絵画
DrawBox(bx + 3, by + 2, bx + blong - 3, by + 8, LGREEN, TRUE);
DrawCircle(ball2.x, ball2.y, ball2.r, WHITE, FALSE); // ボール絵画
if(ballmax<=3&&blocksum!=32)DrawFormatString(0,460,WHITE,"ボール残り%d",3-ballmax);//ボール残り数表示
if(ballmax==4&&blocksum!=32){
DrawGraph(0,0,back,FALSE);
SetFontSize(50);
DrawString(200,100,"GAME OVER",WHITE,TRUE);
SetFontSize(20);
DrawString(200,290,"×でメニューへ戻る",WHITE,TRUE);
if(key[KEY_INPUT_X]==1){
ball2.dx = 0;
ball2.dy = 0;
ball2.r = 5;
ball2.flag = 0;
bx = 270;
by = 460;
blong=100;
ballmax=0,wcount=0,scount=0;
ball2.x = 320;
ball2.y = 455;
blocksum=0;
//ブロックの色初期化
for(i=0;i<4;i++){
for(j=0;j<8;j++){
blockcolor[i][j]=GetColor(GetRand(255),GetRand(255),GetRand(255));
}
}
//ブロック初期化 表示フラグを1に
for(i=0;i<4;i++){
for(j=0;j<8;j++){
blockflag[i][j]=1;
}
}
GameFlag=Menu;
}
}
if(blocksum==32){
ClearDrawScreen();
ccolor=GetColor(GetRand(255),GetRand(255),GetRand(255));
SetFontSize(50);
DrawString(200,230,"クリアー",ccolor,TRUE);
SetFontSize(20);
DrawString(200,290,"×でメニューへ戻る",ccolor,TRUE);
if(key[KEY_INPUT_X]==1){
ball2.dx = 0;
ball2.dy = 0;
ball2.r = 5;
ball2.flag = 0;
bx = 270;
by = 460;
blong=100;
ballmax=0,wcount=0,scount=0;
ball2.x = 320;
ball2.y = 455;
blocksum=0;
//ブロックの色初期化
for(i=0;i<4;i++){
for(j=0;j<8;j++){
blockcolor[i][j]=GetColor(GetRand(255),GetRand(255),GetRand(255));
}
}
//ブロック初期化 表示フラグを1に
for(i=0;i<4;i++){
for(j=0;j<8;j++){
blockflag[i][j]=1;
}
}
GameFlag=Menu;
}
}
ScreenFlip();
break;
case Help:
DrawGraph(0,0,back,FALSE);
SetFontSize(40);
DrawString(230,0,"操作方法",black);
SetFontSize(20);
DrawString(200,50,"弾発射:○",black);
DrawString(200,80,"動作:矢印",black);
DrawString(200,130,"×でメニューにもどる",black);
if(key[KEY_INPUT_X])GameFlag=Menu;
ScreenFlip();
}
}
DxLib_End();
return 0;
}