0

我目前必须制作一个四方棋盘,并在棋盘上沿向上、向下、向左、向右、向右向上、向左向上、向右向下和向左向下的方向移动棋子。我已经布置好了电路板和按钮,但我对移动这件作品感到困惑。我只需要移动一件。如果我不能正确移动,另一个让我感到困惑的任务,我该如何找到它?

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) {

    }

}
4

1 回答 1

0

您可以创建一个二维字符数组(字符,因为您可以将差异字符用于不同的数字)并将每个字符设置为“e”,其中国际象棋场为空,否则您有一个“k”,例如国王(只是示例)。

使用 2 个 for 循环,您可以检查数组中的每个字段是否有“一块”,因此如果国王有一个“k”,您可以在该位置绘制一个国王(您可以通过

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

当你的 vars 是 i 和 j)。

当你想移动一个棋子时,你必须检查这个棋子是否还在你的数组边界内(你必须使数组和你的国际象棋场一样大)

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

于 2013-11-11T11:24:59.197 回答