# cpp_project **Repository Path**: scy157609962/cpp_project ## Basic Information - **Project Name**: cpp_project - **Description**: 算法与编程项目 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-27 - **Last Updated**: 2022-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cpp_project工程介绍 #### 项目地址 [gitee](https://gitee.com/scy157609962/cpp_project) #### Minivilles游戏玩法 [Video of Youtube](https://www.youtube.com/watch?v=6SgnZntcTKI) #### 小组项目展示视频 [Video of Bilibili](https://www.bilibili.com/video/BV11g411v75o/) #### 游戏规则描述 游戏中有【起始建筑物】、【地标建筑物】、【专业建筑物】、【普通建筑物】四种卡牌、两颗骰子以及一些金币。 这些卡牌分为蓝色(在任何玩家的回合都可以触发并从银行获得收入)、绿色(只有当前掷骰子的玩家才能触发并从银行获得收入)、红色(在其他玩家的回合,拥有此卡牌的玩家从掷出这个数字的玩家手中获得收入)、紫色(只有当前掷骰子的玩家才能触发并从银行获得收入)。 卡牌的触发优先级为红色->绿色->蓝色->紫色。(注意,当一名玩家无法支付全部金币时,他只需要把所持有的的所有金币支付给对方玩家即可,玩家金币不会为负,对方也不会获得额外补偿) 玩家可执行的操作有选择骰子数、掷骰子、购买建筑物、选择卡牌触发效果的对象等。(注意:专业建筑物和地标建筑物每种只能建造一个) 游戏开始时,需要输入玩家人数,然后,每个玩家会被分配到两张起始建筑物(麦田和农场)以及3枚金币。 当玩家的回合开始时,可以掷一个骰子(若有火车站可以选择掷两个骰子),当玩家掷骰子的点数之和与已有卡牌的点数相同时,即可触发该卡牌的效果,若有多张同种卡牌,则触发效果为该种牌数量乘以效果。 掷完骰子后,玩家可以选择购买建筑物或者选择不买。当玩家的地标建筑物(游乐园、广播塔、购物中心、火车站)全部建造完成时,该玩家获得胜利,游戏结束。 #### 文件属性 `constant.h` 存储需要用到的常量 `game_exception.h` 异常类GameException `card.h` `card.cpp` Card(卡牌类) CardTab(存储卡牌的数组,并管理卡牌的生命周期) `coin.h` Coin(硬币类) `dice.h` Dice(骰子类) `piles.h` `piles.cpp` Pile(牌堆基类) OrdinaryBuilding LandmarkBuilding(继承Pile基类,存储所有地标建筑卡牌,和除地标建筑和初始建筑的其他卡牌) `player.h` `player.cpp` Player(玩家类) `game.h` `game.cpp` Game(管理所有的Player的生命周期) `round.h` `round.cpp` Round(管理牌局的进行,并判断卡牌效果触发与否,并相应地给与或扣除玩家的金币) #### 项目合作使用方法 1. 使用命令:`git clone https://gitee.com/scy157609962/cpp_project.git` 2. 输入个人gitee账号和密码 3. 配置gitee本地用户名和邮箱 `git config --global user.name "xxx"` `git config --global user.email "xxx@xxx.xx"` 4. 修改完代码后先保存到本地,使用命令: `git add .`(最好使用 `git add ` 来添加指定的修改过的文件) `git commit -m "xxx"` 将本地修改上传到服务器,使用命令:`git push origin master` #### UML图 ![UML](img/1.png) #### 注意: 1. 创建类时尽量创建两个文件:.h和.cpp文件,比较长的methode尽量在.cpp中定义,对于比较简单的类就只创建一个.h文件 2. 文件命名使用类的小写加 _ #### 任务分配 佘成应(组长):Coin类、Dice类、Card、CardTab类、Player类、Round类的实现(**难点:多条件判断**)、BaseBuildings、OrdinaryBuildings、LandmarkBuildings类、UML图补充、代码bug修复 方鑫喆:补全Card类中的属性及方法定义、Game类实现(**难点:108张卡片的创建**)、Round类的实现、代码bug修复、项目展示视频录制和剪辑 洪越:Pile类的实现、UML图绘制 陈学勤、陈源涛:baidu or google查找每张卡片对应的图片(到时候可能要做可视化界面)、查找相关的的背景素材图片