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 王然 潜在的集大成者 ...
随机推荐
- Android应用程序键盘(Keyboard)消息处理机制分析
在Android系统中,键盘按键事件是由WindowManagerService服务来管理的,然后再以消息的形 式来分发给应用程序处理,不过和普通消息不一样,它是由硬件中断触发的:在上一篇文章< ...
- php字符串标点等字符截取不乱吗 封装方法
方法一: /** +---------------------------------------------------------- * 功能:字符串截取指定长度 * leo.li hen ...
- Qt之操作Excel
Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件. ...
- HttpURLConnection 下载代码
private int downloadFile(final String apkurl, final String apkname) { Log.e(LOGTAG, "downloadAp ...
- Centos6架设GIT服务,windows客户端使用TortoiseGit加载KEYGEN连接GIT服务器
前几天得空,想起前一阵学了GIT还没好好实践,就在虚拟机中安装测试了一下,并简单记录了CENTOS6中GIT安装,ssh-keygen生成,客户端使用TortoiseGit加载KEYGEN连接GIT服 ...
- oracle 语句汇总
Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1 ...
- 使用log4net写自定义日志
在使用log4net写Web服务器端日志的时候,通常需要一些自定义的参数,比如请求的url,method,以及用户名等等,而log4net中默认的Log接口只提供了很少的参数. 在网上找的其他的 ...
- Java—Integer类
Integer类 Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型的字段. 该类提供了多个方法,能在 int 类型和 String 类型之间 ...
- linux android ndk
Android调用so库, so库是c语言编写, 在linux 64位系统+ndk(32位)生成 lib*.so (32位) 1. 所需软件环境: 1)so库开发环境 操作系统: Redhat Ser ...
- sizeof对int long double char的使用
主要针对int long char double 字节长度的识记. 1 #include <stdio.h> 2 3 int main() 4 { 5 int a[100]; 6 int ...