你可以把兵,马,车看做是在一个矩阵下移动的。。。
公司主营业务:做网站、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出武川免费做网站回馈大家。
兵,马,车等都有不同的走发与吃法,且都是棋子。棋子是父类,应该有一个boolean moveTo(x,y)方法,比如车和马的吃法不同。。。
boolean kill(x,y)方法等宫同的行为,比如跑和车得吃法不同。
子类实现相应的方法...
移动规则去你就可以把它看成在一个坐标系上移动就可以了...
实在不知道,取下一个游戏。先玩玩熟悉一下走法...
import java.awt.Color;
import javax.swing.*;
public class Chess extends JPanel
{// 继承面板类
public Chess(int grids,int gridsize)
{//grids:行数和列数, gridsize:单元格的高和宽
super(null);
for(int i=0; igrids; i++)
{
for(int j=0; jgrids; j++)
{
JLabel l = new JLabel();//生成标签实例
l.setSize(gridsize,gridsize);
l.setLocation(i*gridsize,j*gridsize);
if((i+j)%2==0)
{ //当小方格的坐标和刚好是偶数时,
l.setBackground(Color.black); //设置为方格为黑色
l.setOpaque(true); //设置为不透明
}
l.setBorder(BorderFactory.createLineBorder(Color.black)); //设置边界为黑色
add(l);//将l标签添加到面板
}
}
}
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setSize(658,677); //边框的长和宽
f.setLocationRelativeTo(null); //设置窗口相对于指定组件的位置
f.add(new Chess(8,80));
f.setVisible(true);
}
}
将格子的宽高保存成变量,例如:w = 100 ,h =150。左上角0,0 ,如果棋子坐标是(1,2)那么,位置就是 (1 X 100,2 X 150) 即 (i x w, j x h)
很简单嘛,定义一个棋子类,设置棋子的身份属性,以0到15个数字表示;设置棋子的阵营属性,用0和1表示;设定棋子的位置属性,用x-y坐标上的点表示。每当一个棋子被移动后,都将棋子的身份、阵营和新的位置信息传到服务器,服务端就可以移动了。