• 课程设计——五子棋(201521123038)


    课程设计——五子棋(201521123038)


    一.团队课程设计博客链接

    JAVA课程设计——团队博客


    二.个人负责模块或任务说明

    • 后台算法编程,包括通用棋子的行动判断,电脑玩家的算法等涉及到棋子的部分
    • 解决代码bug

    三.自己的代码提交记录截图


    四.自己负责模块或任务详细说明

    • 因为以前没有涉及到游戏设计,遇到棋子的下法还是有点茫然,所以先在网上参考了一些关于棋子方位的判断方法,在有一定的思路之后按照自己的想法编程。

    GomokuModel:用来编写棋子的基本下法,在进行人人对战或人机对战时调用

    ●类内部数组定义数组 Chess[][]board=new Chess[16][16],Chess为枚举类

    ●将落子信息赋值数组

    ● 读取该位置棋子信息

    ●用于判断该位置是否已经有棋子

    ●清空数组信息,用于清屏

    ● 重置棋子,清空该位置的棋子信息,用于悔棋操作

    ●用于电脑玩家判断该位置是否能赢

    ●上述操作需要异常捕获,因为在代码测试过程中因为逻辑问题产生过数组越界异常,为保证代码安全给予保留

    isWin方法,用于判断是否赢棋

    • 以传入棋子的位置为中心点,定义东西南北是个方向的数据

    • 由西至东判断,连成五子时返回true,有北至南判断同理

    • 在进行两个斜方向判断前要将位置变量复原

    • 由西南至东北判断,东南至西北同理

    ComputerPlayer:设置电脑玩家,用于制定电脑玩家的落子

    ● 默认电脑玩家白棋后手

    playChess方法,返回位置数组pos

    • 设定变量,获取人类玩家最后的落子信息

    • 全盘遍历,将pos定义在临近人类玩家最后落子的位置

    • 判断遍历位置是否能让电脑玩家赢棋,能则返回当前位置信息

    • 上述操作没有返回,则从四个方向判断人类玩家是否有三个及三个以上相连棋子,有则将其堵住,没有则将p返回

    check方法,判断人类玩家是否有三个以上相连棋子和GomokuModel中的isWin方法类似

    • 定义变量

    • 主要判断方法


    Board中关系到棋子操作中的部分

    mousePressed

    • 默认人类玩家先手

    • 如果人人对战则将棋子变量colorName置白色,用于下一个人操作

    • 如果人机对战,则不对colorName进行操作,启用ComputerPlayer

    • 无论哪种方式,在下完一步棋之后都有判断是否赢棋

    • 人类玩家操作:

    • 电脑玩家:

    goback:悔棋操作,人人对战退一步,人机对战退两步

    五.课程设计感想

    • 总的来说五子棋对方向判断还是很重要的,需要时刻逻辑清晰,不然后面寻找bug会很艰难。
    • 两个人的磨合还是关键,界面和后台操作的融合都需要不断地修改代码。最后的的代码和最初的理念还是有差别的,这个过程中的交流很关键。
    • 在进行对战模式切换的时候遇到了变量传参的问题,修改了部分方法的返回值。所以实践还是很重要的。
  • 相关阅读:
    mapbox-gl开发:deck.gl轨迹图效果
    vscode双击选中单词,设置短横线不分隔
    CSS自定义滚动条样式,兼容IE浏览器
    flv 视频播放器
    mapbox、echarts实现地图流动效果
    echarts 小时图
    deckgl-triplayer流动效果
    vue使用flv视频监控组件
    qt学习中遇到的问题及处理方法
    GitHub入门
  • 原文地址:https://www.cnblogs.com/sakurai3104/p/7063564.html
Copyright © 2020-2023  润新知