画像(logo)

HOME/[JAVA言語]ブロックパズルの作り方 目次/最終日 ブロック回転

[JAVA言語 ブロックパズルの作り方]
最終日 ブロック回転

広告

広告

↓発売日:2017年04月04日↓

Java 第2版 入門編 ゼロからはじめるプログラミング (プログラミング学習シリーズ)

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

目次へ戻る

ブロック回転

いよいよ最終日の今回はブロック回転をやっていきたいと思います。

ブロック回転の手順

回転の手順を簡単に説明すると・・・。

1・回転後のブロックを一時的に作る

2・そのブロックで当たり判定を行う

3・当たり判定OKなら回転

みたいな手順になります。

今までやってきた事の積み重ねみたいなものなのでけっこう簡単です。

変数として回転状態を表す変数

private int turn_point;

と回転後のブロックを表す

private int turn_block[][] = new int[BLOCK_HEIGHT][BLOCK_WIDTH];

を用意しておきます。

回転後の当たり判定

回転後の状態を保存したブロック「turn_block」の当たり判定を行います。

void my_collision_turn(){
	collision_flag = 0;

	for(int y=0;y<BLOCK_HEIGHT;y++){
		for(int x=0;x<BLOCK_WIDTH;x++){
			if(turn_block[y][x] != 0){
				if(stage[block_y + y][block_x + x] != 0){
					collision_flag = 1;
				}
			}
		}
	}
}

特に難しく考えずさきほど用意した回転後のブロックとの当たり判定をとっているだけですね。

それでは回転させていきます。

広告

右回転

ブロックを右回転させる「my_turn_right()」です。

void my_turn_right(){
	turn_point++;
	
	for(int y=0;y<BLOCK_HEIGHT;y++){
		for(int x=0;x<BLOCK_WIDTH;x++){
			turn_block[y][x] = 
				blocks[(block_id * BLOCK_HEIGHT) + y][(turn_point % 4 * BLOCK_WIDTH) + x];
		}
	}

	my_collision_turn();

	if(collision_flag == 0){
		for(int y=0;y<BLOCK_HEIGHT;y++){
			for(int x=0;x<BLOCK_WIDTH;x++){
				block[y][x] = turn_block[y][x];
			}
		}
	}
	else{
		turn_point--;
	}
}

まず回転状態を表す「turn_point」を増加させた上で一時的に回転後のブロックを作って「turn_block」に保存します。

turn_point++;
	
for(int y=0;y<BLOCK_HEIGHT;y++){
	for(int x=0;x<BLOCK_WIDTH;x++){
		turn_block[y][x] = 
			blocks[(block_id * BLOCK_HEIGHT) + y][(turn_point % 4 * BLOCK_WIDTH) + x];
	}
}

そしてさきほどの関数を使って回転後のブロックとの当たり判定を行います。

my_collision_turn();

ここで当たり判定OKであればブロックを入れ替える事によって回転をさせるというワケです。

if(collision_flag == 0){
	for(int y=0;y<BLOCK_HEIGHT;y++){
		for(int x=0;x<BLOCK_WIDTH;x++){
			block[y][x] = turn_block[y][x];
		}
	}
}
else{
	turn_point--;
}

もし回転できない場合は忘れずに「turn_point--」と回転状態を元にもどしてあげます。

左回転の時はマイナス側のループになるので「turn_point」は

turn_point += 3;

と増加させてあげます。

最後にキー入力に回転を加えます。

if(key.get_up() == 1){
	my_turn_right();
}

if(key.get_z() == 1){
	my_turn_left();
}

矢印キー上で右回転、「z」キーで左回転です。

画像(jb_7_1)

回転!!!

最終ソースになります。

最終ソース

お疲れ様でした!

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

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

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

後はほとんど見た目なので細かい説明は省略させて頂きます。

完成ソースにコメントを入れておいたので気になる方はチェックしてみてください!

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

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓発売日:2017年04月18日↓

Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで

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

↓発売日:2016年06月25日↓

新・明解Java入門 (明解シリーズ)

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

↓発売日:2016年08月31日↓

やさしいJava 第6版 (「やさしい」シリーズ)

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

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

本格学習 Java入門 [改訂3版]

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

↓発売日:2016年12月15日↓

Javaの絵本 第3版 Javaが好きになる新しい9つの扉

新品価格
¥1,706から
(2018/10/8 23:39時点)

↓発売日:2016年09月28日↓

やさしいJava 活用編 第5版 (「やさしい」シリーズ)

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