- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
下面是我的代码
import javax.swing.*;
import java.awt.*;
public class board2 {
JFrame frame;
JPanel squares[][] = new JPanel[8][8];
public board2() {
frame = new JFrame("Simplified Chess");
frame.setSize(500, 500);
frame.setLayout(new GridLayout(8, 8));
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
squares[i][j] = new JPanel();
if ((i + j) % 2 == 0) {
squares[i][j].setBackground(Color.black);
} else {
squares[i][j].setBackground(Color.white);
}
frame.add(squares[i][j]);
}
}
squares[0][0].add(new JLabel(new ImageIcon("rookgreen.png")));
squares[0][2].add(new JLabel(new ImageIcon("bishopgreen.png")));
squares[0][4].add(new JLabel(new ImageIcon("kinggreen.png")));
squares[0][5].add(new JLabel(new ImageIcon("bishopgreen.png")));
squares[0][7].add(new JLabel(new ImageIcon("rookgreen.png")));
squares[7][0].add(new JLabel(new ImageIcon("rookred.png")));
squares[7][2].add(new JLabel(new ImageIcon("bishopred.png")));
squares[7][4].add(new JLabel(new ImageIcon("kingred.png")));
squares[7][5].add(new JLabel(new ImageIcon("bishopred.png")));
squares[7][7].add(new JLabel(new ImageIcon("rookred.png")));
for (int i = 0; i < 8; i++) {
squares[1][i].add(new JLabel(new ImageIcon("pawngreen.png")));
squares[6][i].add(new JLabel(new ImageIcon("pawnred.png")));
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
new board2();
}
}
我正在尝试创建一种类似国际象棋的游戏,我需要帮助在棋盘的所有面上放置标签,以标记 A-H 或 1-8 中的行和列。我不知道该怎么做。稍后我将添加一个功能来拖放这些片段。最好使用 JLabels 吗?不管怎样,我会把标签放在一边吗?谢谢!
最佳答案
我想提交一个使用 Unicode 字符的简单棋盘绘图示例。这个小项目涉及 3 个类。
国际象棋标签.java
import java.awt.Color;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class ChessLabel extends JLabel {
Font font = new Font("Ariel", Font.PLAIN, 24);
Color bgLight = new Color(222, 184, 135);
Color bgDark = new Color(139, 69, 19);
ChessLabel(String s)
{
super(s);
}
void set(int idx, int row)
{
setFont(font);
setOpaque(true);
setBackground((idx+row)%2 == 0 ? bgDark : bgLight);
setHorizontalAlignment( SwingConstants.CENTER );
}
}
Board.java
import java.awt.*;
import javax.swing.JFrame;
public class Board extends JFrame {
//Initialise arrays to hold panels and images of the board
private ChessLabel[] labels = new ChessLabel[] {
// white
new ChessLabel("\u2656"), new ChessLabel("\u2658"), new ChessLabel("\u2657"),
new ChessLabel("\u2655"), new ChessLabel("\u2654"), new ChessLabel("\u2657"),
new ChessLabel("\u2658"), new ChessLabel("\u2656"), new ChessLabel("\u2659"),
new ChessLabel("\u2659"), new ChessLabel("\u2659"), new ChessLabel("\u2659"),
new ChessLabel("\u2659"), new ChessLabel("\u2659"), new ChessLabel("\u2659"),
new ChessLabel("\u2659"),
// empty
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "), new ChessLabel(" "),
new ChessLabel(" "), new ChessLabel(" "),
// black
new ChessLabel("\u265F"), new ChessLabel("\u265F"), new ChessLabel("\u265F"),
new ChessLabel("\u265F"), new ChessLabel("\u265F"), new ChessLabel("\u265F"),
new ChessLabel("\u265F"), new ChessLabel("\u265F"), new ChessLabel("\u265C"),
new ChessLabel("\u265E"), new ChessLabel("\u265D"), new ChessLabel("\u265B"),
new ChessLabel("\u265A"), new ChessLabel("\u265D"), new ChessLabel("\u265E"),
new ChessLabel("\u265C")
};
public Board()
{
} // Board()
void display()
{
setTitle("Chess board with unicode images");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Container contentPane = getContentPane();
GridLayout gridLayout = new GridLayout(8, 8);
contentPane.setLayout(gridLayout);
int row = -1;
for (int i = 0; i < labels.length; i++)
{
if(i % 8 == 0) row ++; // increment row number
labels[i].set(i, row);
contentPane.add(labels[i]);
} // i
setSize(600, 600);
setLocationRelativeTo(null);
setVisible(true);
} // display()
} // class Board
和ChessBoardTest.java
public class ChessBoardTest {
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
Board board = new Board();
board.display();
}
}
关于java - java中的棋盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535417/
我有一个棋盘格,并将其连接到 JPanel: import javax.swing.*; import java.awt.Graphics; import java.awt.Color; public
我看不出有什么问题,我正在尝试将 gameBoard 数组(这不是数组吗?- 请参阅构造函数)传递到 findPiece 方法中,但它说了不是一个数组,我应该在这里传递什么来获得未更新的板?抱歉,我是
所以我想检查输入的位置在棋盘中是否有效, //returns true if the position is in the range of A1-H8 private boolean isValid
将单一职责原则应用于棋盘应用程序,Piece 接口(interface)/类应该负责什么? 我确信它需要知道它的颜色、类型和有效 Action 。但是它是否也应该知道它在棋盘中的位置(x/y)?或者,
我需要使用 J 打印棋盘,给定奇数的函数需要创建一个 NxN 矩阵并在每个其他框中放置一个“X”。我已经制作了矩阵,但我无法弄清楚其他盒子部分。 到目前为止我所拥有的 N =: 3 checker =
我目前有一个一维棋盘坐标数组(例如 ["B1","D1","F1","H1","E8"] 用于棋盘游戏。我已将数组“位置”初始化为是上面的值,但这可以是游戏任何时候的任何值。该数组的长度根据用户给定的
我想使用canvas和通过覆盖方法onDraw在android studio中动态绘制一个8×8的棋盘,我几乎已经成功了,但我遇到了一个非常烦人的问题。 我已经制作了一个自定义 View ,我的目标是
所以我开始了一个 TicTacToe 项目,而且我是一个初学者,所以我不知道如何做很多事情。这是半个小时编码的结果。 我似乎在调试 Player2 不轮流的原因时遇到问题。 所以它要求添加更多细节,然
我正在制作棋盘游戏,但无法 move 它们。棋子会根据骰子的结果 move 。下面是我尝试做的,但它不起作用。(来自 button[].addActionListener(new ActionList
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是
谁能告诉我如何使用 JavaScript、表格标签或 生成棋盘 (8x8)? 到目前为止,我得到了以下内容: div { border:1px solid black; width:20px;
大家好,我最近开始做一个国际象棋应用程序,除了 GUI 之外,我已经设置好了所有的东西。出于某种原因,我无法让电路板显示瓷砖,我也不知道为什么。 (推测)我认为我的问题与我对 DOM 的使用有关。对我
我试图创建一个带有表格的棋盘 (HTML/CSS)。我在表格边框方面遇到了麻烦。我只希望电路板有边框,排除行号和列字母。 我该怎么做? table { border-bottom: solid 2
我是 java 和 android 的新手,但我正在寻找一个可以走上正轨的好教程。我想编写一个函数,用于在我的应用程序当前 View 的背景中绘制/重绘白底黑棋盘图案。我不想使用实际图像,因为我希望能
我正在尝试使用 GUI 的 NetBeans IDE 在 Java 中制作国际象棋游戏,但我无法使棋子停留在棋盘上方,当我尝试时,棋盘就会被推开。我对这两个图像都使用了标签。如何让棋子停留在棋盘上方而
我试图为 Tic Tac Toe 游戏编写代码。我编写了以下代码来显示游戏板,但出现了问题,并且没有显示所需的输出。你能帮我找出错误在哪里吗? 这里: 0代表空白, 1代表X和 2代表O。 publi
我的任务是通过 paintComponent 方法创建一个 10x10 可调整大小的棋盘。 我的问题是第一行正确,但下一行不显示,我根本不知道我的错误在哪里 GrafikPanel 类: import
我在这里尝试使用 javascript 棋盘:http://chessboardjs.com/ .不幸的是,我不知道 javascript 或 CSS,并且对 HTML 很生疏,所以我不理解文档,即使
我正在尝试在棋盘(见附图)和基于 cordova 的 Android 国际象棋游戏(lichess)之间传输数据。两个设备都将通过 USB 数据线连接。 android 的 cordova 应用程序是
我使用以下 CSS 代码创建了一个棋盘图案: .testcheckerboard{ width: 200px; height: 100px; background-color: white
我是一名优秀的程序员,十分优秀!