项目 3:冒险游戏

Project 3 冒险游戏项目介绍:两人搭档用面向对象编程共建一个交互式冒险游戏世界。

冒险时间到!

是时候动手实践一些 OOP 了。在这个项目中,你将帮助我们编写一个冒险游戏:你要创建人物、地点和物品,然后让它们互动。

本项目设计为由两位搭档并行完成,再把双方的成果合并成一件成品。下文将两位搭档分别称为 A 方和 B 方。你们小组只需提交一份合并完成的最终项目。

项目以两个两位搭档都要做的练习开始;这些练习不需要新的编程,而是让你们熟悉我们已提供的程序整体结构。之后,每位搭档有各自独立的练习。最后还有一个需要双方共同完成的练习。(因此,你大概应该记下项目中你修改过的所有过程,这样才能发现双方各自独立修改了哪些相同的过程。)

这是一个大项目,请相应地把控节奏。完成整个项目的所有练习后,你们小组应当做一次提交,内容包括:修改过的 adv.scm 程序(并高亮标出修改之处),以及对你工作的测试记录。你必须在 adv.scm 文件顶部标明你们当中谁是 A 方、谁是 B 方。请把这条信息做得非常醒目、容易找到!

评分方式

每位搭档做九道题。其中三道(第 1、2、9 题)是双方共同的,其余各自独立。每道题你们只提交一份解答。第 1、2、9 题的分数组内两人共享;第 3 到第 8 题各自得分。也就是说,你的项目得分主要取决于你个人的工作,同时也部分依赖小组另一位成员的工作。前两题你本可以偷懒全推给搭档,但你不该这么做,因为这两题是理解整个项目结构所必需的。第 9 题要求双方都已完成各自的工作,并碰头理解彼此的解答,所以只要有一方没尽职,双方都拿不到分。

如果你找不到搭档,或者想独自完成,请找助教谈谈。

致谢

本作业大致基于 MIT 同课程版本的一份作业。但既然这是伯克利,我们把它改成了政治正确的版本:角色们不再互相残杀,而是整天到处吃美食。注意: 除非你是铁杆雅皮士,否则你可能觉得吃美食并不能恰当表达对无家可归者困境的关怀。但这总算是个开始。

在这份实验作业中,我们将探索两个核心理念:模拟一个由一组状态变量刻画的、充满对象的世界;以及把消息传递用作一种编程技术,把存在对象交互的世界模块化。

关于协同工作的建议

以下是和搭档分享工作成果的几点建议:

  • GitHub:可靠,但配置时间较长。可以在这里体验一下。
  • Dropbox:配置简单。小心覆盖搭档的文件!
  • Google Docs:配置简单。覆盖代码的可能性较小。
  • 电子邮件:指定一位搭档。把所有代码发给那位搭档,由他负责合并。
  • 其他:你可以用任何你喜欢的方式,只要它促进学术诚信,并能成功在搭档间共享代码。