不愧是⼤⼚⽜⼈!⽤Java实现象棋⼩游戏(附超详细,超长究极⽆敌代码)本⽂实例为⼤家分享了java实现象棋⼩游戏的具体代码,供⼤家参考,具体内容如下
⽤Eclipse编写 java环境1.8jdk
代码如下
package xiangqi象棋;
/**
*中国象棋Java版V3.0
*源⽂件:Chess.java
*添加功能:实现了当前棋局的保存
**/
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<String> Var;
//规则类对象(使于调⽤⽅法)
ChessRule rule;
/**
** 单击棋⼦
** chessManClick = true 闪烁棋⼦并给线程响应
** chessManClick = false 吃棋⼦停⽌闪烁并给线程响应
*/
boolean chessManClick;
/**
** 控制玩家⾛棋
** chessPlayClick=1 ⿊棋⾛棋
** chessPlayClick=2 红棋⾛棋默认红棋
** chessPlayClick=3 双⽅都不能⾛棋
*/
int chessPlayClick=2;
int chessPlayClick=2;
//控制棋⼦闪烁的线程
Thread tmain;
//把第⼀次的单击棋⼦给线程响应
static int Man,i;
ChessMainFrame(){
new ChessMainFrame("中国象棋");
}
/**
** 构造函数
** 初始化图形⽤户界⾯
*/
ChessMainFrame(String Title){
//改变系统默认字体
Font font =new Font("Dialog", Font.PLAIN,12);
java.util.Enumeration keys = Defaults().keys(); while(keys.hasMoreElements()){
Object key = Element();
Object value = (key);
if(value instanceof javax.swing.plaf.FontUIResource){
UIManager.put(key, font);
}
}
/
/获⾏客格引⽤
con =ContentPane();
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);
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){
}
}
);
//窗体居中
Dimension screenSize = DefaultToolkit().getScreenSize();
Dimension frameSize =Size();
if(frameSize.height > screenSize.height){
frameSize.height = screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width = screenSize.width;
}入门的java游戏小程序
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]=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");
}
/**
** 线程⽅法控制棋⼦闪烁
*/
public void run(){
while(true){
//单击棋⼦第⼀下开始闪烁
if(chessManClick){
play[Man].setVisible(false);
//时间控制
try{
tmain.sleep(200);
}
catch(Exception e){
}
play[Man].setVisible(true);
}
//闪烁当前提⽰信息以免⽤户看不见else{
text.setVisible(false);
//时间控制
try{
tmain.sleep(250);
}
catch(Exception e){
}
text.setVisible(true);
}
try{
tmain.sleep(350);
}
catch(Exception e){
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论