0
アプレットの初期化がされていません、と出てしまいます。
javaアプレットを使い、簡単な○×ゲームを制作しているのですが、ウィンドウを閉じたり、アプレット内の開始を押すと初期化がされてないと出て、表示が変になります。initやstartなどを調べましたがよくわかりませんでした。どなたか教えてください。
import java.applet.*;
import java.awt.*;
import java.util.Random;
//marubatuクラスはアプレットを継承し、マウスイベントを処理できる
public class marubatu extends Applet {
int board[][]=new int[3][3];
int xpos,ypos,a,b;
int maru=1,batu=-1,kara=0;
int turn=maru;
String message="";
//盤面初期化メソッド
public void init(){
for (int i = 0 ; i < 3 ; i++)
for (int j = 0 ; j < 3 ; j++)
board[i][j]=kara;
}//盤面初期化メソッド終了
//マウスイベントのメソッド
public boolean mouseDown(Event evt,int x,int y){
if(message!=""){
init();
message="";
repaint();
return true;
}
a=x;b=y;
//クリック地点のマス目
xpos=x/60;ypos=y/60;
rule();
judge();
repaint();
return true;
//think();
} //マウスイベント終了
//○×を置くメソッド
public void rule(){
if(xpos>=0&&xpos<3&&ypos>=0&&ypos<3&&board[xpos][ypos]==kara){
board[xpos][ypos]=turn;
turn*=-1;
repaint();
}
}//○×を置くメソッド終了
//cpuメソッド
public void think(){
Random rnd =new Random();
int ran=rnd.nextInt(2);
board[ran][ran]=turn;
repaint();
}//cpuメソッド終了
//勝利判定のメソッド
public void judge(){
int i,j;
int lnaname=0,rnaname=0;
for(i=0;i<3;i++){
int yoko=0,tate=0;
for(j=0;j<3;j++){
yoko+=board[i][j];
tate+=board[j][i];
}
if(yoko == 3 || tate == 3)
message="You win!!";
else if(yoko == -3 || tate == -3)
message="You loose!!";
}
for(i=0;i<3;i++){
lnaname+=board[i][i];
rnaname+=board[i][2-i];
}
if(lnaname == 3 || rnaname == 3)
message="You win!!";
else if(lnaname == -3 || rnaname == -3)
message="You loose!!";
repaint();
}//勝利判定のメソッド終了
//グラフィックのアップデートメソッド
public void update(Graphics g){
paint(g);
}//アップデートメソッド終了
//グラフィックメソッド
public void paint(Graphics g){
int x,y;
g.setColor(Color.black);
for(int i=0;i<=180;i+=60){
g.drawLine(i,0,i,180);
g.drawLine(0,i,180,i);
}
//全てのマスを調べて○か×か置く
//何も押されてない時は表示なし
if(a!=0 && b!=0){
for(x=0;x<3;x++){
for(y=0;y<3;y++){
if(board[xpos][ypos]==maru){
g.setColor(Color.black);
g.drawOval(xpos*60+2,ypos*60+2,57,57);
}else if(board[xpos][ypos]==batu){
g.setColor(Color.red);
g.drawOval(xpos*60+2,ypos*60+2,57,57);
}
}
}}
//文字のスタイル(PLAIN,BOLD,ITALICがある)と色とメッセージをどこに表示させるか決める
Font font=g.getFont();
g.setFont(new Font(font.getName(),Font.ITALIC,36));
g.setColor(Color.red);
g.drawString(message,80,100);
}//グラフィックメソッド終了
}//クラス終了