我以前做过,不知道你怎么弄的。
我是这样干的:
棋子写了个对象,里面有一些坐标元素。
兴建一个集合,如HashSet
然后对弈的过程中,双方每走一步,就往HashSet里添加棋子对象。
画的时候遍历棋子一个个画就好。
棋子可以是一张图片,也可以自己画,我是自己画的。
我是这样干的:
棋子写了个对象,里面有一些坐标元素。
兴建一个集合,如HashSet
然后对弈的过程中,双方每走一步,就往HashSet里添加棋子对象。
画的时候遍历棋子一个个画就好。
棋子可以是一张图片,也可以自己画,我是自己画的。
{
public static void main(String[] args)
{
wzqFrame Frame = new wzqFrame();
Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Frame.show();
}
}
class wzqFrame extends JFrame
{
public wzqFrame()
{
setTitle("wzq");
setSize(default_width,default_height);
wzqPanel Panel = new wzqPanel();
Container contentPane = getContentPane();
contentPane.add(Panel);
}
public static final int default_width = 620;
public static final int default_height = 500;
}
class wzqPanel extends JPanel
{
public wzqPanel()
{
addMouseListener(new MouseHandler());
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
double leftX = 10;
double topY = 10;
double width = 450;
double height = 450;
addMouseListener(new MouseHandler());
Rectangle2D rect = new Rectangle2D.Double(leftX,topY,width,height);
g2.draw(rect);
for(int i=1;i<=14;i++)
{g2.draw(new Line2D.Double(i*30+leftX,topY,i*30+leftX,460));
g2.draw(new Line2D.Double(topY,i*30+leftX,460,i*30+leftX));
}
for(int i=0;i<15;i++)
for (int j=0;j<15;j++)
{
if( zb[i][j] = 1)
g2.draw( new Ellipse2D.Double(map. zb[i]*30-15,zb[j]-15,zb[i]*30+15,zb[j]*30+15))
}
}
}
private class MouseHandler extends MouseAdapter
{
public void mouseClicked(MouseEvent Event)
{
Point2D p=Event.getPoint();
int mx = (int)p.getX();
int my = (int)p.getY();
int mx1=(mx-10)%30;/*鼠标偏离网格的距离*/
int mx2=(int)(mx-10)/30;/*鼠标点击在第几格*/
int my3=(my-10)%30;
int my4=(int)(my-10)/30;
int a,b,x,y;
if(mx1>=0 && mx1<15)
{
x=mx2*30+mx1;
}
else
{
x=(mx2+1)*30+mx1;
}
if(my3>=0 && my3<15)
{
y=my4*30+my3;
}
else
{
y=(my4+1)*30+my3;
}
}
}
int[][] zb=new int [15][15];
for(i=0;i<15;i++)
{ for(j=0;j<15;j++)
zb[i][j]=0;
}
定义一个数组,该放在什么地方呢?