Java Chess Applet - PullRequest
       8

Java Chess Applet

0 голосов
/ 05 ноября 2011

Я пишу шахматную программу на Java, которая должна отображаться в апплете. У меня сейчас проблема с заполнением массива шахматных фигур. В настоящее время это делается в методе paint () моего JApplet, и я знаю, что это неправильно, потому что paint можно вызывать более одного раза. Я попытался создать массив и заполнить его в своем методе инициализации, но это не работает вообще. Любая помощь будет оценена.

public class DrawChessBoard extends JApplet
        implements MouseListener, MouseMotionListener {

    ChessPiece myPiece;
    ImageIcon square;
    ImageObserver observer;
    ChessBoard gameBoard;
    boolean isMouseDragging = false;
    int size; //square dimensions   

    public void initialize() {
        setBackground(Color.white);
        Image bSquare = square.getImage();
        size = bSquare.getWidth(observer);
        addMouseListener(this);
        addMouseMotionListener(this);
    }

    public void paint(Graphics h) {
        Graphics2D g = (Graphics2D) h;
        //System.out.println("Am I being called more than once?");
        gameBoard = new ChessBoard(8);
        gameBoard.start();
        gameBoard.paintBoard(g);
        gameBoard.paintComponent(g);
    }
}

Ответы [ 3 ]

3 голосов
/ 05 ноября 2011

Не выполняйте программную логику в методе рисования - точка. Это так неправильно во многих отношениях. Мало того, что этот код будет вызываться много раз и вне вашего контроля, он будет замедлять выполнение программной графики. Рисование должно выполняться методом paintComponent в JPanel или другом JComponent, и этот метод должен касаться только рисования.

Кстати, где твой метод инициализации? Вот куда должна идти большая часть этого кода.

Вот пример шахматного приложения, созданного на JPanel: делает добавление jlabel-to-jpanel-hide-the-jpanel . Поскольку он находится на JPanel, его можно легко поместить в панель содержимого JApplet и отобразить в апплете.

2 голосов
/ 05 ноября 2011

Вы должны отделить правила игры от части визуализации вашего приложения.

Ознакомьтесь с шаблоном проектирования Model-View-Presenter или Model-View-Controller. Это поможет вам.

0 голосов
/ 05 ноября 2011

Попробуйте шаблон проектирования Model-View-Controller .В этом шаблоне логика программы выполняется в части Controller, но вы делаете это в части View.Там будут драконы!

...