重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
int[][] loaction=new int[10][9];
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都做网站、中阳网络推广、小程序开发、中阳网络营销、中阳企业策划、中阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供中阳建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
左帅:loaction[0][4];
X X X
X X
X X X
-----
[0][3] [1][3] [2][3]
[0][4] [1][4] [2][4]
[0][5] [1][5] [2][5]
即:x=0 x=2 y=3 y=5
------------------------------
右将:loaction[9][4];
X X X
X X
X X X
-----
[7][3] [8][3] [9][3]
[7][4] [8][4] [9][4]
[7][5] [8][5] [9][5]
---------------------------
public int go(int x,int y,int path,int len){
if(loaction[x][y]==1) {//是帅
if(path==1){//向左
if(x=0) return -1;//返回-1代表走发错误
else {loaction[x-1][y]=1;loaction[x][y]=-1;}//将左一个格子标记为帅
}
else if(path==2){//向上
...
}
else if(path==3){//向右
...
}
else if(path==4){//向下
...
}//else path
}//if key
else if(loaction[x][x]==2){//2代表将
....
}//if key
}
车就差不多了
package com.fzhw.app;
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.HeadlessException;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Xiangqi extends JFrame{
private static final long serialVersionUID = 1;
public Xiangqi() throws HeadlessException {
super();
setTitle("my board");
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(new Board(), BorderLayout.CENTER);
this.setSize(960, 960);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]){
new Xiangqi().setVisible(true);
}
}
class Board extends JPanel{
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d=(Graphics2D)g;
int width=this.getWidth();
int height=this.getHeight();
int hGap=height/9;
int wGap=width/8;
for(int i=0;i10;i++){
g2d.drawLine(0, i*hGap, width, i*hGap);
}
for(int i=0;i9;i++){
g2d.drawLine(i*wGap, 0, i*wGap, 4*hGap);
g2d.drawLine(i*wGap, 5*hGap, i*wGap, height);
}
g2d.drawString("楚河 汉界", width/2, height/2);
g2d.drawLine(3*wGap, 0, 5*wGap, 2*hGap);
g2d.drawLine(5*wGap, 0, 3*wGap, 2*hGap);
g2d.drawLine(3*wGap, height, 5*wGap, height-2*hGap);
g2d.drawLine(3*wGap, height-2*hGap, 5*wGap, height);
g2d.dispose();
}
}
两种选择,第一,你用一个背景图片来充当欺骗,落子位置的在panel上转化,楚河汉界不用管,两边是对称的。
第二种,用Graphics2D自己draw line。
我给你写好了,但是10分太少,不想给啊
有,但是我不能直接给你。我可以告诉你步骤。
首先是加载图片文件为 Image:比如你有个类叫 ResourceLoader 那么就添加下面的类成员:
public static final URL url = ResourceLoader.class.getResource("/xxx/.../文件名.png");
public static final Image img = Toolkit.getDefaultToolkit().createImage(url);
然后就加载好了。下一步是继承一个 JPanel(例如),添加鼠标/键盘事件,并重写 paint 方法(或 paintComponent 方法)。例如——
public class ChessPanel extends JPanel {
private Point[] chessPoints = new Point[共多少个棋子];
private boolean[] shown = new boolean[共多少个棋子];
@Override public void paintComponent (Graphics g) {
super.paintComponent(g);
for (int i=0; i共多少个棋子; i++) {
if (shown[i]) {
g.drawImage(ResourceLoader.img, chessPoints[i].x, chessPoints[i].y, 棋子宽度, 棋子高度);
}
}
}
class MouseControler extends MouseAdapter {
@Override public void mousePressed (MouseEvent me) {
//自己写吧
repaint();
}
}
}
最后说明一下,图片资源文件可以打包到 jar 里。我把关键的部分都已经告诉你了。具体逻辑实现你自己写吧。当然数据结构你也可以自己写,我的例子只是告诉你相应的在 paint 或者 paintComponent 方法里全部画出来就行了。
希望能采纳。