C#版龟兔赛跑
using System;using System.Collections.Generic;
namespace Console_Test
{
class Program
{
static void Main()
{
//请裁判
Judgment ment = Judgment.Instance;
//告诉裁判这次要跑多远
ment.TrackLength = 1000;
//玄武参赛
ment.Join(new Tortoise());
//玉兔参赛
ment.Join(new Rabbit());
//开始
ment.Start();
Console.ReadKey();
}
}
/// <summary>
/// 欢迎伟大的裁判
/// </summary>
public class Judgment
{
/// <summary>
/// 为了防止裁判太多造成不必要的混乱
/// 也为了节省赛事的经费
/// 本大赛只请一名裁判
/// </summary>
private Judgment() { }
/// <summary>
/// 哈哈,就一个裁判啊
/// </summary>
private static Judgment instance = new Judgment();
/// <summary>
/// 哥就是那个闪亮的唯一的伟大裁判
/// </summary>
public static Judgment Instance
{
get
{
return instance;
}
}
private int length = -1;
/// <summary>
/// 赛道长度,你不说,我怎么会知道会跑到神马时候啊
/// </summary>
public int TrackLength
{
get { return length; }
set
{
if (length<0)
{
length = value;
}
}
}
/// <summary>
///哥是裁判
///神马选手哥看不见啊
///全洗干净脚底板等我
///哈哈
/// </summary>
private List<IRunner> runners = new List<IRunner>();
/// <summary>
/// 来报名参赛哈
/// </summary>
/// <param name="runner"></param>
public void Join(IRunner runner)
{
if (runners.Contains(runner))
{
Console.WriteLine("报过名了,就不要再报了");
return;
}
runners.Add(runner);
}
/// <summary>
/// 开不开始
/// 哥一句话
/// </summary>
public void Start()
{
if (TrackLength<0)
{
Console.WriteLine("大家都不知道要跑多远,再等等!");
return;
}
if (runners.Count < 2)
{
Console.WriteLine("神马,就你一个人,不用比了,勇气可嘉啊,奖杯给你了!");
return;
}
Console.WriteLine("裁判:好了,欢迎大家参加本届神宠速度大比拼,此次参赛的选手有");
foreach(IRunner runner in runners)
{
Console.Write("【");
Console.Write(runner.Name);
Console.Write("】,");
}
Console.WriteLine("希望大家赛出成绩,赛出特色,比赛开始。。。");
Console.WriteLine("3");
Console.WriteLine("2");
Console.WriteLine("1");
Console.WriteLine("Start!");
Console.WriteLine();
new System.Threading.Thread(delegate()
{
bool isNotEnd = true;
while (isNotEnd)
{
foreach (IRunner runner in runners)
{
runner.Run();
if (runner.Score >= TrackLength)
{
isNotEnd = false;
Console.WriteLine("裁判:选手【{0}】成功夺冠!", runner.Name);
break;
}
Console.WriteLine("裁判:选手【{0}】已经跑了{1}米,距终点还有{2}米",
runner.Name,
runner.Score,
TrackLength - runner.Score);
}
System.Threading.Thread.Sleep(1000);
}
}).Start();
}
}
/// <summary>
/// 没有我,谁也别想跑步
/// </summary>
public interface IRunner
{
string Name { get; }
/// <summary>
/// 我的正常速度
/// </summary>
int Speed { get; }
/// <summary>
/// 爆发的速度
/// </summary>
int SuperSpeed { get; }
/// <summary>
/// 我的成绩
/// </summary>
int Score { get; }
/// <summary>
/// 跑一个给你看看
/// </summary>
void Run();
}
/// <summary>
/// 姐不是路过打酱油滴
/// 姐不是芙蓉,玉凤
/// 姐是Runner
/// 姐是能跑的人的祖先
/// 鸿星尔克 To Be NO.1
/// </summary>
public abstract class Runner : IRunner
{
/// <summary>
/// 谁没有点小问题,只不过问题是随机的
/// </summary>
protected static Random random = new Random();
public string Name { get; protected set; }
public int Speed { get; protected set; }
public int SuperSpeed { get; protected set; }
public int Score { get; protected set; }
public abstract void Run();
}
/// <summary>
/// 四大神兽之北宫玄武
/// 前来助阵的有
/// 白虎,朱雀,青龙
/// </summary>
public class Tortoise : Runner
{
public Tortoise()
{
Name = "玄武";
Speed = 25;//不要惊奇,爷是神兽啊,跑得快不是爷的错
SuperSpeed = 30;
}
public override void Run()
{
//哥有1/2的概率爆发啊,嘿嘿
if (random.Next(1, 3) < 2)
{
Console.WriteLine("{0}:看来扶老人过马路还是不错的啊,人品大爆发了!",Name);
Score += SuperSpeed;
}
else
{
Console.WriteLine("{0}:佛曰,缓者远行!嘿嘿!",Name);
Score+= Speed;
}
}
}
/// <summary>
/// 顶级萌宠之月宫玉兔
/// 前来助阵的有
/// 嫦娥,吴刚,八戒(你来搞毛啊)
/// </summary>
public class Rabbit : Runner
{
private bool isSleeped = false;
public Rabbit()
{
Name = "玉兔";
Speed = 40;
SuperSpeed = 45;
}
public override void Run()
{
//如果发现自己睡过了,就有1/3的概率爆发
if (isSleeped)
{
if (random.Next(1, 4) < 2)
{
Console.WriteLine("{0}:看我风一般的速度,yoyoyoyoyoyoyoyooooo!",Name);
Score+= SuperSpeed;
return;
}
}
if (random.Next(1, 3) < 2)
{
isSleeped = true;
Console.WriteLine("{0}:昨晚偷了一夜的菜,睡一会,撑不住了",Name);
}
else
{
Console.WriteLine("{0}:比个赛么,何必那么认真呢?做兔子呢,最重要的开心!",Name);
Score += Speed;
}
}
}
}
--------------------编程问答-------------------- --------------------编程问答-------------------- 不 懂 --------------------编程问答-------------------- 楼主应该学习一下发贴如何插入代码。 --------------------编程问答-------------------- /upload/20131225/28.gif --------------------编程问答--------------------
补充:.NET技术 , 非技术区