首页 > 其他分享 >类设计方法:以五子棋为例

类设计方法:以五子棋为例

时间:2024-09-16 10:24:12浏览次数:12  
标签:棋局 裁判 为例 对象 五子棋 玩家 设计 棋盘 数据

概述

本篇将讨论一下如何进行面向对象编程(OOP),并将其分为了提取对象描述对象行为定义字段和方法设计函数句柄等多个步骤。

什么是面向对象(OOP)?


面向过程编程(POP)

  • 基本思想:将程序视为一系列的操作步骤,重点在于如何解决问题,按顺序执行这些操作。
  • 结构:程序由函数(或过程)和数据组成,函数通过操作数据来实现功能。
  • 特点:
    1. 顺序性:按步骤执行,从上到下逐行执行代码。
    2. 模块化:通过函数或过程将功能模块化,易于复用和维护。
    3. 数据与函数分离:数据和操作数据的函数是分开的。

面向对象编程(OOP)

  • 基本思想:将程序视为一组对象的集合,每个对象都是类的实例,封装了数据和操作这些数据的方法。
  • 结构:程序由类和对象组成,类定义了对象的属性和方法,对象是类的具体实例。
  • 特点:
    1. 封装:将数据和操作数据的方法封装在对象中,提供公共接口,隐藏内部实现细节。
    2. 继承:类可以继承其他类的属性和方法,实现代码重用和扩展。
    3. 多态:不同对象可以以相同的方式响应相同的消息,提高代码的灵活性和可扩展性。

类设计流程

提取对象 & 描述对象行为


在五子棋对局中,主要的对象包括玩家裁判棋盘,每个对象的行为可以简洁地描述如下:

  • 玩家 Agent:分析棋盘上的棋局,制定策略,并在棋盘上选择最佳位置落子。考虑对手的可能走法,并进行相应的防守或进攻。

  • 裁判 Judge:监督整个对局过程,确保所有玩家遵守游戏规则。同时裁判需确保棋局状态的透明度,

  • 棋盘 Chessboard:记录和维护棋子的位置数据,支持玩家进行棋局分析。棋盘需要持续更新棋子的状态,并判断是否出现了五子连珠。

这三个类并不是同级的类,很明显能看出来,裁判Judge应当是层级更高的类,它在落子过程中负责监督数据的传递,确保棋局信息的透明,通知玩家当前回合,并监督玩家的落子行为等。简单来说,玩家Agent和棋盘Chessboard都是由裁判Judge进行管理的。

数据在类之间的传递过程为:

  1. 裁判从棋盘获得棋局信息,并向玩家提供信息。
  2. 玩家作出决策后,将决策信息反馈给裁判。
  3. 裁判对玩家的决策进行审查,若合法,则将决策传递给 棋盘。
  4. 棋盘执行玩家的决策,并更新棋局状态,将新的棋局信息返回给 裁判。
  5. 裁判根据更新的棋局信息,重复第一步,直至比赛结束。

棋盘 Chessboard


棋盘类主要提供落子、以及访问数据的功能。

Field

  1. board:棋盘数据
  2. currentPlayer:当前玩家
  3. isGameEnded:游戏状态
  4. winner:胜利玩家

Method

  1. getChessboard():获取棋盘数据
  2. getCurrentplayer():获取当前玩家
  3. getGameStatus():获取游戏状态
  4. makeMove():落子
  5. reset():重置棋盘

字段(Field):指类或对象中的变量,存储数据的地方。也称为属性(Property)或成员变量(Member Variable)。
方法(Method):指类或对象中定义的函数,用于操作字段或实现特定功能。也称为函数(Function)或成员函数(Member Function)。

Agent 智能体类


Field

  1. ROI:感兴趣区域
  2. player:玩家阵营

Method

  1. decision():决策
  2. #updateROI():更新感兴趣区域
  3. #calReward():获取游戏状态
  4. #chooseDecision():选择决策

带'#'的表示私有函数

Judge裁判类


Field

  1. chessboard:棋盘数据
  2. agentB:玩家1(执黑)
  3. agentW:玩家2(执白)

Method

  1. game():创建一局游戏
  2. step():执行一次落子
  3. #end():结束游戏

标签:棋局,裁判,为例,对象,五子棋,玩家,设计,棋盘,数据
From: https://www.cnblogs.com/SXWisON/p/18415939

相关文章

  • springboot+vue信息安全知识学习微信小程序【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,信息安全已成为现代社会不可忽视的重要议题。网络攻击、数据泄露、隐私侵犯等事件频发,不仅给个人用户带来巨大损失,也对企业的运营安全和国家的信息安全构成了严峻挑战。在此背景下,提升公众的信息安全意识和技......
  • springboot+vue学生就业信息管理系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着高等教育的普及与就业市场的日益复杂化,学生就业问题已成为社会各界关注的焦点。传统的学生就业管理方式往往依赖于纸质档案、人工统计与信息传递,不仅效率低下,且难以实现信息的实时更新与共享。同时,招聘单位与学生之间信息不对称,导......
  • springboot+vue疫情防控管理系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景在全球化日益加深的今天,突发公共卫生事件如新冠疫情的爆发,对全球经济、社会生活及公众健康构成了严峻挑战。疫情防控成为各国政府和社会各界高度关注的议题。传统的疫情防控手段往往存在信息传递滞后、监测覆盖面不全、管理效率低下等......
  • 【开源免费】基于SpringBoot+Vue.JS企业客户管理系统(JAVA毕业设计)
    本文项目编号T036,文末自助获取源码\color{red}{T036,文末自助获取源码}......
  • 【开源免费】基于SpringBoot+Vue.JS学生宿舍管理系统(JAVA毕业设计)
    本文项目编号T035,文末自助获取源码\color{red}{T035,文末自助获取源码}......
  • 软件设计之JavaWeb(3)
    软件设计之JavaWeb(3)此篇应在MySQL之后进行学习:路线图推荐:【Java学习路线-极速版】【Java架构师技术图谱】尚硅谷全新JavaWeb教程,企业主流javaweb技术栈资料可以去尚硅谷官网免费领取此章节最好学完JDBC观看学习内容:请求转发与响应重定向路径问题MVC架构模式1、......
  • 小米SUV最新谍照曝光:动感设计,疑似对标法拉利Purosangue
    9月16日最新动态,知名汽车博主@电动星球小新今日分享了一组小米首款SUV车型的路试谍照。从公布的图片中可以看出,小米SUV呈现出强烈的运动风格,与奥迪A4Avant并列停放时,更能凸显其偏向年轻化和动感的设计理念,有网友戏称其颇有几分法拉利Purosangue的味道。车身设计与特征溜背......
  • Java计算机毕业设计疫苗接种管理系统的设计与实现(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球公共卫生事件的频发,疫苗接种作为预防和控制传染病的有效手段,其重要性日益凸显。然而,传统的手工记录与管理方式已难以满足大规模、高效率的疫......
  • Java计算机毕业设计学生综合管理小程序(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在数字化时代,高校作为知识传播与创新的前沿阵地,其管理模式正逐步向智能化、便捷化转型。随着学生需求的多元化与个性化发展,传统的学生管理模式已难以......
  • mysql5.5源码主从复制搭建(以两台机器的单实例为例)
    mysql5.5源码主从复制搭建(以两台机器的单实例为例)如果对运维课程感兴趣,可以在b站上、csdn或微信视频号上搜索我的账号:运维实战课程,可以关注我,学习更多免费的运维实战技术视频项目1  配置mysql服务器的主从结构(开始时主从数据不一致时需要找到临界点的主从同步,主库初始......