如何在java程序中移动棋子

时间:2013-11-11 11:14:51

标签: java swing awt chess

我目前必须制作一个四方棋盘并沿着向上,向下,向左,向右,向上的方向向上移动一块棋子,向上移动,向下向下移动,向下移动诊断。我把电路板和按钮布好了,但是我对移动这件作品很困惑。 我只需要移动一件。如果我无法正确行动,另一个令我困惑的任务是,如何找到它呢?

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class javaAssignment extends JFrame implements ActionListener {
    JPanel top, bottom, panel1, panel2, panel3, panel4, buttons;
    JButton up, down, right, left, lud, rud, rdd, ldd;
    JLabel l1, l2, l3, l4;

    javaAssignment() {

        Container c = getContentPane();

        // Import image.

        Icon chess = new ImageIcon("images/piece.png");

        // Create panels.

        top = new JPanel();
        bottom = new JPanel();
        buttons = new JPanel();

        // Create chess board.

        l1 = new JLabel(chess);
        l2 = new JLabel();
        l3 = new JLabel();
        l4 = new JLabel();

        panel1 = new JPanel();
        panel1.setBackground(Color.black);
        panel1.setOpaque(true);
        panel1.setPreferredSize(new Dimension(90, 90));
        panel2 = new JPanel();
        panel2.setBackground(Color.white);
        panel2.setOpaque(true);
        panel2.setPreferredSize(new Dimension(90, 90));
        panel3 = new JPanel();
        panel3.setBackground(Color.white);
        panel3.setOpaque(true);
        panel3.setPreferredSize(new Dimension(90, 90));
        panel4 = new JPanel();
        panel4.setBackground(Color.black);
        panel4.setOpaque(true);
        panel4.setPreferredSize(new Dimension(90, 90));

        // Create buttons.

        up = new JButton("Up");
        down = new JButton("Down");
        right = new JButton("Right");
        left = new JButton("Left");
        lud = new JButton("Left Up Diag");
        ldd = new JButton("Left Down Diag");
        rud = new JButton("Right Up Diag");
        rdd = new JButton("Right Down Diag");

        // Add panels and buttons.

        panel1.add(l1);
        panel2.add(l2);
        panel3.add(l3);
        panel4.add(l4);
        top.add(panel1);
        top.add(panel2);
        bottom.add(panel3);
        bottom.add(panel4);
        buttons.add(up);
        buttons.add(down);
        buttons.add(left);
        buttons.add(right);
        buttons.add(lud);
        buttons.add(ldd);
        buttons.add(rud);
        buttons.add(rdd);
        c.add(top);
        c.add(bottom);
        c.add(buttons);

        // Set Layouts.

        top.setLayout(new GridLayout(2,3));
        bottom.setLayout(new GridLayout(2,3));
        buttons.setLayout(new GridLayout(2,3));
        c.setLayout(new FlowLayout());

        // Display frame.

        setVisible(true);
        setSize(600, 300);

    }

    public static void main(String[] args) {
        javaAssignment output = new javaAssignment();
    }

    public void actionPerformed(ActionEvent e) {

    }

}

1 个答案:

答案 0 :(得分:0)

你可以创建一个二维char数组(char因为你可以使用diffrend chars来表示不同的数字)并将每个char设置为'e',其中chessfield是emtpy,其他你有一个'k'例如for king(只是例子)。

有2个for循环你可以检查数组中的每个字段是否有“片段”,所以如果有一个'k'为王你可以在那个位置画一个王(你得到的位置

 x = i * square_size;
 y = j * square_size;

当你为vars时我是i和j)。

当你想移动一块时,你必须检查这块是否仍然在你的数组边界内(你必须使数组与你的象棋场一样大)

要获得更多帮助,我需要更多详细信息