Head First C#(赛狗日)
实验背景:
人:Joe、Bob和AI希望参见赛狗赌博。最初,Joe有50元,Bob有75元,AI有45元。每次比赛前,他们都会各自决定是否下注以及所押的赌金。直到比赛前,他们都可以改变赌金,但是一旦比赛开始,赌金就再不能更改了。
赌场:赌场会跟踪每个人持有的现金,以及每个人下注的对象。每次下注至少5元。一场比赛中,赌场对每个人只取一次赌金;也就是说每个人不得重复下注。赌场会检查下注的人确实有足够的现金支付他的赌金,所以如果没有钱来作赌资这个人就不能下注。
下注:每次下注都会“翻倍或全陪”,要求最低5元,而且每个人对一只狗最多下注15元。
比赛:有4只狗在直道上比赛。比赛胜者是第一只穿过终点线的狗。
书中给出的作为参考的类图:
参考别人的博客写的代码
Greyhound类
class Greyhound
{
public int Index; //狗的号码
public int StartingPosition=0;//图片起始坐标
public int RacetrackLength = 600; //路程
public PictureBox MyPictureBox = null; //图片控件
public int Location = 0;//已完成路程
public Random Randomizer;//
//构造函数
public Greyhound(PictureBox picturebox)
{
this.MyPictureBox = picturebox;
this.Index = index;
}
public bool Run()
{
int speed=Randomizer.Next(1, 20);
Point p = MyPictureBox.Location;
p.X += speed;
System.Threading.Thread.Sleep(100);
MyPictureBox.Location = p;
if (p.X >= RacetrackLength)
return true;
else return false;
}
public void TakeStartingPosition()
{
this.MyPictureBox.Location = new Point(this.StartingPosition, MyPictureBox.Location.Y);
this.Location = 0;
}
}
对Grayhound初始化(学着点)
void InitGrey()
{
grey = new Greyhound[]
{
new Greyhound(pictureBox2){Index=1,Randomizer=mainRand},
new Greyhound(pictureBox3){Index=2,Randomizer=mainRand},
new Greyhound(pictureBox4){Index=3,Randomizer=mainRand},
new Greyhound(pictureBox5){Index=4,Randomizer=mainRand},
};
}
Guy类
public class Guy
{
public string Name;//姓名
public Bet Mybet=new Bet ();//赌注信息
public int Cash;//剩余现金
public RadioButton MyRadioButton;
public Label MyLabel;
/// <summary>
/// 下注更新显示信息
/// </summary>
public void UpdateRadio()
{
MyRadioButton.Text = string.Format("{0} has {1} bucks",this.Name,this.Cash.ToString());
}
/// <summary>
/// 重置赌注为0
/// </summary>
public void ClearBet()
{
MyLabel.Text=string.Format("{0} has't placed a bet",this.Name);
Mybet.Amout = 0;
}
/// <summary>
/// 下注
/// </summary>
public bool PlaceBet(int Amout, int Dog)
{
if (Amout > this.Cash)
return false;
this.Mybet.Amout = Amout;
this.Mybet.Dog = Dog;
this.Mybet.Bettor = this;
MyLabel.Text= Mybet.GetDescription();
return true;
}
/// <summary>
/// 清算结果
/// </summary>
public void Collect(int Winner)
{
this.Cash += this.Mybet.PayOut(Winner);
UpdateRadio();
ClearBet();
}
}
Head First C#(赛狗日)的更多相关文章
- 赛狗日源码分享 《Head First C#》第三版
目录 前言 效果展示 步骤 熟读任务说明 搭界面 开始代码 From.cs Greyhound.cs Guy.cs Bet.cs 写在后面的话 本次遇见的一些问题 关于优化 可以设定狗的特性 去掉Be ...
- 天气预报API开发
天气预报API开发 一. 寻觅篇 最近想要跟着视频练习一下利用API开发一个天气预报系统,就在网上找了一下可以用的API,结果好多都已经失效了... 1. 百度车联网天气预报 ...
- Alpha版本十天冲刺--Day4
站立式会议 会议总结 队员 今天完成 遇到的问题 明天要做 感想 鲍亮 解决线程信息传递问题(使用函数回调),Android登录验证接口完善 无 json解析,忘记密码界面验证码获取接口,忘记密码请求 ...
- 关于webstorm(phpstorm)设置了编码格式之后还是乱码的问题
今天在使用phpstorm的时候,页面开始是设置utf-8的,一切正常.但是,当我从一个gbk页面复制了一段代码到phpstorm里面的时候,页面预览的时候,居然打不开了,显示是乱码.接着我就把复制的 ...
- selenium提供的截图功能
get_screenshot_as_file()提供一个截屏功能.在自动化执行过程中,执行失败后只能看到代码的运行错误,而不能直接看到ui上的错误,利用截屏保存下来很容易的进行问题的判断 先来执行一个 ...
- QQ的成功,远没有你想象的那么顺利和轻松
本文来自公众号“傅老师”(ID:fustory)的原创分享,感谢作者. 1.引言 如果QQ是一个人,看似风光,其实从出生到成长,过程饱经错荡,堪算坎坷.它的人生历程确实也够励志的了. 学习交流: ...
- 【新知识】队列&bfs【洛谷p1996约瑟夫问题&洛谷p1451求细胞数量】
(是时候为五一培训准备真正的技术了qwq) part1 队列(FIFO) 算法简介: FIFO:First In First Out(先进先出) 队列是限定在一端进行插入,另一端进行删除的特殊线性表 ...
- IOS初级:AFNetworking
狗 日的,第三方框架真j8难搞 1.为什么NS_ASSUME_NONNULL_BEGIN在6.2报错,你他么的还挑IDE,你这是什么态度? 2.还有,你他么的自动给老子转json了,有问过我么? #i ...
- CSDN优秀博客连接,博客之星连接。
点击链接 获得[红杏出墙]插件,FQ上网无压力!谷歌搜索无压力! 2013年度CSDN十大博客之星 TOP 作者 专注领域 博客地址 邹晓艺 机器学习及算法 zouxy09 2 王然 潜在的集大成者 ...
随机推荐
- [RxJS] Using Observable.create for fine-grained control
Sometimes, the helper methods that RxJS ships with such as fromEvent, fromPromise etc don't always p ...
- Linux文件权限管理
一.设置文件所属的用户以及所属的组(chown,chgrp) chgrp用来更改文件的组拥有者,其一般格式为:chgrp [option] group file(1)把文件test的组拥有者改为zfs ...
- Unity 切割导出精灵
Unity中经常使用到精灵,尤其是2D游戏中制作动画等!今天我们就学习下精灵的切割和导出吧! 废话不多说,先建议空的工程. 1,打开Unity建工程. 2 导入素材进行资源分类,工程不在于大小,这是我 ...
- CSS兼容性常见问题总结
DIV+CSS设计IE6.IE7.FF 兼容性 DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使 ...
- WebApi官网学习记录---webapi中controller与action的选择
如果framework找到一个匹配的URI,创建一个包含占位符值的字典,key就是这些占位符(不包括大括号),value来自URI或者默认值,这个字典存储在IHttpRouteData对象中.默认值可 ...
- Could not load file or assembly 试图加载格式不正确的程序
问题: 今天发布项目的时候遇到这个破问题,纳闷了好久,最后想起来自己改过程序生成的目标平台(原生成目标平台是Any CPU,被我改成了X86的). 解决方法: 改回原来的Any CPU 从新发布即可.
- React-Native OpenGL体验一
昨天初体验了一把SVG一个并不是多么复杂的动画,我在iOS模拟器上体验的是流畅的,但是在Android真机上体验,还是比较卡的. 下面来介绍一个OpenGL的第三方库: 下面是我运行的里面Demo的效 ...
- UI开发学习中遇到的问题汇总
1.给UIView设置圆角,边框,阴影绘制,需要使用layer 1)设置圆角cornerView.layer.cornerRadius = 20; //设置试图圆角的大小cornerView.laye ...
- python中发送get或post请求
示例 get import httplib import uuid import time url = "/KM/test.php?time=" url += str(int(ti ...
- linux访问windows共享文件夹的两种方法
有时需要在linux下需要访问windows的共享文件夹,可以使用mount挂载或者使用samba连接. 1.mount挂载 首先创建被挂载的目录: $ mkdir windows 将共享文件夹挂载到 ...