/*HTMLなくてもappletviewerで.javaを直接指定できるよ、
*/
//import Applet1_obj.*;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Applet1 extends Applet implements Runnable{
final int SCREEN_MAX_X = 300;
final int SCREEN_MAX_Y = 400;
final int SCREEN_LOW_X = 0;
final int SCREEN_LOW_Y = 0;
final Applet1 screen_obj = this;
private int mouse_x;
private int mouse_y;
private Boll boll;
private Bar bar;
final int BLOCK_KAZU = 25;
private Block[] block = new Block[BLOCK_KAZU];
private boolean isstop = false;
private int clear_wait = 30;
//
private static int score = 0;
//セット
public void init(){
setBackground(new Color(1,1,1));
//それぞれのオブジェクトの位置配置
resize(SCREEN_MAX_X,SCREEN_MAX_Y);
bar = new Bar(getWidth() / 2,getHeight() - 50);
boll = new Boll(getWidth() / 2,bar.y - 20);
int k = 0;
//レイアウトっぽくなる
for(int i = 0;i < 5;i++){
for(int j = 0;j < 5;j++){
block[k] = new Block();
block[k].score = score;
block[k].xy_set(j * block[i].WIDTH,i * block[i].HEIGHT);
k++;
}
}
Thread th = new Thread(this);
th.start();
//マウスイベントリスナを登録する
addMouseMotionListener(new MouseMotionAdapter(){
//マウス移動(mouseMoved)イベントメソッドを定義する
public void mouseMoved(MouseEvent me){
//MouseEventオブジェクトから現在のカーソルの
//位置(X軸・Y軸)を取得して変数に代入
mouse_x = me.getX();
mouse_y = me.getY();
}
});
}
//同時進行(監視)スレッド
public void run() {
while (true) {
if(! isstop)repaint();
try {
//1000ミリ秒スリープ(ストップ)
Thread.sleep(10);
}
catch (Exception err) {}
}
}
//paintメソッドをオーバーライド
public void paint(Graphics g){
//ボール
boll.draw(g);
boll.move();
boll.screenOut(getWidth()-boll.WIDTH/3,getHeight());
boll.hitObj(bar);
//ブロック描画と当たり判定
for(int i = 0;i < BLOCK_KAZU;i++){
if(! block[i].isdie){
boll.hitObj(block[i]);
block[i].move();
block[i].draw(g);
}
//block群には入ってるけどこっちとは共有されないみたいなので
//もどす。
score = block[BLOCK_KAZU-1].score;
}
boll.hit_time_cal();
//バー
bar.x = mouse_x;
bar.draw(g);
showStatus(Integer.toString(score));
clear();
gameover();
}
void clear(){
boolean isclear = true;
//全てのブロックを壊してるかどうか、
for(int i = 0;i < BLOCK_KAZU;i++){
if(! block[i].isdie){
isclear = false;
}
}
//クリアした
if(isclear){
clear_wait--;
if(clear_wait < 0){
isstop = true;
JOptionPane.showMessageDialog(this, "クリアしました");
//ウィンドウを隠す(実際は白画面)
setVisible(false);
}
}
}
void gameover(){
boolean sw = false;
if(boll.y > getHeight() + 20)sw = true;
for(int i = 0; i < BLOCK_KAZU;i++){
if(block[i].y > getHeight())sw = true;
}
if(sw){
isstop = true;
JOptionPane.showMessageDialog(this, "ゲームーバーになりました");
setVisible(false);
}
}
}