當前位置:首頁 » 操作系統 » 中國象棋java源碼

中國象棋java源碼

發布時間: 2022-04-30 01:37:34

① 如何用java swing 實現中國象棋的棋盤。棋盤就好。。。

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;i<10;i++){

g2d.drawLine(0, i*hGap, width, i*hGap);

}

for(int i=0;i<9;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自己drawline。


我給你寫好了,但是10分太少,不想給啊

② 編寫個中國象棋java程序。。。注意的事項

演算法是最核心的

③ 中國象棋JAVA程序代碼是怎麼執行的

1.你之前需要懂得JAVA運行環境
2.之前要學習JAVA的基本調用
3.學會JAVA封裝
4.知道基礎的JAVA語法

④ 求java 象棋小程序 一小段代碼

這個程序實現還要一個關聯文件夾「image」象棋棋子圖片 部分代碼如下:(代碼太長 給個郵箱 我發給你)

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.io.*;

//主類
public class Chess{
public static void main(String args[]){
new ChessMainFrame("中國象棋:觀棋不語真君子,棋死無悔大丈夫");
}
}

//主框架類
class ChessMainFrame extends JFrame implements ActionListener,MouseListener,Runnable{
//玩家
JLabel play[] = new JLabel[32];
//棋盤
JLabel image;
//窗格
Container con;
//工具欄
JToolBar jmain;
//重新開始
JButton anew;
//悔棋
JButton repent;
//退出
JButton exit;
//當前信息
JLabel text;

//保存當前操作
Vector Var;

//規則類對象(使於調用方法)
ChessRule rule;

/**
** 單擊棋子
** chessManClick = true 閃爍棋子 並給線程響應
** chessManClick = false 吃棋子 停止閃爍 並給線程響應
*/
boolean chessManClick;

/**
** 控制玩家走棋
** chessPlayClick=1 黑棋走棋
** chessPlayClick=2 紅棋走棋 默認紅棋
** chessPlayClick=3 雙方都不能走棋
*/
int chessPlayClick=2;

//控制棋子閃爍的線程
Thread tmain;
//把第一次的單擊棋子給線程響應
static int Man,i;

ChessMainFrame(){
new ChessMainFrame("中國象棋");
}

/**
** 構造函數
** 初始化圖形用戶界面
*/
ChessMainFrame(String Title){
//獲行客格引用
con = this.getContentPane();
con.setLayout(null);
//實例化規則類
rule = new ChessRule();
Var = new Vector();

//創建工具欄
jmain = new JToolBar();
text = new JLabel("歡迎使用象棋對弈系統");
//當滑鼠放上顯示信息
text.setToolTipText("信息提示");
anew = new JButton(" 新 游 戲 ");
anew.setToolTipText("重新開始新的一局");
exit = new JButton(" 退 出 ");
exit.setToolTipText("退出象棋程序程序");
repent = new JButton(" 悔 棋 ");
repent.setToolTipText("返回到上次走棋的位置");

//把組件添加到工具欄
jmain.setLayout(new GridLayout(0,4));
jmain.add(anew);
jmain.add(repent);
jmain.add(exit);
jmain.add(text);
jmain.setBounds(0,0,558,30);
con.add(jmain);

//添加棋子標簽
drawChessMan();

//注冊按扭監聽
anew.addActionListener(this);
repent.addActionListener(this);
exit.addActionListener(this);

//注冊棋子移動監聽
for (int i=0;i<32;i++){
con.add(play[i]);
play[i].addMouseListener(this);
}

//添加棋盤標簽
con.add(image = new JLabel(new ImageIcon("image\\Main.GIF")));
image.setBounds(0,30,558,620);
image.addMouseListener(this);

//注冊窗體關閉監聽
this.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent we){
System.exit(0);
}
}
);

//窗體居中
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = this.getSize();

if (frameSize.height > screenSize.height){
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width){
frameSize.width = screenSize.width;
}

this.setLocation((screenSize.width - frameSize.width) / 2 - 280 ,(screenSize.height - frameSize.height ) / 2 - 350);

//設置
this.setIconImage(new ImageIcon("image\\紅將.GIF").getImage());
this.setResizable(false);
this.setTitle(Title);
this.setSize(558,670);
this.show();
}

/**
** 添加棋子方法
*/
public void drawChessMan(){
//流程式控制制
int i,k;
//圖標
Icon in;

//黑色棋子

//車
in = new ImageIcon("image\\黑車.GIF");
for (i=0,k=24;i<2;i++,k+=456){
play[i] = new JLabel(in);
play[i].setBounds(k,56,55,55);
play[i].setName("車1");
}

//馬
in = new ImageIcon("image\\黑馬.GIF");
for (i=4,k=81;i<6;i++,k+=342){
play[i] = new JLabel(in);
play[i].setBounds(k,56,55,55);
play[i].setName("馬1");
}

//相
in = new ImageIcon("image\\黑象.GIF");
for (i=8,k=138;i<10;i++,k+=228){
play[i] = new JLabel(in);
play[i].setBounds(k,56,55,55);
play[i].setName("象1");
}

//士
in = new ImageIcon("image\\黑士.GIF");
for (i=12,k=195;i<14;i++,k+=114){
play[i] = new JLabel(in);
play[i].setBounds(k,56,55,55);
play[i].setName("士1");
}

//卒
in = new ImageIcon("image\\黑卒.GIF");
for (i=16,k=24;i<21;i++,k+=114){
play[i] = new JLabel(in);
play[i].setBounds(k,227,55,55);
play[i].setName("卒1" + i);
}

//炮
in = new ImageIcon("image\\黑炮.GIF");
for (i=26,k=81;i<28;i++,k+=342){
play[i] = new JLabel(in);
play[i].setBounds(k,170,55,55);
play[i].setName("炮1" + i);
}

//將
in = new ImageIcon("image\\黑將.GIF");
play[30] = new JLabel(in);
play[30].setBounds(252,56,55,55);
play[30].setName("將1");

//紅色棋子
//車
in = new ImageIcon("image\\紅車.GIF");
for (i=2,k=24;i<4;i++,k+=456){
play[i] = new JLabel(in);
play[i].setBounds(k,569,55,55);
play[i].setName("車2");
}

//馬
in = new ImageIcon("image\\紅馬.GIF");
for (i=6,k=81;i<8;i++,k+=342){
play[i] = new JLabel(in);
play[i].setBounds(k,569,55,55);
play[i].setName("馬2");
}

//相
in = new ImageIcon("image\\紅象.GIF");
for (i=10,k=138;i<12;i++,k+=228){
play[i] = new JLabel(in);
play[i].setBounds(k,569,55,55);
play[i].setName("象2");
}

//士
in = new ImageIcon("image\\紅士.GIF");
for (i=14,k=195;i<16;i++,k+=114){
play[i] = new JLabel(in);
play[i].setBounds(k,569,55,55);
play[i].setName("士2");
}

//兵
in = new ImageIcon("image\\紅卒.GIF");
for (i=21,k=24;i<26;i++,k+=114){
play[i] = new JLabel(in);
play[i].setBounds(k,398,55,55);
play[i].setName("卒2" + i);
}

//炮
in = new ImageIcon("image\\紅炮.GIF");
for (i=28,k=81;i<30;i++,k+=342){
play[i] = new JLabel(in);
play[i].setBounds(k,455,55,55);
play[i].setName("炮2" + i);
}

//帥
in = new ImageIcon("image\\紅將.GIF");
play[31] = new JLabel(in);
play[31].setBounds(252,569,55,55);
play[31].setName("帥2");
}

/**
** 線程方法控制棋子閃爍
*/

}

⑤ 求要中國象棋將,帥的走法的JAVA代碼

int[][] loaction=new int[10][9];
左帥: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
}

車就差不多了

⑥ 在網上了一段中國象棋的java源代碼,可是總出現錯誤,錯誤是指向類,說的是找不到符號,求解

把代碼錯誤提示貼出來,還有這些大部分是找不到JAR文件導致

以免其他原因請把中文改成英文

找不到符號基本是找不到引用的類

⑦ 求中國象棋的java源碼,可以實現人機對戰

象棋網路全書網
全是免費開放

⑧ 給出中國象棋的棋盤 用java代碼描述「x」的走法

如果你有點編程基礎的話 我就不羅嗦了
棋盤自然是二維數組了 你用什麼方法存儲自己選了

不知道你說的X 是啥東西 如果是象 那我說說吧
以前我也考慮過做象棋的游戲

首先象的行走為 對角線

對角線的特點就是 橫縱坐標的值操作相同 即加或者減 都為相同的數 比如 X+2 Y-2

以XY坐標系來說

象有4個方向可以走 假設當前的象處在 0點 也就是原點 那麼四個方向 分別是
1 . X+2 Y+2
2. X-2 y+2
3. X+2 Y-2
4. X-2 Y-2

以此種方式可以知道 它所移動的方向是什麼
比如 當前為 0,0 如果 它要移動到坐標2,2 則說明想方向1去移動了

判斷移動方向後 判斷是否有別腿現象
當然 就是不是+2的位置 而是+1的位置
比如要移動到X+2 Y+2 則判斷 X+1 y+1的位置是否有棋子

好了 說這么多 不知道你明白不 哎...

熱點內容
怎麼讀取伺服器地址文件java 發布:2024-10-05 05:12:21 瀏覽:75
獲取文件名java 發布:2024-10-05 05:12:12 瀏覽:937
為什麼qq找回密碼沒有密保 發布:2024-10-05 05:11:28 瀏覽:918
查詢存在的資料庫 發布:2024-10-05 05:03:04 瀏覽:630
安卓版微信如何找回聊天記錄 發布:2024-10-05 05:03:03 瀏覽:448
手機吃雞國際服要什麼配置 發布:2024-10-05 04:59:11 瀏覽:202
沙盒工廠怎麼看伺服器ip 發布:2024-10-05 04:53:13 瀏覽:83
psvftp工具下載 發布:2024-10-05 04:08:14 瀏覽:352
怎麼設qq空間密碼 發布:2024-10-05 04:00:51 瀏覽:439
積分兌換系統源碼 發布:2024-10-05 03:57:45 瀏覽:690