上記のサイトを参考に、2次元マップを作りブロック崩しを作成したのですが、ブロックを崩す玉が動きません。おそらくスレッドの部分に問題があってアニメーションが出ないのだと思いますが、どこがおかしいかわかりません。どなたかご協力お願いします。
ソースは長いので次の書き込みに続きます。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class TileBasedGame extends Applet implements Runnable{
Thread th;
//マップの作成
char map[/url][/url];
int MX = 15, MY = 20;
String map_str[/url] = {"VVV ",//V:ブロック
" VVV ",
" ",
" VVV ",
" ",
" ",
" ",
" ",
" ",
" T ",//T:玉
" M ",//M:玉を弾くラケット
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};
int x = 5;//バーの座標
int y = 11;
int c_r = 0;//残りブロック数のカウント
int b_x = 5;//ボールの座標
int b_y = 10;
int b_xu = 1;//ボールの動き
int b_yu = -1;
int gam_f = 0;//ゲーム状況フラグ
boolean key_m;//右キーが押されたときtrue
boolean key_h;//左キーが押されたときtrue
//ダブルバッファ関連
Dimension d;
int w, h;//画面サイズ
Image buff; // ダブルバッファリング用のバッファ
Graphics buff_g; // ダブルバッファリング用のグラフィックス
//画像用
Image img1;
Image img2;
Image img3;
Image img4;
int img3_x, img3_y;
int img4_x, img4_y;
public void init() {
// 画像の読み込み
img1 = getImage(getDocumentBase(),"hai.gif");
img2 = getImage(getDocumentBase(),"buro.gif");
img3 = getImage(getDocumentBase(),"tama.gif");
img4 = getImage(getDocumentBase(),"bar.gif");
th = new Thread(this);//スレッドインスタンス化
addKeyListener(
new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
int dir = -1;
switch ( key ) {
case 37: dir = 2; break;// left
case 39: dir = 0; break;// right
}
if ( dir >= 0 ) img4Move(dir);
repaint();
}
}
);
//マップの周囲を見えない壁で囲む
map = new char[MY+2][MX+2];
for (int x = 0; x <= MX+1; x++) {
map[0][x] = 'B';
map[MY+1][x] = 'B';
}
for (int y = 0; y <= MY+1; y++) {//マップデータの読み込み
map[y][0] = 'B';
map[y][MX+1] = 'B';
}
for (int y = 1; y <= MY; y++) {
for (int x = 1; x <= MX; x++) {
map[y][x] = map_str[y-1].charAt(x-1);
if ( map[y][x] == 'T' ) {
img3Set(x, y);
}
if ( map[y][x] == 'M' ) {
img4Set(x, y);
}
}
}
}