/*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); } } }