ソースを載せてみる(テスト)

アバター
Ultimate
記事: 38
登録日時: 15年前
住所: 埼玉県
連絡を取る:

ソースを載せてみる(テスト)

投稿記事 by Ultimate » 15年前

以前3時間で作ったブロック崩し

初めてのゲームで言ってみればカスゲーですが・・・

CODE:

#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;
}

アバター
Ultimate
記事: 38
登録日時: 15年前
住所: 埼玉県
連絡を取る:

Re: ソースを載せてみる(テスト)

投稿記事 by Ultimate » 15年前

このソースのプラグインすごいですね!!!

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前

Re: ソースを載せてみる(テスト)

投稿記事 by Dixq (管理人) » 15年前

ソース見やすいですね^^

アバター
Ultimate
記事: 38
登録日時: 15年前
住所: 埼玉県
連絡を取る:

Re: ソースを載せてみる(テスト)

投稿記事 by Ultimate » 15年前

ありがとうございます!!!

一応配布してます。。。
http://www5.pf-x.net/~euler-1707/html/d ... kbreak.php

下のURLは今作ってる弾幕ゲームです。
EASYしかまだ遊べないのと、多少変なところがありますがよかったら遊んでみてください。
パスワードは全角で
2010
です。
http://www1.axfc.net/uploader/Sc/so/163837