其一次于作业 黄金虫游戏

一、概述 

据悉如下的几乎独理由,需要也应用程序提供两个本子:

黄金点游戏是一个数字小游戏,其游戏规则是:

1:应用程序有体验版和一体化意义版;

      N个同学(N平日大于10),每人写一个0~100间的客体数 (不包括0或100),交给裁判,裁判算有所有数字之平均值,然后趁机以0.618(所谓黄金分割常数),拿到G值。提交的数字最靠近G(取相对值)的同室取得N分,离G最远之同学获-2分叉,其他同学得0分。玩了几乎天将来,我们发现了有的相当风趣的景,比如黄金点在逐步地为生走。

2:应用程序测试过程遭到要好部分自动化的操作;

     
现在要我们遵照是游戏规则,编一个方可基本上人数同游戏的小游戏程序,要求如下:

1:提供体验版

有关率先碰,所谓体验本为尽管是完好版本的一个缩小版。即由于某种理由,不对用户开放应用程序的通意义。

假诺我的应用程序共有两接近效能。第一类似效率属于单机版,而完整版本还提供在线功用。那么,在职能及,我待定制两独特性”ONLINE”和”OFFLINE”。在经验本备受,我可是开放”OFFLINE”效能。

假诺实现那么些目的,我非思提供简单学应用程序,而是想透过极端小设置,就能啊一个应用程序输出两独发布版。那多少个上,就需要.NET中之性状Attribute了。

率先,我们学离线和在线两独职能:

 

图片 1图片 2代码

class MyService 

{ 

[Conditional("OFFLINE")] 

[Conditional("ONLINE")] 

public static void Testing() { System.Windows.Forms.MessageBox.Show("offline game..."); } 



[Conditional("ONLINE")] 

public static void GetInfoFromNet() { System.Windows.Forms.MessageBox.Show("online game..."); } 

} 

先后入口:

图片 3图片 4代码

private void button1_Click(object sender, EventArgs e) 

{ 

MyService.Testing(); 

} 



private void button2_Click(object sender, EventArgs e) 

{ 

MyService.GetInfoFromNet(); 

} 

倘促成八只例外之成效,则需以程序入口那几个文件被定义:

 

#define ONLINE 

//#define OFFLINE 



using System; 

using System.Collections.Generic; 

using System.ComponentModel; 

     
1、本作业属于结对编程项目,必须由二丁共同完成,并分别将此次作业过程发至博客,同时以本次作业源代码提交到codeing系统;

1.1:全局宏定义

难忘,这些定义一定假设在文书之顶最先处。同时,该定义只针对遵照文件中,假如想定义全局,必须于项目性质被定义,如下:

图片 5

倘想定义多独全局宏定义,则据此逗号隔开,如”LUMINJI,HUCHANGJUN”。

通下的题目,就比较简单了,倘若如发布全职能,就#define
ONLINE,假诺一旦颁发离线版功能,就注释掉#define ONLINE,然后定义OFFLINE就举办了。

     
2、假使可能的言语尽量为C/S或B/S模式实现,即祭服务器收到及处理所有玩家提交的数字,并以结果报告让每玩家,玩家可经客户端提交的数字;

2:为测试过程提供自动化操作

以测试UI的早晚,需要操作各文本框、列表等控件。举个简单的事例来说,一个报到窗口,需要输入用户称及密码。如若每一回我测试的上,都使受自己要好来输入,势必影响效用。这多少个时节,就可被Attribute来发挥效能了。

当如下示例中,在报到窗口的Load事件被,我们为用户称及密码赋值,并模仿点击Click事件。

图片 6图片 7代码

#define TESTAUTO 



using System; 



…… 

public Form1() 

{ 

InitializeComponent(); 

this.Load += delegate 

{ 

TestAuto(); 

}; 

} 



[Conditional("TESTAUTO")] 

private void TestAuto() 

{ 

Thread t = new Thread((ThreadStart)delegate 

{ 

Thread.Sleep(1000); 

this.Invoke((MethodInvoker)delegate 

{ 

this.textBox1.Text = "luminji"; 

this.textBox2.Text = "123"; 

button3_Click(this, null); 

}); 

Thread.Sleep(1000); 

}); 

t.IsBackground = true; 

t.Start(); 

} 

难忘,在付出代码的下,可以注释掉TESTAUTO宏定义,这样,既未会合潜移默化到结尾的版本,也可以于好于本机得到最好深之自由度。从任何一个角度来说,整个项目组而提早协调好,可以叫那些测试方法共有。

     
3、如若以单机情势贯彻的话,需要也用户提供好的输入界面;

3:关于测试多说一些:

提供一个思路:这么些特点也得以为咱由程序员的角度来形成部分测试用例的编撰和测试。

     
4、该游乐每一次起码可运作10轮子以上,并可以保留各轮比赛结果。

后记:

对于Attribute的功底介绍,本文不再讲演,除MSDN外,还足以参照下文(个人感觉这有限首就勾勒的深好):

http://blog.csdn.net/fantasiax/archive/2007/05/28/1627694.aspx

http://blog.csdn.net/fantasiax/archive/2007/06/04/1636913.aspx

本文的测试代码下载:http://download.csdn.net/source/2868666

     
5、作业总计中,驾驶员首要讲述这一次结对编程中领航者对代码复审做了怎么工作,提议了何等有建设性的意及提出。领航者对司机这一次工作拓展总括,首要概括代码风格、编程技巧等,两总人口许同步统计和同人数编程相比,结对编程是否真正提升了代码质料与编程功效,双方应拿本次工作历程拍多摆设像并揭破到博客中。

 

二、内容

自己的角色:驾驶员

自身的搭档:闵际达(领航员)

 

代码都上传至codingnet

网址如下:https://coding.net/u/ShiiiiT/p/Golden\_Point\_Game/git

 

运作结果

 

图片 8

 

图片 9

 

图片 10

 

图片 11

 

图片 12

 

图片 13

 

图片 14

编程时截图

图片 15

领航员在本次代码编写中,首先各自发布了对黄金点游戏编写的想法及观,然后以编辑过程遭到,领航员平日得将有微小的荒谬发现并加以纠正,大大加快了代码编写速度

再就是,一些好独立编程时的小坏习惯吗足以改正,比如易分心,注意力不集中等。

发表评论

电子邮件地址不会被公开。 必填项已用*标注