下面是两个类,即棋盘与棋子,如何将它们组合在一起以实现下棋的操作?这在面向对象设计中,有个专门的关系,就叫组合吧。还有,如何分别对棋盘和棋子设置颜色,以及如何实现“悔棋”的效果,即点击鼠标生成的圈,如何擦除??
我问题的关键是如何用java实现这些效果,也就是程序算法我知道,不需要啰嗦了。
请回答问题的各位大虾注意一下,这里有三个问题和一个强调,不要做无用功!!
//DrawChessman类
class DrawChessman extends JPanel {
private static final long serialVersionUID = 4785452373598819719L;
private int x, y; //位置
final int ChessSize = 30;//棋子大小
public void paintComponent(Graphics g) {//画棋子
g.drawOval(x-ChessSize/2, y-ChessSize/2, ChessSize, ChessSize);
}
public DrawChessman() {
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
});
}
} //ChessBoard类
class ChessBoard extends JPanel{
private static final long serialVersionUID = 4785452373598819719L;
private int x, y; //位置
final int ChessSize = 30;//棋子大小
private int width=600, height=600;//
private int d = width / 20; public ChessBoard (){
setBackground(new Color(235, 157, 80));
}
public void paint(Graphics g) {//画棋盘
for(int i = 0; i<=width; i+= d){
if(i==0 || i==width){
g.drawLine(i, 0, i, height);
g.drawLine(0, i, width, i);
}else{
g.drawLine(i, d, i, height-d);
g.drawLine(d, i, width-d, i);
}
}
}
}
我问题的关键是如何用java实现这些效果,也就是程序算法我知道,不需要啰嗦了。
请回答问题的各位大虾注意一下,这里有三个问题和一个强调,不要做无用功!!
//DrawChessman类
class DrawChessman extends JPanel {
private static final long serialVersionUID = 4785452373598819719L;
private int x, y; //位置
final int ChessSize = 30;//棋子大小
public void paintComponent(Graphics g) {//画棋子
g.drawOval(x-ChessSize/2, y-ChessSize/2, ChessSize, ChessSize);
}
public DrawChessman() {
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
});
}
} //ChessBoard类
class ChessBoard extends JPanel{
private static final long serialVersionUID = 4785452373598819719L;
private int x, y; //位置
final int ChessSize = 30;//棋子大小
private int width=600, height=600;//
private int d = width / 20; public ChessBoard (){
setBackground(new Color(235, 157, 80));
}
public void paint(Graphics g) {//画棋盘
for(int i = 0; i<=width; i+= d){
if(i==0 || i==width){
g.drawLine(i, 0, i, height);
g.drawLine(0, i, width, i);
}else{
g.drawLine(i, d, i, height-d);
g.drawLine(d, i, width-d, i);
}
}
}
}
Java五子棋
我是做AI程序,人机对弈模式,算法我早设计好。但刚学java,界面和事件不会做,所以来请教撒。
public void paintComponent(Graphics g) {//画棋子
g.setColor(new Color(30,20,50));
g.fillOval(x-ChessSize/2, y-ChessSize/2, ChessSize, ChessSize);
}把下过棋子的地方 存入 链表吧,悔棋就扔掉最后一个
如果你是想学JAVA,那么就不应该让人提供源码,而是自己去学语法,自己做
如果你不想学JAVA,你要用JAVA做什么?还不如用C++写,快的多.
B:如何分别对棋盘和棋子设置颜色
C:如何实现“悔棋”的效果首先你要有一个数据结构,存储双方下了几步棋、下在哪里了(相对于棋盘的位置)。
你的A其实是数据结构转换到棋盘上的问题,通过
public void paintComponent(Graphics g) {//画棋子
g.setColor(new Color(30,20,50));
g.fillOval(x-ChessSize/2, y-ChessSize/2, ChessSize, ChessSize);
}
类似这样的方法应该不难实现。设置棋盘棋子的颜色可以通过图片实现。
悔棋正如楼上某人所说,在你的数据结构中删除最后一步,然后界面显示做相应操作即可。