文档章节

Head First C#赛狗日项目全部代码

Mstart
 Mstart
发布于 2016/07/27 10:03
字数 930
阅读 41
收藏 0

项目名称:赛狗日

对象:人(参与赌博的人)、赌场(规则)、下注(多少)、比赛(结果及分成 );

直接代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Drawing;

 

namespace RunDog

{

//赛道和狗

public class Greyhound

{

public int IndexDog;//狗号码

public int StartingPosition=82;//狗在赛道起点位置

public int RacetractLength = 900;//赛道长度;

public PictureBox MyPictureBox=null;//图片对象;

public int Location = 0;//已完成距离;

public Random Randomizer;//随机对象

//构造函数:

public Greyhound(PictureBox pictureBox) {

this.MyPictureBox = pictureBox;

}

 

 

//狗跑

public bool Run() {

Randomizer = new Random();

int speed = Randomizer.Next(1,20);//随机距离

//更新窗体 狗的位置;

Point P = MyPictureBox.Location;

P.X = P.X + speed;

Location = Location + speed;

System.Threading.Thread.Sleep(100);//线程休眠100ms

MyPictureBox.Location = P;

if(Location>=RacetractLength){

return true;

}else{

return false;

}

}

//回到开始位置

public void TakeStartingPosition() {

this.MyPictureBox.Location = new Point(this.StartingPosition,MyPictureBox.Location.Y);

this.Location = 0;

}

}

}

 

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Drawing;

 

namespace RunDog

{

//赛道和狗

public class Greyhound

{

public int IndexDog;//狗号码

public int StartingPosition=82;//狗在赛道起点位置

public int RacetractLength = 900;//赛道长度;

public PictureBox MyPictureBox=null;//图片对象;

public int Location = 0;//已完成距离;

public Random Randomizer;//随机对象

//构造函数:

public Greyhound(PictureBox pictureBox) {

this.MyPictureBox = pictureBox;

}

 

 

//狗跑

public bool Run() {

Randomizer = new Random();

int speed = Randomizer.Next(1,20);//随机距离

//更新窗体 狗的位置;

Point P = MyPictureBox.Location;

P.X = P.X + speed;

Location = Location + speed;

System.Threading.Thread.Sleep(100);//线程休眠100ms

MyPictureBox.Location = P;

if(Location>=RacetractLength){

return true;

}else{

return false;

}

}

//回到开始位置

public void TakeStartingPosition() {

this.MyPictureBox.Location = new Point(this.StartingPosition,MyPictureBox.Location.Y);

this.Location = 0;

}

}

}

 

 

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace RunDog

{

//下赌

public class Bet

{

public int Amount;//赌注总额

public int Dog;//狗实例

public Guy Bettor;//是谁i

//谁下的注,下多少,记号狗等

public string GetDescription() {

return Bettor.Name + " 买了 " + Amount.ToString() + "¥ 给 #"+Dog.ToString();

}

//输的付钱.付多少,赢得收钱,收多少

public int PayOut(int winner) {

if (winner == Dog)

{

return Amount;

}

else {

return -Amount;

}

 

}

}

}

 

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace RunDog

{

public partial class Form1 : Form

{

private Guy[] guys;//参与者数组

private Greyhound[] greyhounds;//狗数组

public Form1()

{

InitializeComponent();

greyhounds = new Greyhound[] { new Greyhound(Dog1) { IndexDog = 1 }, new Greyhound(Dog2) { IndexDog = 2 }, new Greyhound(Dog3) { IndexDog = 3 }, new Greyhound(Dog4) { IndexDog = 4 } };

guys = new Guy[]

{

new Guy(){ Name="张三", Cash=100, MyRadioButton=zhangsan,MyLabel=zhangsantext},

new Guy(){ Name="李四", Cash=100, MyRadioButton=lisi,MyLabel=lisitext},

new Guy(){ Name="王五", Cash=100,MyRadioButton=wangwu,MyLabel=wangwutext},

};

//初始化数据

InitiaFrom();

}

 

 

private void Form1_Load(object sender, EventArgs e)

{

 

}

//初始化

public void InitiaFrom() {

//foreach

foreach(Guy guy in guys){

guy.ClearBet();

guy.UpdateLables();

}

}

private void xiazhu_Click(object sender, EventArgs e)

{

//下注

int DogNo = (int)dognumber.Value; //确定下注的狗的编号

if (zhangsan.Checked)

{

 

guys[0].MyBet.Bettor = guys[0]; //传下注这家伙的对象到BET类,BET类负责下注信息

 

guys[0].MyBet.Amount = (int)money.Value; //确定下注的金额

 

if (guys[0].PlaceBet(guys[0].MyBet.Amount, DogNo) == false) //传入第一个家伙下注的金额和狗的编号

{

return;

}

//更新下注信息

zhangsantext.Text = guys[0].MyBet.GetDescription();

 

 

}

if (lisi.Checked)

{

guys[1].MyBet.Bettor = guys[1]; //传下注这家伙的对象到BET类,BET类负责下注信息

 

guys[1].MyBet.Amount = (int)money.Value; //确定下注的金额

 

if (guys[1].PlaceBet(guys[1].MyBet.Amount, DogNo) == false) //传入第一个家伙下注的金额和狗的编号

{

return;

}

//更新下注信息

lisitext.Text = guys[1].MyBet.GetDescription();

 

 

}

if (wangwu.Checked)

{

 

guys[2].MyBet.Bettor = guys[2]; //传下注这家伙的对象到BET类,BET类负责下注信息

 

guys[2].MyBet.Amount = (int)money.Value; //确定下注的金额

 

if (guys[2].PlaceBet(guys[2].MyBet.Amount, DogNo) == false) //传入第一个家伙下注的金额和狗的编号

{

return;

}

//更新下注信息

wangwutext.Text = guys[2].MyBet.GetDescription();

 

 

}

}

//开始比赛

private void bisai_Click(object sender, EventArgs e)

{

//比赛开始后将不能下注

bisai.Enabled = false;

while(true){

foreach (Greyhound greyhound in greyhounds)

{

if (greyhound.Run())

{

MessageBox.Show(greyhound.IndexDog.ToString() + "号猎犬赢得比赛!");

EndRace(greyhound.IndexDog);

return;

}

else

{

//暂停循环,刷新窗体

Application.DoEvents();

}

}

}

 

 

 

}

 

 

//比赛结束需要处理的事情

private void EndRace(int winner){

foreach (Greyhound greyhound in greyhounds)

{

greyhound.TakeStartingPosition();

}

foreach (Guy guy in guys)

{

guy.Collect(winner);

}

bisai.Enabled = true;

}

 

private void zhangsan_CheckedChanged_1(object sender, EventArgs e)

{

xiazhuderen.Text = "张三";

}

 

private void lisi_CheckedChanged_1(object sender, EventArgs e)

{

xiazhuderen.Text = "李四";

}

 

private void wangwu_CheckedChanged_1(object sender, EventArgs e)

{

xiazhuderen.Text = "王五";

}

 

}

 

}

 

© 著作权归作者所有

Mstart
粉丝 10
博文 62
码字总数 17890
作品 0
南通
程序员
私信 提问
Javascript Tip(1) 操作剪贴板

javascript可以轻松操作客户端剪贴板内容,不过只适用IE5以上浏览器 javascript可以使用window.clipboardData对象处理剪贴板内容 保存到剪贴板的方法 setData(param1, param2) param1 :数据类...

晨曦之光
2012/03/09
195
0
日了狗!Redux最简单的入门介绍

日了狗了,狗日的react+redux的水太深了。 哥哥我已经连续研究了很近了,看了那些狗日的写的redux简单示例。妈蛋的,没一个写的好的。看了半天云里雾里,狗日的不知道提供一个最简单的打包下...

supperman
2016/09/14
19
0
App 端接收不到手机短信验证

前言 最近很忙,业务要在这个月底上线。目前在测试阶段。 2017年10月27日9点30分。世龙啊!咱们第三方服务器接收不到手机短信验证了,报错504.好的我看看。我首先登录公司网站,开启网站deb...

我不是九爷
2017/10/27
0
0
.NET开发工具--SharpDevelop

JavaIDE领域,Eclipse现在的势头可谓如日中天。殊不知,在.NET领域也有一个与Eclipse极其类似的开源IDE,它就是SharpDevelop。 SharpDevelop是一个用于开发C#或者VB.NET项目而设计的一个编辑...

匿名
2008/09/17
33.8K
2
SharpDevelop的网友评论

JavaIDE领域,Eclipse现在的势头可谓如日中天。殊不知,在.NET领域也有一个与Eclipse极其类似的开源IDE,它就是SharpDevelop。 SharpDevelop是一个用于开发C#或者VB.NET项目而设计的一个编辑...

红薯
2009/12/11
1K
9

没有更多内容

加载失败,请刷新页面

加载更多

JWT学习总结

官方 https://jwt.io 英文原版 https://www.ietf.org/rfc/rfc7519.txt 或 https://tools.ietf.org/html/rfc7519 中文翻译 https://www.jianshu.com/p/10f5161dd9df 1. 概述 JSON Web Token(......

冷基
今天
3
0
AOP的学习(1)

AOP 理解AOP编程思想(面向方法、面向切面) spring AOP的概念 方面 -- 功能 目标 -- 原有方法 通知 -- 对原有方法增强的方法 连接点 -- 可以用来连接通知的地方(方法) 切入点 -- 将用来插入...

太猪-YJ
今天
4
0
一张图看懂亮度、明度、光度、光亮度、明亮度

亮度、明度、光亮度,Luminance和Brightness、lightness其实都是一个意思,只是起名字太难了。 提出一个颜色模型后,由于明度的取值与别人的不同,为了表示区别所以就另想一个词而已。 因此在...

linsk1998
昨天
8
0
Python应用:python链表示例

前言 python链表应用源码示例,需要用到python os模块方法、函数和类的应用。 首先,先简单的来了解下什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是...

python小白1
昨天
4
0
Source Insight加载源码

Source Insight是一个图形化的源代码查看工具(当然也可以作为编译工具)。如果一个项目的源代码较多,此工具可以很方便地查找到源代码自建的依赖关系。 1.创建工程 下图为Snort源代码的文件...

天王盖地虎626
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部