JAVA小游戏(国王和大臣)

2023-11-18

棋规则和需求

规则:
棋子:2颗国王棋和(8+16)颗大臣棋;分别用黑白两色代表国王和大臣(黑子为国王、白子为大臣)
棋盘:5*9的二维棋盘,共37个交点,如图所示:在这里插入图片描述

吃子规则(包括移子和添子):
1、国王每回合可以选择移动一步、或者跳吃大臣一颗棋子,即就是间隔一个大臣棋子跳到对应空位置,大臣棋子被吃掉
2、大臣前16回合只能每次添加一颗棋子,只有将16颗棋子全部都落完后,第17回合才可以移动棋子;或者在落完棋子之前大臣就已经输了就不用移子操作了
胜负规则:
国王不能移动也不能跳吃则判负,大臣赢;
大臣被吃掉8颗棋子后就判负,国王赢
黑子落点情况:
1、与该黑子坐标距离绝对值为1的空白点坐标,即就是横、纵方向上的相邻空白点——国王在横纵方向上的移子落子情况;
2、与该黑子坐标距离绝对值为的空白点坐标,即就是45°斜方向上的相邻空白点——国王在45°斜方向上的移子落子情况;
3、在与该黑子坐标距离绝对值为1的坐标点上为白子时,可以落在与该黑子距离绝对值为2的空白点上,同时该白子被吃掉——国王在横纵方向上吃子的落子情况;
4、在与该黑子坐标距离绝对值为的坐标点上为白子时,可以落在与该黑子距离绝对值为2的空白点上,同时该白子被吃掉——国王在45°斜方向上吃子的落子情况;
白子落子情况:
1、与该白子坐标距离绝对值为1的空白点坐标,即就是横纵方向上的相邻空白点上——大臣在横纵方向上的落子情况;
2、与该白子坐标距离绝对值为的空白坐标点上,即就是45°斜方向上的控标点上——大臣在45°斜方向上的落子情况;
3、白子落子分两个阶段,添子和移子阶段,前16步为添子阶段,之后均为移子阶段。

游戏规则:
1、有良好的UI界面,用户体验良好
2、鼠标点击进行出棋子,玩家两人轮流下棋,固定黑棋优先
3、有人—人、人—机两种模式选择,人机能够按规则执行下棋即可
4、玩家能够重新开始游戏
5、可以悔棋、能够自动判断输赢
6、能够返回主页封面
7、在已经落有棋子的地方不能再落棋子
8、有退出游戏的功能,

游戏主要代码如下:

	if (game.isGameOver()) {
		if (game.getEatNum() == 8) {
			gameView.showMsg("国王已取得胜利,请重新开始游戏!");
		}else {
			gameView.showMsg("大臣已取得胜利,请重新开始游戏!");
		}
		return;
	}
	if (!game.haveChess(i, j) && !game.isPitch()) {			//该点没有棋子时且未选中棋子时
		if (game.isWhite()) {		//白棋下的时候
			game.addWhiteChess(i, j);
		}else {
			game.addBlackChess(i, j);
		}
	}else if(game.haveChess(i, j) && !game.isPitch()) {		//该点有棋子且未选中棋子时
		if (game.pitchChess(i, j) == false) {
			return;
		}
	}else if(game.isPitch()) {								//已经选中了一个棋子时
		if (game.isWhite()) {
			game.checkAndMoveWhite(i, j);
		}else {
			game.checkAmdMoveBlack(i, j);
		}
	}
	gameView.fillAllChess();						//刷新棋子
	gameView.showState(getState());
	game.checkGame();								//判断是否胜利
	games.add(game.clone());						//添加到栈中				

游戏截图如下:
在这里插入图片描述
在这里插入图片描述
源码下载

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA小游戏(国王和大臣) 的相关文章

随机推荐

  • python处理excel数据

    文章目录 前言 一 用到的模块是什么 二 execl表格的样式 三 模块的使用 1 引入模块 2 读取excel表数据 3 将写入excel表 四 代码分析 1 代码逻辑 2 选出有用的股票号并与回报率关联 3 将全部数据按照所需要的股票号
  • safari无法打开网页是什么原因?mac上的Safari浏览器打不开网页怎么办?

    只要是MacOS系统的都会附带一个Safari浏览器 完美兼容Mac PC 及 iPod touch iPhone iPad 功能和性能自然是不错的 但是也会出现如safari浏览器无法打开网页的情况 那么safari无法打开网页是什么原因
  • 快速构建一个免费的IP代理池

    文章使用的代理ip链接为 云代理 http www ip3366 net stype 1 page 1 验证IP网站为 http http httpbin org ip get方式请求进去 要设置好请求头 cookie self faker
  • 2019上半年勒索病毒专题报告

    2019上半年由勒索病毒攻击造成的国内外大小事件 可发现伴随着传统行业逐渐数字化 网络化 智能化 逐步拥抱产业互联网化的大浪潮中 暴露出一系列网络安全问题 勒索病毒也乘机发难 疯狂敛财 影响日渐扩大 全球范围内的交通 能源 医疗等社会基础服
  • thinkpad计算机快捷键,Thinkpad笔记本键盘F1-F12功能键详细介绍

    Thinkpad笔记本电脑F1 F12快捷键的功能是什么 笔记本电脑F1 F12总共12个功能键 每个键的作用不一样 同一个键 不同机型的作用也不一样 通过这些快捷键可以快速调整音量 亮度 开启无线功能等等 Thinkpad笔记本电脑机型特
  • 看小白如何解决ajax跨域问题

    由于此前很少写前端的代码 哈哈 不合格的程序员啊 最近项目中用到json作为系统间交互的手段 自然就伴随着众多ajax请求 随之而来的就是要解决ajax的跨域问题 本篇将讲述一个小白从遇到跨域不知道是跨域问题 到知道是跨域问题不知道如何解决
  • elementui把上传的图片转为base64

    使用组件 然后on change绑定一个方法来获取文件信息 auto upload设置为false即可
  • 具有文件操作和滤波功能的Open3D软件界面(附python pyqt 代码)

    安装依赖 pip install pyqtgraph i https pypi tuna tsinghua edu cn simple pip install pyopengl i https pypi tuna tsinghua edu
  • python 100以内的质数

    可以使用for循环 求100以内的质数 i 2 for j in range 1 101 如果100以内的数字除以2的余数等于0 if j i 0 如果是就跳过 继续下一个循环 continue print j 要找出从1到100之间的质数
  • 在 Python 中打印变量之间没有空格

    文章目录 使用 sep 参数打印变量之间没有空格 使用加法 运算符打印不带空格的变量 在 Python 中不使用换行符或空格打印 使用格式化的字符串文字来打印没有空格的变量 例如 print f hello variable 1 格式化字符
  • oracle 重设redo log 和倒入

    重设redo log alter system set allow resetlogs corruption true scope spfile recover database until cancel using bakcup cont
  • [RK3288][Android6.0] 调试笔记 --- 系统第一次开机进入Recovery模式原因

    Platform ROCKCHIP OS Android 6 0 Kernel 3 10 92 描述 当系统全部download开机后 会默认进入Recovery模式 这个其实是misc分区里的内容在作怪 misc分区 misc img是R
  • String、StringBuffer、StringBuilder的区别

    转载 极客时间 JAVA核心技术36讲 https www cnblogs com ygj0930 p 6581009 html 一 String创建机制 JAVA语言在创建一个字符串时 首先检查池中是否有值相同的字符串对象 如果有则不需要
  • 朴素贝叶斯--matlab自带工具箱的使用

    朴素贝叶斯分类使用条件 其数据点的维数 即特征之间相互独立 当属性之间相关性较小时 分类效率好 当属性之间相关性较大时 分类不如决策树 属性之间的相关性获得 用协方差矩阵 matlab自带函数cov获得 1 nb NaiveBays fit
  • git pull时报错Filename too long

    在git bash窗口执行以下命令 全局设置git支持长文件名 git config global core longpaths true
  • ClickHouse实时分析(一)- ClickHouse入门

    目录 1 什么是ClickHouse 1 1 OLAP场景的关键特征 1 2 列式数据库更适合OLAP场景的原因 1 2 1 输入 输出 1 2 2 CPU 2 ClickHouse的特点 2 1 列式存储 2 2 数据压缩 2 3 数据的
  • DALI协议了解

    DALI Digital Addressable Lighting Interface 是一种新的智能照明系统的控制协议 系统具有结构简单 安装方便 操作容易 功能良优等特点 协议定义了电子镇流器与控制器之间的通信方式 DALI协议系统由分
  • 哨兵节点:思想简单,效果很棒的的编程算法

    文章目录 普通的算法 哨兵算法 小结 别人的经验 我们的阶梯 今天和同事一起调代码 定位到一处很耗时的地方 在某个线程中 同步周期需要保证在2毫秒 如果耗时不到2毫秒 那么就让剩下的时间进行sleep 但是在调用一个模块的内部函数时 时不时
  • 轻盈绘图的Excalidraw插件

    朋友们 你们的Obsidian彩虹屁狂魔重新上线 从这篇Obsidian实践开始 我想跟大家陆续分享一下 Obsidian中那些让人眼前一亮的宝藏插件 原本我想从逻辑上最基础 使用上最简单的插件讲起 然鹅 请原谅我实在按捺不住自己迫切的心情
  • JAVA小游戏(国王和大臣)

    棋规则和需求 规则 棋子 2颗国王棋和 8 16 颗大臣棋 分别用黑白两色代表国王和大臣 黑子为国王 白子为大臣 棋盘 5 9的二维棋盘 共37个交点 如图所示 吃子规则 包括移子和添子 1 国王每回合可以选择移动一步 或者跳吃大臣一颗棋子