Skip to content
This repository has been archived by the owner. It is now read-only.
Happy farm. Homework of Design Patterns in SSE, 2017
Branch: master
Clone or download

README.md

farm

快乐农场。这是 2017 年同济大学软件学院软件架构与设计模式的项目作业。

基本设计

  • 整个运行着的项目属于一个 Application 类,属于单例
  • 这个 Application 的模型可以简化为若干个玩家和若干个农场
  • 农场是场景 Scene 类的子类,因为库的用户可能会把其中某个农场改造成竞技场或者打怪狩猎的地方
  • 农场里面可以有牛、羊等各种动物,也可以是小麦、树、胡萝卜等
  • 人是有体力的,不同的农场之间距离不同,来回需要耗费体力
  • 整个游戏为简化起见,用回合制的方式,比如每回合回复多少体力,某种作物需要多少回合才能种好等
  • 人有一个背包,背包里可以装东西
  • 可以养殖动物,也可以屠宰动物,吃它们会回复体力

大致能够包含的设计模式

  • 单例模式,整个游戏作为惟一的实例运行
  • 原型模式,黑毛羊生出来的还是黑毛羊
  • 模版方法模式,吃每种食物都可以回复体力,但是具体回复多少呢,是子类决定的
  • 访问者模式,杂交到底生出来啥玩意
  • 工厂模式,需要以某种方式「生成」地图
  • 观察者模式,羊要在草地上吃草,草长起来之后,羊会自己「知道」
  • 策略模式,每回合都需要输出相关的信息,这些信息的输出方式是可以更换的
  • 状态模式,主人公不同的状态,行为不同
  • 组合模式,背包里可以再有背包

编译

使用 cmake 处理构建问题。

在项目目录下执行 cmake . 可以生成 Makefile,Windows 上的解决方案请自行搜索。cmake 对于 C++ 项目是一个有力的构建工具。

代码约定

请遵循必要的代码约定。

头文件保护

每个头文件请以必要的预编译指令开头。文件名采用大驼峰命名法。如果文件名由多个单词组成,宏名由下划线连接。

// BackpackEntry.h
#ifndef BACKPACK_ENTRY_H
#define BACKPACK_ENTRY_H

// Code here

#endif // BACKPACK_ENTRY_H

头文件保护非常重要,请切记。

基本命名

请保持简单的命名风格,类名用大驼峰,方法用小驼峰,局部变量名尽量简单、保持在一个小写单词以内。花括号不换行。

class Backpack {
public:
    Backpack();
    BackpackEntry* getFirst() {
        size_t size = backpack->size();
        // Other code
    }
};

版本控制

采用 git 进行版本控制,GitHub 作为代码托管平台。git 的使用入门在互联网上非常容易找到。

项目采用基于分支的开发模型。主干分支称为 master,不应该直接在 master 上开发和提交代码。clone 下代码库之后,请首先从 master 新建自己的分支,名字自定。

git checkout -b dev-imbant
# Now you are in a new branch

每次改动的文件都需要使用 git add 命令加入暂存区。提交信息请书写得简洁明了。

git commit -m "加入了新的 Farm 模型"

然后你需要同步到远程的代码库。

git push origin dev-imbant # Here use your branch name

由于是自己的分支,理论上不应该有别人参与,所以一般不会出现冲突的情况。

同步之后,如果想要求合并到 master,需要在 GitHub 的项目页面上新建一个 Pull Request,并告知大家。合并之后,远程仓库的 master 分支会被更新。因此建议每次工作前先执行一次同步操作。

git pull origin master

如有任何问题,包括 git 使用以及冲突合并等,请联系大家。如果你使用图形化的 git 管理工具,请参照类似的使用流程。

You can’t perform that action at this time.