【笔记】JAVA 中国象棋游戏 部分源码

java实现中国象棋 源代码 java实现中国象棋 在网上找了很久中国象棋实现的源代码,终于找到了,下面就是源代码。 /* *中国象棋Java版V3.0 *源文件:Chess.java *添加功能:实现了当前棋局的保存 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java... 阅读详情

/**
 * 演示棋谱类
 *
 * @author cnlht
 */
public class Demon extends JPanel implements ActionListener, Runnable {
 public JButton replay = null, next = null, auto = null, stop = null;
 LinkedList 棋谱 = null;
 Thread 自动演示 = null; 中国象棋:http://xiangqi.sz4j.com/forum-39-2.html
 int index = -1;
 ChessBoard board = null;
 JTextArea text;
 JTextField 时间间隔 = null;
 int time = 1000;
 String 演示过程 = "";
 JSplitPane splitH = null, splitV = null;

 public Demon(ChessBoard board) {
  this.board = board;
  replay = new JButton("重新演示");
  next = new JButton("下一步");
  auto = new JButton("自动演示");
  stop = new JButton("暂停演示");
  自动演示 = new Thread(this);
  replay.addActionListener(this);
  next.addActionListener(this);
  auto.addActionListener(this);
  stop.addActionListener(this);
  text = new JTextArea();
  时间间隔 = new JTextField("1");
  setLayout(new BorderLayout());
  JScrollPane pane = new JScrollPane(text);
  JPanel p = new JPanel(new GridLayout(3, 2));
  p.add(next);
  p.add(replay);
  p.add(auto);
  p.add(stop);
  p.add(new JLabel("时间间隔(秒)", SwingConstants.CENTER));
  p.add(时间间隔); 象棋游戏:http://xiangqi.sz4j.com/forum-39-3.html
  splitV = new JSplitPane(JSplitPane.VERTICAL_SPLIT, pane, p);
  splitH = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, board, splitV);
  splitV.setDividerSize(5);
  splitV.setDividerLocation(400);
  splitH.setDividerSize(5);
  splitH.setDividerLocation(460);
  add(splitH, BorderLayout.CENTER);
  validate();
 }

 public void set棋谱(LinkedList 棋谱) {
  this.棋谱 = 棋谱;
 }

 public char numberToLetter(int n) {
  char c = '\0';
  switch (n) {
  case 1:
   c = 'A';
   break;
  case 2:
   c = 'B';
   break;
  case 3:
   c = 'C';
   break;
  case 4:
   c = 'D';
   break;
  case 5:
   c = 'E';
   break;
  case 6:
   c = 'F';
   break;
  case 7:
   c = 'G';
   break;
  case 8:
   c = 'H';
   break;
  case 9:
   c = 'I';
   break;
  case 10:
   c = 'J';
   break;
  }
  return c;
 }

 public void actionPerformed(ActionEvent e) {
  if (e.getSource() == next) {
   index++;
   if (index < 棋谱.size()) {
    演示一步(index);
   } else {
    演示结束("棋谱演示完毕");
   }
  }
  if (e.getSource() == replay) {
   board = new ChessBoard(45, 45, 9, 10);
   splitH.remove(board);
   splitH.setDividerSize(5);
   splitH.setDividerLocation(460);
   splitH.setLeftComponent(board);
   splitH.validate();
   index = -1;
   text.setText(null);
  }
  if (e.getSource() == auto) {
   next.setEnabled(false);
   replay.setEnabled(false);
   try {
    time = 1000 * Integer.parseInt(时间间隔.getText().trim());
   } catch (NumberFormatException ee) {
    time = 1000;
   }

   if (!(自动演示.isAlive())) {
    自动演示 = new Thread(this);
    board = new ChessBoard(45, 45, 9, 10);
    splitH.remove(board);
    splitH.setDividerSize(5);
    splitH.setDividerLocation(460);
    splitH.setLeftComponent(board);
    splitH.validate();
    text.setText(null);
    自动演示.start();
   }

  }
  if (e.getSource() == stop) {
   if (e.getActionCommand().equals("暂停演示")) {
    演示过程 = "暂停演示";
    stop.setText("继续演示");
    stop.repaint();
   }
   if (e.getActionCommand().equals("继续演示")) {
    演示过程 = "继续演示";
    自动演示.interrupt();
    stop.setText("暂停演示");
    stop.repaint();
   }
  }
 }

 public synchronized void run() {
  for (index = 0; index < 棋谱.size(); index++) {
   try {
    Thread.sleep(time);
   } catch (InterruptedException e) {
   }
   while (演示过程.equals("暂停演示")) {
    try {
     wait();
    } catch (InterruptedException e) {
     notifyAll();
    }
   }
   演示一步(index);
  }
  if (index >= 棋谱.size()) {
   演示结束("棋谱演示完毕");
   next.setEnabled(true);
   replay.setEnabled(true);
  }
 }

 public void 演示一步(int index) {
  MoveStep step = (MoveStep) 棋谱.get(index);
  Point pStart = step.pStart;
  Point pEnd = step.pEnd;
  int startI = pStart.x;
  int startJ = pStart.y;
  int endI = pEnd.x;
  int endJ = pEnd.y;
  ChessPiece piece = (board.point)[startI][startJ].getPiece();
  if ((board.point)[endI][endJ].isPiece() == true) {
   ChessPiece pieceRemoved = (board.point)[endI][endJ].getPiece();
   (board.point)[endI][endJ].reMovePiece(pieceRemoved, board);
   board.repaint();
   (board.point)[endI][endJ].setPiece(piece, board);
   (board.point)[startI][startJ].set有棋子(false);
   board.repaint();
  } else {
   (board.point)[endI][endJ].setPiece(piece, board);
   (board.point)[startI][startJ].set有棋子(false);

  }
  String 棋子类别 = piece.棋子类别();
  String name = piece.getName();
  String m = "#" + 棋子类别 + name + ": " + startI + numberToLetter(startJ)
    + " 到 " + endI + numberToLetter(endJ);
  text.append(m);
  if (piece.棋子类别().equals(board.黑方颜色))
   text.append("\n");
 }

 public void 演示结束(String message) {
  splitH.remove(board);
  splitH.setDividerSize(5);
  splitH.setDividerLocation(460);
  JLabel label = new JLabel(message);
  label.setFont(new Font("隶书", Font.BOLD, 40));
  label.setForeground(Color.blue);
  label.setHorizontalAlignment(SwingConstants.CENTER);
  splitH.setLeftComponent(label);
  splitH.validate();
 }
}

 

Java游戏开发——中国象棋联机版 游戏介绍: 中国象棋是起源于中国的一种棋戏,属于二人对抗性游戏的一种,在中国有着悠久的历史。由于规则简单,趣味性强,成为流行极为广泛的棋类游戏。 中国象棋使用方形格状棋盘及红黑二色圆形棋子进行对弈,棋盘上有十条横线、九条竖线共分成90个交叉点;中国象棋的棋子共有32个,每种颜色16个棋子,分为7个兵种,摆放和活动在交叉点上。双方交替行棋,先把对方的将(帅)“将死”的一方获胜。 本篇博文开发了一... 阅读详情

相关推荐

java实现象棋游戏(附完整源码)

java实现象棋游戏(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1453

Java版本实现中国象棋

中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史,由于用具简单,趣味性强,成为流行极为广泛的棋艺活动。阿巴阿巴阿巴代码结构:Button类和Rect类是直接使用前面画板中的类,Qizi类是所有棋子的父类每个棋子都要继承Qizi父类并重写getNext方法,该方法是返回棋子可以前进的位置。

meisir666的博客 4024

Java实现的中国象棋游戏源码分析与实战

Java是一种广泛应用于企业级开发的语言,它强大的跨平台特性、稳定的性能以及庞大的生态系统,使其成为游戏开发的有力候选者。在游戏开发领域,Java编程不仅限于小游戏或独立游戏,它在一些大型在线游戏和移动游戏开发中也发挥着重要作用。Java通过JVM(Java虚拟机)提供了一个安全且可控的运行环境,这在游戏开发中尤为重要,因为它能够帮助开发者避免许多底层错误,提高开发效率。

weixin_36431814的博客 1069

JavaSE:实现象棋游戏

JavaSE:实现象棋游戏

月临水的博客 2353

Android中国象棋游戏完整源码解析

打开Android Studio后,你将看到一个包含菜单栏、工具栏、编辑区、项目视图、日志控制台等部分的界面。掌握如何使用这些界面组件对提高开发效率至关重要。XML布局中常用的控件包括TextViewButtonImageViewEditText等。TextView用于显示文本,Button用于响应点击事件,ImageView用于显示图片,而EditText则提供用户输入功能。例如,以下是一个包含多种控件的XML布局:<TextView。

weixin_35750953的博客 991

Java实现中国象棋小游戏完整源码解析

棋子是象棋中最基本的逻辑单元。每种棋子具有不同的移动规则和行为,因此我们采用面向对象的方式,将公共行为抽象为接口或基类。在象棋AI中,常用的策略包括:极小极大算法(Minimax)Alpha-Beta剪枝启发式评估函数棋谱库匹配模块划分要清晰:良好的模块化设计能显著降低调试难度;面向接口编程:使系统更易于扩展和维护;测试驱动开发(TDD):提前编写测试用例有助于减少后期返工;代码复用与设计模式。

weixin_33363025的博客 642

基于java的 中国象棋游戏

在最近的几年当中,我们通过改革开放引进许多新的技术,而用计算机编写的象棋程序也拥有极高的水平。20世纪的时候,有一个算法非常大的提升了机器下棋水准,alpha-beta修剪算法大家可以上了解一下,把需要走下一步棋用的搜索量降到了最低。我们通过前面学术人员总结出的经验和教训,来设计我们自己的程序,我们自己的软件。Zobrist键值;3.3 ZOBRIST键值的工作原理及用途 11。3.3.1 ZOBRIST键值的工作原理 11。3.2 ZOBRIST键值的实现方法 11。

QQ80213251的博客 306

JAVA 实现《中国象棋》游戏-全部源码

# 主要设计 1、寻找棋盘界面和对应的棋子图片,程序设计棋盘界面和功能菜单 2、设计不同的棋子的移动逻辑 3、棋子移动时,要有音效 4、设计对手AI的逻辑算法,这里运用了极大极小值搜索算法,设置不同的搜索深度AI(智能不同) 5、对局开始前,双方棋子在棋盘上的摆法。 6、对局时,由执红棋的一方先走,双方轮流走一步。 7、轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走了一着。 8、双方各走一着,称为一个回合。 9、走一着棋时,如果己方棋子能够走到的位置有对方棋子存在,就可以把对方棋子吃掉而占领那个位置。 10、一方的棋子攻击对方的帅(将),并在下一着要把它吃掉,称为“照将”,或简称“将”。“照将”不必声明。被“照将”的一方必须立即“应将”,即用自己的着法去化解被“将”的状态。如果被“照将”而无法“应将”,就算被“将死”。 11、特别设计了人机对弈,人人对弈,还有AI对AI对弈 需要技术指导,写项目程序,等更多服务请加微信xiaoxuzhu01联系博主

Java游戏开发 —— 象棋

一个AI极其弱智的象棋游戏,有事AI那块暂时未做完!

小木鱼的博客 1万+

1.1.4 运用防火墙实现入侵防御

摘要:本文详细介绍了某公司网络拓扑中防火墙FW1的配置过程。主要内容包括:1)通过web界面登录防火墙;2)配置三个接口的IP地址及所属安全区域;3)创建两个入侵防御配置文件(anti_untrust和anti_trust);4)配置安全策略untrust2dmz和trust2dmz,分别允许公网/内网访问WWW服务器;5)保存配置。操作步骤配有详细截图说明,涉及接口配置、安全区域划分、入侵防御策略设定等关键环节,最终实现内外网对服务器Server1的安全访问控制。(149字)

Ljs040411的博客 2135

四旋翼无人机数学模型推导

本周开始进行四旋翼无人机的学习工作,首先来进行四旋翼无人机的数学模型推导工作。。 四旋翼动力学数学模型 坐标变换 介绍四旋翼数学模型之前,首先引入坐标变换的概念,定义两个坐标系惯性坐标系{E},以及机体坐标系{B},惯性坐标系就相当于在地面建立的、静止不动的坐标系,也是我们操纵无人机所在的空间,而机体坐标系是建立于四旋翼机体之上,随着四旋翼姿态变换而变化,所以建立一种地面上的惯性坐标系与四旋翼机体坐标系之间的转换关系,就有这个必要。 对于惯性坐标系{E},以及机体坐标系{B},它们之间的转换关系

BiuBiuSun的博客 1万+

java chess象棋游戏开发功能需求,【笔记】JAVA 中国象棋游戏 部分源码

/*** 演示棋谱类** @author cnlht*/public class Demon extends JPanel implements ActionListener, Runnable {public JButton replay = null, next = null, auto = null, stop = null;LinkedList 棋谱 = null;Thread 自动演示 ...

weixin_39640767的博客 154

深度学习PyTorch代码模板——模型训练框架、数据处理、绘图…

个人用深度学习代码模板:模型训练框架、数据处理、绘图等。待补充。

https://www.hyperplasma.top 1908

Java+Swing实现中国象棋游戏

Java+Swing实现中国象棋游戏,开始游戏,悔棋,退出功能。

水坚石青的博客 1万+

矩阵束(Matrix Pencil)入门:从通信系统到控制理论,它为何是建模利器?

本文深入探讨矩阵束(Matrix Pencil)在通信系统与控制理论中的关键作用,揭示其作为复杂系统建模利器的独特价值。从MIMO系统的多径干扰分析到电力系统稳定性判据,矩阵束通过`A-λB`方程求解提供精准建模方案,显著提升5G通信和工业控制等领域的性能表现。

weixin_30134145的博客 360

Unity零基础到进阶 | Unity中的内存泄漏全解析,原因、排查及避免

Unity 内存泄漏并非传统C++语境中的野指针或未释放堆内存,而是基于其「托管内存(C#)+ 原生内存(引擎/非托管)」双架构的特殊问题——即已废弃、不再被业务逻辑使用的内存块,无法被引擎或系统自动回收,持续占用内存空间,最终引发内存暴涨、GC卡顿、OOM(内存溢出)崩溃,其中移动端、主机端受影响最显著。 Unity 内存主要分为三类,其中泄漏仅发生在前两类,栈内存因系统自动分配/释放,无泄漏风险:

努力前行,总会成为自己心中的那道光 1万+

基于Java+Swing实现中国象棋游戏

1、寻找棋盘界面和对应的棋子图片,程序设计棋盘界面和功能菜单2、设计不同的棋子的移动逻辑3、棋子移动时,要有音效4、对局开始前,双方棋子在棋盘上的摆法。5、对局时,由执红棋的一方先走,双方轮流走一步。6、轮到走棋的一方,将某个棋子从一个交叉点走到另一个交叉点,或者吃掉对方的棋子而占领其交叉点,都算走了一着。7、双方各走一着,称为一个回合。8、走一着棋时,如果己方棋子能够走到的位置有对方棋子存在,就可以把对方棋子吃掉而占领那个位置。

pangjiaqian的博客 964

华为OD机试真题 新系统 - 8位LED控制器 (Java/Py/C/C++/Js/Go)

本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 1978

用java怎么做中国象棋的小游戏_java开发中国象棋小游戏

大小: 11.10M文件类型: .rar金币: 1下载: 0 次发布日期: 2020-12-27资源简介红方和黑方可以进行模拟象棋对战。eclipse-mar2 jdk1.7或者1.8功能保证可以运行.资源截图 代码片段和文件信息packagecom.yaoyun.chess.controller;importjava.awt.event.MouseAdapter;importjav...

weixin_35515918的博客 541

TVS 管击穿电压与钳位电压的工程解析

TVS二极管的核心参数击穿电压(VBR)和钳位电压(VC)常被混淆,但二者具有本质区别。VBR是

硬核科技 480

【YOLOv8改进-损失函数】 YOLOv8自带损失函数CIoU / DIoU / GIoU 详解,以及如何切换损失函数

在介绍YOLOv8中的各种Iou之前,我们先来了解了解目标检测中的损失函数。目标检测模型通常包含两类损失函数:类别损失(分类)和位置损失(回归)。这两类损失函数用于检测模型的最后一部分,根据模型的输出(类别和位置)以及实际标注框(类别和位置),分别计算类别损失和位置损失。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 5191

Java实现中国象棋(人机对战)

简介 Hello,I'm Shendi 花了五天时间用 Java 写了一个中国象棋. 拥有大概如下功能 象棋基本功能 可走路线点显示 人机对战 移动动画 我方永远是下方 成品视频 Java制作的中国象棋+简单AI 更多实战内容请进入我的实战专栏:https://blog.youkuaiyun.com/qq_41806966/category_9656338.html 点个关注吧~ 需要源码点这里:https://github.com/1711680493/Applicatio...

砷碲 - Shendi 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

中国象棋【附源码】

中国象棋,java精品项目,毕业设计,计算机系,计算机毕业设计,程序设计,设计与实现,源码,H5, 中国象棋【附源码】 我的网站已经上线了 http://javapub.net.cn/ 文末源码、免费获取 文末源码、免费获取 文末源码、免费获取 点赞再看,养成习惯 适合人群:初级学习者和爱好者,下面有展示图。计算机毕业设计 文章目录1 前言2 正文2.1 展示预览2.2 项目结构2.2 主要代码展示源码下载系列推荐:[查看更多博主首页更多实战项目 >>>](https://blog.

JavaPub 5881

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java课程设计—中国象棋(源代码及视频)

谢谢大家的支持,您的一键三连是 罡罡同学前进的最大动力! 一键三连 一键三连 一键三连 一键三连 一键三连 一键三连 传送地址 数据结构课程设计——校园导游系统(C语言): B站视频: https://www.bilibili.com/video/BV1ui4y137X9 优快云源码: https://blog.youkuaiyun.com/m0_46625346/article/details/107149473 Java课程设计——中国象棋 B站视频:https://www.bilibili

m0_46625346的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【亲测免费】 Java小游戏中国象棋源码

Java小游戏中国象棋源码 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到Java小游戏中国象棋源码仓库!本仓库提供了一个完整的Java实现的中国象棋游戏源码,适合Java初学者学习和参考。 项目介绍 本项目是一个基于Java语言开发的中国象棋小游戏。通过这个项目,你可以学习到如何使用Java进行图形用户界面(GUI)开发,以及如何实现一个简单的棋类游戏逻辑。 功能特点...

gitblog_09703的博客 465
上一篇: 朋友写的一个中国象棋游戏,JAVA代码
下一篇: openeim 成片的蝴蝶兰盛开在绿树之间
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值