画像(logo)

HOME/[C言語DXライブラリ]ブロック崩しの作り方 目次/最終日 全ブロックの当たり判定

広告

[C言語 DXライブラリ ブロック崩しの作り方]
最終日 全ブロックの当たり判定

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

目次へ戻る

全ブロックの当たり判定

いよいよ最終日です。

全ブロックの当たり判定をやっていきたいと思います。

「for」で当たり判定を一周

全ブロックの当たり判定と言われると何やら難しそうな事をしそうですが、冒頭でもお話した通りブロック一つ分の当たり判定を全てのブロックに対して「for」ループなどで回すだけで大丈夫です。

if(block.flag == 1){
	if (ball_x >= block.x && ball_x <= block.x + BLOCK_WIDTH){
		if (ball_y >= block.y && ball_y <= block.y + 3){
			ball_y = block.y;
			y_speed *= -1;
			block.flag = 0;
		}
		else if (ball_y <= block.y + BLOCK_HEIGHT && ball_y >= block.y + BLOCK_HEIGHT - 3){
			ball_y = block.y + BLOCK_HEIGHT;
			y_speed *= -1;
			block.flag = 0;
		}
	}
}

前回やったブロック一つ分だけの当たり判定になります。

わかりやすいように上面、下面の判定部分だけ抜き出してみました。

この判定を「for」ループで全てのブロックに対して行っていきます。

for (count = 0;count < MAX_BLOCK;count++){
	if(blocks[count].flag == 1){
		if (ball_x >= blocks[count].x && ball_x <= blocks[count].x + BLOCK_WIDTH){
			if (ball_y >= blocks[count].y && ball_y <= blocks[count].y + COLLISION_SIZE){
				ball_y = blocks[count].y;
				y_speed *= -1;
				blocks[count].flag = 0;
				break;
			}
			else if (ball_y <= blocks[count].y + BLOCK_HEIGHT && ball_y >= blocks[count].y + BLOCK_HEIGHT - COLLISION_SIZE){
				ball_y = blocks[count].y + BLOCK_HEIGHT;
				y_speed *= -1;
				blocks[count].flag = 0;
				break;
			}
		}
	}
}

こちらが「for」ループで全ブロックに当たり判定を適用したものになります。

さきほどのブロック一つ分のものと比べてみるとわかると思いますが、

「block.x」

こちらが

「blocks[count].x」

こうなっているだけであとはほぼ一緒ですね!

難しく考えず「for」で回すだけで全ての判定は大丈夫です。

広告

角の判定

今回の作り方ですと一度判定があった場合、それ以上の判定はありえない上にその後がムダになるので当たり判定のループから「break」文で脱出しておりますが、この「break」文を削除してなおかつその後の「左面・右面」の判定部分を「else」で結ばなければ角に当たった時の判定もいちようしてくれます。

その場合どうなるかと言いますと単純に両方ともプラスマイナスが入れ替わるのでまっすぐ逆方向に反射するのですが、これを利用して角に当たった場合はランダムで

1・x方向のみプラスマイナスを反転

2・x,y方向両方のプラスマイナスを反転

3・y方向のみプラスマイナスを反転

などのようにすれば少しゲームに幅がでてくるかもしれません。

画像(cdxb_7_1)

当たり

画像(cdxb_7_2)

判定されます!

最終ソースになります。

最終ソース

お疲れ様でした!

大変長らくお疲れ様でした!

これで「ブロック崩しの作り方」を終わりにしたいと思います。

最後までお付き合いしていただいた方は感謝です!

完成ソースの方にコメントと共にささやかなスコアボックス・背景なども加えてみたのでもし興味ありましたらのぞいてみてください。

こちらのサイトを通して少しでもプログラミングの魅力を感じていただければ幸いです!

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓2017年06月16日発売↓

やさしいC 第5版 (「やさしい」シリーズ)

新品価格
¥2,700から
(2017/5/1 13:05時点)

↓2014年08月09日発売↓

新・明解C言語 入門編 (明解シリーズ)

新品価格
¥2,484から
(2017/5/1 13:08時点)

↓2016年02月20日発売↓

新・解きながら学ぶC言語

新品価格
¥2,160から
(2017/5/1 13:10時点)

↓2017年02月11日発売↓

C言語プログラミング基本例題88 88

新品価格
¥3,024から
(2017/5/1 13:12時点)

↓2016年12月15日発売↓

Cの絵本 第2版 C言語が好きになる新しい9つの扉

新品価格
¥1,490から
(2017/5/1 13:13時点)

↓2017年02月08日発売↓

新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,700から
(2017/5/1 13:15時点)