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

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

0

アニメーションの付け方がわからないです

package line4;
import java.awt.*;
import java.applet.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

public class Line4 extends Applet implements MouseListener{
    static final int RED =2;
    static final int BLUE =1;
    static final int EMPTY =0;
    static final int SQUARE_SIZE=37;//一パネルのサイズ
    static final int FIELD_WIDTH=20;//フィールドの横のマス
    static final int FIELD_HEIGHT=10;//フィールドの縦のマス
    Image black_piece,
          white_piece,
          empty_piece, 
          reset_piece;
      String message,m1,m2,m3,m4;
      int game_winner=0;//勝利者
      int which_turn=BLUE;//ターン格納
      int x_place,y_place;//最後に置いたマスの場所
      int board[][] = new int[FIELD_WIDTH][FIELD_HEIGHT];


    public void init ()    {
        addMouseListener(this);
      resize(21*SQUARE_SIZE, 11*SQUARE_SIZE);
        black_piece = getImage(getCodeBase(), "http://www5d.biglobe.ne.jp/~kokkosan/sozaigoya/kabegamigoya/sozai/A08d.gif");
        white_piece = getImage(getCodeBase(), "http://www5d.biglobe.ne.jp/~kokkosan/sozaigoya/kabegamigoya/sozai/A08e.gif");
        empty_piece = getImage(getCodeBase(), "http://www5d.biglobe.ne.jp/~kokkosan/sozaigoya/kabegamigoya/sozai/KD001e.gif");
        reset_piece = getImage(getCodeBase(), "http://www5d.biglobe.ne.jp/~kokkosan/sozaigoya/kabegamigoya/sozai/KD008n.gif");
      message = "";     
    }
    public void paint(Graphics g){
      g.setColor(Color.black);
      g.fillRect(0, 0, 2440, 740);
      g.drawImage(reset_piece,SQUARE_SIZE*FIELD_WIDTH,SQUARE_SIZE*FIELD_HEIGHT,35,35, this);
      for (int row = 1; row < FIELD_HEIGHT; row++) {
        int sy = row * SQUARE_SIZE;

        for (int col = 1; col < FIELD_WIDTH; col++) {
          int sx = col * SQUARE_SIZE;

          switch (board[col][row]) {  
          case BLUE:
            g.drawImage(white_piece, sx + 1, sy + 1,35,35, this);
            break;
          case RED:
            g.drawImage(black_piece, sx + 1, sy + 1,35,35, this);
            break;

          default:
            g.drawImage(empty_piece, sx + 1, sy + 1,35,35, this);
            break;
          }
        }
      }

      g.setColor(Color.black);
      g.fillRect(0, 20 * SQUARE_SIZE + 1, 33, 2*SQUARE_SIZE);
      g.drawString(message, 100, 50); 

    }
      
      public void mouseEntered(MouseEvent e){
      }
      public void mouseExited(MouseEvent e){
      }


      public void mouseReleased(MouseEvent e){
      }
      public void mouseClicked(MouseEvent e){
      }
      
      public void reinit(){
          for(int row=0; row < FIELD_WIDTH; row++){
              for(int col=0; col<FIELD_HEIGHT; col++){
                  board[row][col]=EMPTY;
              }
          }
          init();
          repaint();
          
      }
    public void mousePressed(MouseEvent e){
      int col = e.getX() / SQUARE_SIZE;
      int row = e.getY() / SQUARE_SIZE;
    
      x_place=col;
      if(col==FIELD_WIDTH && row==FIELD_HEIGHT){
          reinit();
          return;
      }
      
      put_panel();
      repaint();
      judge_the_game();
      turn_change();
      end_game();
    }
    public void put_panel(){
        int height=FIELD_HEIGHT-1;
        while(board[x_place][height]!=0){
            height--;
        }
        y_place=height;
        board[x_place][height]=which_turn;

        message=String.valueOf(height);    
    }
    
    
    public void judge_the_game() {
        
        int[] direction_count={1,1,1,1};//90度、45度、0度、−45度
        int[] direction_flag={0,0,0,0,0,0,0,0,0};//上,下、右上、左下、右、左、右下、左上の順
        
        for(int i=0;i<8;i++){
            direction_flag[i]=0;
        }
        for(int i=0; i<4;i++){
            direction_count[i]=1;
        }
        for(int i=1;i<=3;i++){
             if (direction_flag[0]==0 && y_place-i>=0 && board[x_place][y_place-i]==which_turn){     
                 direction_count[0]++;
                 }else{
                     direction_flag[0]=1;
             }
               
             if (direction_flag[4]==0 && y_place+i<FIELD_HEIGHT && board[x_place][y_place+i]==which_turn ){    
                 direction_count[0]++;
             }else{
                 direction_flag[4]=1;
             }

             if (direction_flag[1]==0 && y_place-i>=0 && board[x_place+i][y_place-i]==which_turn){
                 direction_count[1]++;
             }else{
                 direction_flag[1]=1;
             }

             if (direction_flag[5]==0 && x_place-i>=0 && y_place+i<FIELD_HEIGHT &&board[x_place-i][y_place+i]==which_turn && direction_flag[5]==0){
                 direction_count[1]++;
             }else{
                 direction_flag[5]=1;
                 
             }
             if (direction_flag[2]==0 && x_place+i<FIELD_WIDTH && board[x_place+i][y_place]==which_turn){
                 direction_count[2]++;
             }else{
                 direction_flag[2]=1;
             }
             if (direction_flag[6]==0 && x_place-i>=0 &&board[x_place-i][y_place]==which_turn){
                 direction_count[2]++;
             }else{
                 direction_flag[6]=1;
             }
             if (direction_flag[3]==0 && y_place+i<FIELD_HEIGHT &&board[x_place+i][y_place+i]==which_turn){
                 direction_count[3]++;
             }else{
                 direction_flag[3]=1;
             }
             if (direction_flag[7]==0 && board[x_place-i][y_place-i]==which_turn&& y_place-i>=0){
                 direction_count[3]++;
             }else{
                 direction_flag[7]=1;
             }
        }
        
        for(int i=0;i<4;i++){
            if(direction_count[i]>3){
               
                game_winner =which_turn;
            }
            
        }

        
        
    }
    
    void turn_change(){
        if(which_turn==RED){
            which_turn=BLUE;

        }else{
            which_turn=RED;
        }
    }
    
    void end_game(){
        if(game_winner == BLUE){
            message="BLUEの勝ちです。";
        }
        if(game_winner == RED){
            message="REDの勝ちです。";
            
        }
    }
}


これは重力付き四目並べをJavaで作ったもの(まだ未完成の部分がありますが)です。今はクリックしたらパッと瞬間表示されるだけなので、これを上から落ちてくるかのようにしてほしいと言われたのですが、やりかたが全然分かりません。詳しく教えてくれるとたすかります。

1

回答

4530

閲覧

1件の回答

評価

0

ここは基本的に、答えを聞くところじゃない。
ガイドラインも読んでみるといい。

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