【问题标题】:How do you keep track of a board game positions live? (Java)您如何实时跟踪棋盘游戏的位置? (爪哇)
【发布时间】:2017-10-19 21:29:05
【问题描述】:

我正在使用 2d 数组在 java 中创建棋盘游戏。该板显示在 JFrame 中。

您如何“移动”二维数组上的片段并将它们实时显示在屏幕上(二维数组以按钮显示)。

有没有更好的方法来用二维数组展示我的游戏?有什么好的算法可以更新我的游戏?

【问题讨论】:

  • 如果有人要源代码,我会在2小时内添加。
  • 为什么不将问题的发布推迟 2 小时,而不是发布并计划稍后进行编辑?

标签: java arrays swing


【解决方案1】:

使用mvc mini architecture:

import java.util.Observable;
import java.util.Observer;
public class So44075321 {
    enum Piece {
        vacant,knight,bishop;
    }
    static class Game extends Observable implements Observer { // model
        Game() {
            for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                    board[i][j]=Piece.vacant;
            addObserver(this);
        }
        @Override public String toString() {
            StringBuffer stringBuffer=new StringBuffer();
            for(int i=0;i<n;i++) {
                for(int j=0;j<n;j++)
                    stringBuffer.append(board[i][j]+" ");
                stringBuffer.append('\n');
            }
            return stringBuffer.toString();
        }
        void move(int i,int j,int k,int l) {
            Piece piece=board[i][j];
            board[i][j]=Piece.vacant;
            board[k][l]=piece;
            setChanged();
            notifyObservers();
        }
        final int n=3;
        Piece[][] board=new Piece[n][n];
        @Override public void update(Observable o,Object hint) { // view
            
            System.out.println("update: "+toString());
        }
    }
    public static void main(String[] args) { // controller
        Game game=new Game();
        game.board[0][0]=Piece.knight;
        System.out.println(game);
        game.move(0,0,1,1);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多