Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

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);
    }//グラフィックメソッド終了
}//クラス終了

0

回答

12013

閲覧

0件の回答

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。