结对编程—黄金点游戏WinForm单机版
本小游戏场景来自邹欣老师的《移山之道》一书:
“阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏: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
按要求附工作合照一张_(:з」∠)_

搭档的博客主页:http://www.cnblogs.com/HelloAI
结对编程—黄金点游戏WinForm单机版的更多相关文章
- 结对项目--黄金点游戏(邓乐&曾亮)
#include<stdio.h> #include<stdlib.h> #include<Windows.h> int result[100][1000000]; ...
- 黄金点游戏 结队i项目
结对编程——黄金点游戏 本次的结对编程的项目是黄金点游戏,我的结对对象是冯雨倩,我们的编程能力都不太好,而且都对C语言更熟悉些,因此我们决定用C语言来实现. (1)分工:角色分配:冯雨倩是领航员, ...
- 结对编程--基于android平台的黄金点游戏
游戏内容: 阿超的课都是下午两点钟,这时班上不少的同学都昏昏欲睡,为了让大家兴奋起来,阿超让同学玩一个叫“黄金点”的游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或1 ...
- 软件工程 in MSRA 黄金点游戏-第一次结对编程
简单介绍 第一次结对编程,邹欣老师选择了一个博弈游戏作为题目.博弈论是一门非常有趣的学科.之前竞赛时接触的博弈论大部分都是存在均衡点/必胜策略的.像这次这种多人参与,没有完美策略,你方唱罢我登台的游戏 ...
- 黄金点游戏(js+css)
一.项目描述:黄金点游戏 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0 ...
- 基于js脚本的单机黄金点游戏
题目描述 N个同学(N通常大于10),每人写一个0-100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G( ...
- 结对编程--Goldpoint Game
黄金点游戏 黄金点游戏描述: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...
- ASE "黄金点游戏"
问题定义 黄金点游戏是源于经济学家Richar Thaler构思的在1997年伦敦金融时报进行了一次公开竞猜活动.MSRA-ASE课程的第一次结对编程中,我们写了一个AI Bot来与大家玩儿这个游戏. ...
- 结对编程-地铁续(有种上个学期OO的既视感)
我们组比较特殊..三人结对 github:https://github.com/qingchanghan/WPFUI_Metro po一张照片: 石浩然,韩青长.陈彦吉 (台式机真的很高端,分屏贼帅) ...
随机推荐
- webform连接ACCESS数据库
1.先建立一个名叫mydb.accdb的access数据库 2.他它复制到webform中,放在App_Data文件夹下. 3.在App_Code文件夹下建好封装语句,查询方法,连接语句,其中stud ...
- thinkphp框架验证码验证一次
做异步验证验证码,只要验证一次结果正确,拿相同的值再次来对比,返回结果就不正确.我看到论坛中有人说,tp框架只要验证过一次正确后验证码就销毁了.确实是这个效果,但具体的还没深入了解
- android之简单图形绘制
首先编写MyView类 代码如下: package com.example.myhello; import android.content.Context; import android.graphi ...
- DataTable to byte[]、DataTable to XML(string)
DataTabe 对象在很多地方都会用到,特别是在Web Service.Socket等需网络传输的地方. 但是在有些地方,如果直接传递的话,程序可能会报告DataTable无法序列化错误. 解决问题 ...
- IOS第12天(4,作业弹出键盘上加上(xib)view的处理,时间选择,代理模式使用,键盘的监听 )
*****HMViewController.m #import "HMViewController.h" #import "HMKeyboardTool.h" ...
- cookie案例-显示用户上次访问网站的时间
package cn.itcast.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.D ...
- Debug阶段成员贡献分
组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 Debug阶段各组员的贡献分分配如下: 姓名 个人工作量 组长评价 个人评价 团队贡献总分 张金生 11 7 6 6.00 张政 11 6 ...
- c#根据后台数据,自动生成checkbox
前端在aspx中,添加生成checkbox的容器div: <div id="container" runat="server"></div&g ...
- 虚拟机设置静态ip
最近学习hadoop,用到虚拟机来做分布式,由于hadoop要配置slave节点的主机名,所以需要修改hosts文件的ip地址和主机名的映射关系. 但是虚拟机每次重启后,ip地址都会变 ,这样每次都得 ...
- Flink - Checkpoint
Flink在流上最大的特点,就是引入全局snapshot, CheckpointCoordinator 做snapshot的核心组件为, CheckpointCoordinator /** * T ...