プログラミング基礎/2016/2016年12月22日
をテンプレートにして作成
開始行:
*演習ヒント [#r862151a]
クラスの構成:
BlockBreakクラス⇒ゲーム本体のクラス,Bar,Ball,Blockのイ...
Barクラス,Ballクラス,Bloackクラス⇒それぞれ名前の通り
**BlockBreak + ヒント [#qd590c5b]
/**
* ブロック崩し
*/
class BlockBreak {
//ブロック数設定
final int blockNumX = 20; //...
final int blockNumY = 5; //...
final int blockNumAll = blockNumX * blockNumY; //...
//ブロック関連の初期値や固定値の設定
final int blockX_init = 0; //...
int blockX = 0; //...
int blockY = 35; //...
// 各オブジェクト定義
Ball ball; //...
Bar bar; //...
Block[][] block; //...
// コンストラクタ
BlockBreak() {
// ボールの生成
ball = new Ball(width / 4, height / 3, 2, 5, 8);
// バーの生成
bar = new Bar(width / 5, height / 100);
// ブロック配列を生成
block = new Block[blockNumY][blockNumX];
// ブロックのサイズを決定
int blockSizeX = width / blockNumX;
int blockSizeY = height / 30;
// ブロック群を生成 [回答欄]
//2次元(X,Y方向)にブロックを置いていくので,2重fo...
for(int y = ???){
for(int x = ???){
block[y][x] = new Block(blockX + x * blockSizeX,...
}
}
}
/** 1フレームごとの描画処理 */
void draw() {
int breakBlockNum = 0; // 壊れているブロッ...
// 全てのブロックの破壊判定と描画 [回答欄]
// クリアしているかの判定のため、壊れているブロック...
// ヒント: ブロックが消滅している場合、ブロックの衝...
//2重forループを使ってすべてのブロックに対して壊れて...
//壊れてなかったらそのブロックを描く
for(int y = ???){
for(int x = ???){
if (block[y][x].isBroken()){
???
}else{
block[y][x].???();
block[y][x].collision(ball);
}
}
}
// ブロックが残っているならばボール移動
if(breakBlockNum < blockNumAll) {
ball.move(); // ボール...
if(ball.collision() == false) { // 壁との...
fill(0, 0, 0);
textSize(35);
textAlign(CENTER, CENTER);
text("Game Over!!", width / 2, height / 2);
}
else {
bar.collision(ball); // バー...
}
}
else { // ブロックがすべて壊れているならば
textSize(35);
textAlign(CENTER, CENTER); // テキ...
text("Clear!!", width / 2, height / 2); // クリ...
}
fill(0, 0, 0);
textSize(12);
textAlign(CENTER, CENTER);
text("Block:" + (blockNumAll - breakBlockNum), width...
bar.show(); // ボールを打ち返すためのボー...
ball.show(); // ボールの描画
}
}
終了行:
*演習ヒント [#r862151a]
クラスの構成:
BlockBreakクラス⇒ゲーム本体のクラス,Bar,Ball,Blockのイ...
Barクラス,Ballクラス,Bloackクラス⇒それぞれ名前の通り
**BlockBreak + ヒント [#qd590c5b]
/**
* ブロック崩し
*/
class BlockBreak {
//ブロック数設定
final int blockNumX = 20; //...
final int blockNumY = 5; //...
final int blockNumAll = blockNumX * blockNumY; //...
//ブロック関連の初期値や固定値の設定
final int blockX_init = 0; //...
int blockX = 0; //...
int blockY = 35; //...
// 各オブジェクト定義
Ball ball; //...
Bar bar; //...
Block[][] block; //...
// コンストラクタ
BlockBreak() {
// ボールの生成
ball = new Ball(width / 4, height / 3, 2, 5, 8);
// バーの生成
bar = new Bar(width / 5, height / 100);
// ブロック配列を生成
block = new Block[blockNumY][blockNumX];
// ブロックのサイズを決定
int blockSizeX = width / blockNumX;
int blockSizeY = height / 30;
// ブロック群を生成 [回答欄]
//2次元(X,Y方向)にブロックを置いていくので,2重fo...
for(int y = ???){
for(int x = ???){
block[y][x] = new Block(blockX + x * blockSizeX,...
}
}
}
/** 1フレームごとの描画処理 */
void draw() {
int breakBlockNum = 0; // 壊れているブロッ...
// 全てのブロックの破壊判定と描画 [回答欄]
// クリアしているかの判定のため、壊れているブロック...
// ヒント: ブロックが消滅している場合、ブロックの衝...
//2重forループを使ってすべてのブロックに対して壊れて...
//壊れてなかったらそのブロックを描く
for(int y = ???){
for(int x = ???){
if (block[y][x].isBroken()){
???
}else{
block[y][x].???();
block[y][x].collision(ball);
}
}
}
// ブロックが残っているならばボール移動
if(breakBlockNum < blockNumAll) {
ball.move(); // ボール...
if(ball.collision() == false) { // 壁との...
fill(0, 0, 0);
textSize(35);
textAlign(CENTER, CENTER);
text("Game Over!!", width / 2, height / 2);
}
else {
bar.collision(ball); // バー...
}
}
else { // ブロックがすべて壊れているならば
textSize(35);
textAlign(CENTER, CENTER); // テキ...
text("Clear!!", width / 2, height / 2); // クリ...
}
fill(0, 0, 0);
textSize(12);
textAlign(CENTER, CENTER);
text("Block:" + (blockNumAll - breakBlockNum), width...
bar.show(); // ボールを打ち返すためのボー...
ball.show(); // ボールの描画
}
}
ページ名: