画像(logo)

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

広告

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

広告

↓発売日:2018年09月22日↓

たった1日で基本が身に付く! C言語 超入門

新品価格
¥2,225から
(2018/10/8 23:10時点)

目次へ戻る

全ブロックの当たり判定

いよいよ最終日です。

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

「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□

広告

↓発売日:2016年02月29日↓

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

新品価格
¥2,462から
(2018/10/8 23:25時点)

↓発売日:2018年06月22日↓

スッキリわかるC言語入門

新品価格
¥2,916から
(2018/10/8 23:15時点)

↓発売日:2018年03月09日↓

C言語本格入門 ~基礎知識からコンピュータの本質まで

新品価格
¥3,218から
(2018/10/8 23:16時点)

↓発売日:2017年06月14日↓

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

新品価格
¥2,700から
(2018/10/8 23:17時点)

↓発売日:2018年05月21日↓

作って身につく C言語入門

新品価格
¥2,462から
(2018/10/8 23:18時点)

↓発売日:2017年12月07日↓

新・標準プログラマーズライブラリ C言語 ポインタ完全制覇

新品価格
¥2,678から
(2018/10/8 23:19時点)

↓発売日:2017年02月08日↓

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

新品価格
¥2,700から
(2018/10/8 23:20時点)

↓発売日:2017年09月26日↓

かんたん C言語 [改訂2版] (プログラミングの教科書)

新品価格
¥2,916から
(2018/10/8 23:22時点)