java编程题:如何判断四个棋子连在一起?
(资料图)
非常简单的四子棋游戏
本人是刚学java的小白,最近在书上看到了有关四子棋游戏的编程题,就试着来写一写,代码也比较简单。
思路
写四子棋的难点是如何判断四个棋子连在一起。 下面给出图解: 观察上图,先从落棋点开始,设置一个计数器 i ,并初始化它为1,像左端移动,遇到的是跟落棋点相同颜色的棋子,则使 i 加1,继续向左端移动,没有棋子,则回到落棋点从而向右移动,向右端移动遇到第三个相同的棋,这时i = 3,然后继续向右移动遇到第四个棋子使 i = 4,到最后只要i = 4,即游戏胜利。再看下图。 按照上面的流程,先向左边移动,遇到没有棋子的点停止后 i = 2,再向右移动,遇到不同颜色的棋子后停止,i = 3,这样落棋点两边方向判断结束后,i < 4即游戏继续。
总结 判断游戏是否胜利,就是从棋子落点两个相反的方向,遇到相同的棋子使计数器数值加1,遇到无棋或颜色不同就结束向另一个方向,直到遇到无棋子和不同颜色的棋子,然后判断计数器是否为4。在四子棋中有7个方向需要判断。
import java.util.Scanner;/** * * * 玩法:1.跟五子棋玩法差不多,只是少一颗子,下棋只能选择每列下在每列棋子上面一格。 * 2.棋子分为黄、红,执黄先行。 * 3.胜利条件跟五子棋一样,就是少一颗子。 */class Desk {//棋桌类private char[][] date = new char[6][7];private Scanner scanner = new Scanner(System.in) ;private int hand = 1 ;//画出整个棋盘以及上面的棋子public void draw() {for (int i = 0; i < this.date.length; i++) {System.out.print("|");for (int j = 0; j < this.date[i].length; j++) {System.out.print(this.date[i][j] + "|");}System.out.println();}if (this.hand % 2 == 1) {System.out.print("现在是第" + this.hand + "手,轮到黄棋: ");playchess("Y");}else {System.out.print("现在是第" + this.hand + "手,轮到红棋: ") ;playchess("R");}}//控制落子public void playchess(char color) {this.hand ++;int place = scanner.nextInt() ;int i ;for (i = 5; i >= 0; i--) {//if (date[i][place] == "\u0000") {date[i][place] = color;break;}}if (i < 0)System.exit(1);else win(i, place, color) ;}//判断游戏是否有人胜利或平局(依据是根据落子位置的两个方向是否连成四子)public void win(int x, int place,char color) {int number = 1;//第一个方向(右斜线方向)for (int i = x - 1, j = place - 1; (i >= 0) && (j >= 0); i--, j--) {if (date[i][j] == color) {number++;}else break;}for (int i = x + 1, j = place + 1; (i <= 5) && (j <= if="" number="1;for" else="" int="" i="" -="" j="place">= 0) && (j <= 6); i--, j++) {if (date[i][j] == color) {number++;}else break;}for (int i = x + 1, j = place - 1; (i <= j="">= 0); i++, j--) {if (date[i][j] == color) {number ++ ;}else break;}if (number == 4)end(color, "win");//第三个方向(水平)number = 1;for (int i = x, j = place - 1; j >= 0; j--) {if (date[i][j] == color) {number ++ ;}else break ;}for (int i = x, j = place + 1; j <= 6; j++) {if (date[i][j] == color) {number ++ ;}else break;}if (number == 4)end(color, "win");//第四个方向(竖直)number = 1;for (int i = x + 1, j = place; i <= 5; i++) {if (date[i][j] == color) {number ++ ;}else break;}if (number == 4)end(color, "win") ;//判断平局for (int i = 0; i < date.length; i++) {for (int j = 0; j < date[i].length; j++) {if (date[i][j] != "Y" || date[i][j] != "R")draw() ;}}end(color, "s") ;}//判断游戏是否结束public void end(char color, String str) {if (str.equals("win")) {System.out.print(color + "棋获得胜利!!!");System.exit(0);}else {System.out.print("两棋子平局.") ;System.exit(0);}}}public class ChessOffour {public static void main(String[] args) {Desk desk = new Desk() ;desk.draw() ;}}
小白第一次写文章,代码也很可能有不足之处,谢谢大家阅读。求赞。
标签:
相关推荐:
最新新闻:
- 推荐21个高质量图片网站 免费免版权值得收藏
- 什么是水冷机箱?水冷机箱和风冷机箱有什么区别?
- 如何解决显卡驱动无法正常安装?联想启天M6900介绍及驱动
- Office2003序列号有哪些?Office2003专业版序列号和注册码分享
- 如何屏蔽热点资讯广告提示框?热点资讯怎么彻底卸载?
- 360加速球怎样开启?加速球一直红色应该怎样解决?
- usb音箱没有声音?音响插电视上没声音怎么设置?
- 如何通过邮件群发工资条?outlook群发工资条失败咋办?
- pp助手怎么修复闪退?pp助手有什么用?
- sbsettings怎么设置?sbsettings设置的具体步骤
- Fc2视频打不开了怎么办?打开Fc2视频的步骤
- taobaoprotect.exe是什么进程?taobaoprotect.exe进程占用内存的解决方法
- java编程题:如何判断四个棋子连在一起?
- 出现此选项卡已经恢复是怎么回事?出现此选项卡已经恢复解决办法
- 硬盘分区表都有什么修复方法?移动硬盘分区丢失后怎样找回?
- qq提取安装文件失败怎么办?压缩包无文件可提取咋回事?
- win10系统normal.dot在哪里?分享找到normal.dot文件的方法
- win7如何给文件设置密码?win7文件夹设置密码的具体步骤
- 如何做外链?做外链需要注意什么?
- secondary logon服务是什么?开启secondary logon服务详细方法
- 3dmark05怎么安装?3dmark05注册码分享
- Teracopy怎么样?Teracopy功能的及使用方法
- “东南亚小腾讯”大撤退,全面撤出欧洲市场
- 穿越时光隧道与古钓鱼城“面对面”|当前观察
- 天天热议:直降1000元 华硕 ProArt 创 16 2022 年终大促
- 游戏神U要来了 AMD居然定在情人节上市 全球观天下
- 每日简讯:最高6GHz睿频 英特尔13代酷睿i9-13900KS带来超凡体验
- 《霍格沃茨之遗》PC配置需求公布:推荐显卡1080 Ti
- FILA最好的时候已经过去?
- 当前资讯!《死亡空间:重制版》将采用2D地图 更易于使用!
- 黑鲨科技陨落,故事令人唏嘘_世界热文
- 《龙背上的农家》现已发售 Steam褒贬不一
- 【世界热闻】Q4利润增速一正一负,宁王让亿纬难望项背?| 见智研究
- 怪兽交配3D动作RPG新作《怪兽宇宙》1月上线
- 初代诞生26年 宝可梦种类现已超过1000种
- 三个月期美元Libor突破2008年金融危机期间高点 天天资讯
- 用上游戏本同款技术!联想小新Pro 16将支持独显直连
- 【环球速看料】ZOL科技早餐:英特尔6GHz睿频处理器上架,苹果新春电影《过五关》发布
- 节奏音游《节奏萌芽》2月1日全平台发售|世界快看
- 科幻Roguelike《巨人的肩膀》将于1月26日发行
- 比苹果MBP更轻 三星Galaxy Book 3 Ultra曝光
- 每日热文:木星卫星起降 NASA为创意买单
- 现代电车拥有横着走的蟹行模式
- CES总结:论性价比今年还得是买游戏本
- 苹果新设备可白嫖半年iCloud+ 2TB内存! 天天播报
- 环球今日讯!《三体》电视剧定档5小时 腾讯视频预约量突破200万
- 世界快资讯丨NS和《FIFA 23》是去年欧洲最畅销的主机/游戏
- 世界头条:《霍格沃茨之遗》使用D加密 系统需求最终版公布
- 全球快看:《尼尔:机械纪元》动画vs游戏画面对比视频分享
- 23长江C1票面利率为4.7000%:快看
- 全球速读:十倍变焦超远摄 适马60-600mm F4.5-6.3 DG DN OS发布
- 当现实中的尸体,变成你在游戏中打的丧尸-世界热门
- 天天快消息!《天龙八部之乔峰传》25日韩国上映 甄子丹将录韩版跑男
- 动作片《灭世男孩》首曝剧照 山姆·雷米监制-全球观焦点
- 国产模拟经营游戏《学园构想家》限时试玩版1月16日上线
- 世界看点:越是善解人意,越不爱社交不想聊天?
- 女子上班第一天因已婚被辞 公司赔偿100元误工费
- 快消息!《生化危机4:重制版》中配PV公开 艾达王亮相
- 纵向卡牌构筑肉鸽游戏《铁轨与墓穴》 将于2023Q1发售
- 《隐秘的角落》公布新预告 1月18日登录Steam 每日观点
- B站游戏年度榜单:国产FPS+建造《重装前哨》新预告
- 《卧龙:苍天陨落》多人物中配CG首曝 吕布霸气登场
- B站公布2022年必玩游戏榜单:法环、战神5等上榜
- 小布助手四周年幕后:主动的人让AI更主动|快报
- 类魂动作《堕落之主》中配预告公布 暗黑骑士推翻邪神_天天速看料
- 当前观点:国风生存rogue新游《通神榜》 2月14日欢乐上线
- 《NBA 2K23》第四赛季场边报告 扎克·拉文绽放光芒_环球新要闻
- 环球今热点:《师父》公布粤配预告 即将登陆Steam
- 萌蟹类魂游戏《蟹蟹寻宝奇遇》发布最新中文宣传片 年内发售 微速讯
- 世界即时看!《绝世好武功》新预告公布 发售日期待定
- 想投资AIGC领域,怎样才能不被忽悠? 环球快播
- 全球短讯!宁德时代:预计2022年净利润291亿元-315亿元,同比增长83%-98%
- 小屏安卓旗舰,三星 S23 外观曝光:紫、金、绿、黑 4 色可选
- 世界微动态丨小米扫拖机器人限时799 原价1999立减1200元
- 真我GT Neo5要来了 首发240W快充