本小游戏场景来自邹欣老师的《移山之道》一书:
“阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏:N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。提交的数字最靠近G(取绝对值)的同学得到N分,,离G最远的同学得到-2分,其他同学得0分。玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动。如果你和其他20 个聪明人玩这个游戏, 你会选择什么数字呢?”
结对编程即两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码。
本次结对编程作业我的搭档是王心恬同学。心恬是校ACM队大神之一,工作态度认真,对算法效率方面精益求精,所以算法与数据结构方面,主要就交给她设计了。而我更注重软件的用户体验,也喜欢评测各种软硬件产品,所以界面和交互由我来实现。
由于本次结对编程作业时间较紧,根据我们现有的知识,无法在7天之内学习并完成C/S或B/S模式软件的制作,所以只好选择了做单机版。WinForm应用程序没有复杂的界面设计语言,上手快,可以快速的实现一些小项目,所以我们选择使用基于.Net Framework的WinForm实现该小游戏的界面制作。开发平台:VS2015
虽然此项目算法方面并没有什么难点,但通过和心恬同学的讨论,发现了一些小的细节需要注意。首先,最终的冠军可能不止一个,最高分出现两个或两个以上的概率其实不小。其次,每轮中可能会有两个玩家输入相同的数字,并且这两个数字都最接近黄金点或最远离黄金点,需要同时给他们加减分数。还有,最接近黄金点的数字可能会有两个,一个比黄金点多一个比黄金点少,但这种情况发生的概率极低。
界面设计方面,由于是单机版,所以必须合理的使用恰当的控件提供方便快捷直观的操作界面。玩家数和次数选择后不能修改,如需修改必须重新开始。搭配快捷键回车的使用可以快速输入数据无需使用鼠标。界面标签文字提示信息合理。输入数字只允许有1~100之间的有理数,其他输入提示不合法。历史记录可选择是否查看,并可实时给出历史数据。
通过本次结对编程作业,我切身体会到了结对编程的优点,既提高了效率,又让枯燥的编程变得更有趣味,结对编程的过程中需要时刻保持交流从而让对方了解自己的思路。在互相交流的过程中,又从对方身上学到了更多新的知识。同时我注意到,每个人的编程习惯不同,代码规范不同,所以我们先统一了规范,否则有强迫症的我会看着会很蓝瘦的_(:з」∠)_
以下是界面预览:
项目源代码:https://coding.net/u/dreamtofly/p/GoldenPointGame/git
按要求附工作合照一张_(:з」∠)_
搭档的博客主页:
结对编程—黄金点游戏WinForm单机版