程序写的有点繁杂,但大体功能出来的!

效果图:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading; /*
* 空间名:TrafficLight
* 功能:模拟交通灯
* 编写人:Doget
* 编写日期:2017.10.14
*/
namespace TrafficLight
{
class Program
{
const int RED_TIME = ;
const int GREEN_TIME = ;
const int YELLOW_TIME = ; static void Main(string[] args)
{
//红绿灯程序开始
START:
Console.SetCursorPosition(, ); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("请按S键开启交通灯:");
if (InputYellow() == "s")
{
LightOn("green", GREEN_TIME);
Thread.Sleep();
LightOn("red", RED_TIME);
Thread.Sleep();
LightOn("yellow", YELLOW_TIME);
Thread.Sleep();
}
else
{
Console.WriteLine("输入错误,请重新输入!");
Console.Clear();
goto START;
}
Console.Write("按g键继续,其他键退出:");
if (InputYellow() == "g")
{
goto START;
}
else
Console.ReadKey();
}
/// <summary>
/// 输入黄色字体的内容
/// </summary>
/// <returns>用户输入的内容</returns>
static string InputYellow()
{
string startCmd;
Console.ForegroundColor = ConsoleColor.Yellow;
startCmd = (Console.ReadLine()).ToLower();
Console.ResetColor();
return startCmd;
}
/// <summary>
/// 亮灯控制
/// </summary>
/// <param name="color">设置亮灯的颜色</param>
/// <param name="time">设置亮灯的时间</param>
static void LightOn(string color, int time)
{
switch (color.ToLower())
{
case "green":
Console.ForegroundColor = ConsoleColor.Green;
for (int i = time; i > ; i--)
{
ShowNumber(i);
Thread.Sleep();
}
Console.ResetColor();
break;
case "red":
Console.ForegroundColor = ConsoleColor.Red;
for (int i = time; i > ; i--)
{
if (i < )
{
ShowNumber(i);
}
Thread.Sleep();
}
Console.ResetColor();
break;
case "yellow":
Console.ForegroundColor = ConsoleColor.Yellow;
for (int i = time; i > ; i--)
{
if (i < )
{
ShowNumber(i);
}
Thread.Sleep();
}
Console.ResetColor();
break;
default:
break;
}
}
/// <summary>
/// 显示数字方法
/// </summary>
/// <param name="number">要显示的数字</param>
static void ShowNumber(int number)
{
int geNum = number % ;
int shiNum = number / % ;
int baiNum = number / % ; PrintNum(shiNum,, );
PrintNum(geNum,,);
}
/// <summary>
/// 控制台打印要显示的字符
/// </summary>
/// <param name="number">要打印的数字</param>
/// <param name="shifx">打印数字距离屏幕左边距离</param>
/// <param name="shify">打印数字距离屏幕上边距离</param>
static void PrintNum(int number, int shifx, int shify)
{
switch (number)
{
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *** \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" * * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" * * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *** \n");
break;
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" ** \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" * * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" * \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
break;
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
break;
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
break;
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
break;
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
break;
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
break;
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
break;
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" ***** \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *** \n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" ***** \n");
break;
case :
Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("* *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write(" *\n");
Console.SetCursorPosition(shifx, shify+); //设置光标位置离屏幕左边为0,离屏幕顶部为1
Console.Write("*******\n");
break;
default:
break;
}
}
}
}

C#编程 - 交通灯模拟的更多相关文章

  1. Micropython TurnipBit 青少年入门编程 交通灯实验

    不知道大家小时候对红绿灯的原理有什么研究过,我是农村的孩子直到初中才见到真实的红绿灯,当时我记得很清楚,在那个路口站了五六分钟就盯着红绿灯变换,搞不清原理,只觉得神奇.现在想来实在可笑,今天写这个的很 ...

  2. 黑马程序猿_7K面试题之交通灯系统

    交通灯信号模拟系统 一.概述 模拟实现十字路口的交通灯管理系统逻辑,详细需求例如以下:(需求直接来源于老师的文档) ①      异步随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆 ...

  3. 黑马程序员:Java编程_7K面试题之交通灯管理系统

    =========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 异步随机生成按照各个路线行 ...

  4. 「雕爷学编程」Arduino动手做(34)——三色LED交通灯模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  5. 微型计算机系统实验总结(学习性实验:IO地址译码,可编程并行接口8255,交通灯控制实验 + 自主设计实验:汽车信号灯控制系统,电风扇控制器,洗衣机控制系统,霓虹灯,电梯控制系统)

    实验配套软件: https://download.csdn.net/download/qq_39932172/11221584 实验指导用书: 教师版: https://download.csdn.n ...

  6. 黑马程序员——【Java高新技术】——案例:交通灯管理系统

    ---------- android培训.java培训.期待与您交流! ---------- 一.交通灯管理系统的项目需求 Ø 异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆 - ...

  7. 黑马程序员_JAVA之交通灯管理系统

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.一.需求:模拟实现十字路口的交通灯管理系统逻辑,具体需求如下:  1.异步随机生成按照各个路 ...

  8. java 7K交通灯管理系统面试题

    交通灯管理系统 模拟实现十字路口的交通灯管理系统逻辑.详细需求例如以下: 1. 异常随机生成依照各个路线行驶的车辆.    比如:    由南向而来去往北向的车辆----直行车辆    由西向而来去往 ...

  9. Java基础---Java---面试题---交通灯管理系统(面向对象、枚举)

    交通灯管理系统的项目需求: 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 1.异步随机生成按照各个路线行驶的车辆  例如:   由南向而来去往北向的车辆-----直行车辆   由西向而来去往南 ...

随机推荐

  1. String 类的实现(2)引用计数与写时拷贝

    1.引用计数 我们知道在C++中动态开辟空间时是用字符new和delete的.其中使用new test[N]方式开辟空间时实际上是开辟了(N*sizeof(test)+4)字节的空间.如图示其中保存N ...

  2. Django-model基础

    Django-model基础 在Django-ORM中表和类存在映射关系 表名<------------>类名 字段<------------>属性 表记录<------ ...

  3. Web.Config引入配置ConfigSource

    1.配置文件要和Config文件通一个项目 2.注意路径的写法 3.appSettings和connectionStrings等都可以设置configSource 4.这样发布到不同的环境的时候,改动 ...

  4. python从零安装

    一 python 1.安装python https://www.python.org/ 环境变量path添加 ;C:\Python27;C:\Python27\Lib\site-packages;C: ...

  5. asp.net core 自定义401和异常显示内容(JWT认证、Cookie Base认证失败显示内容)

    asp.net core 2.0使用JWT认证园子里已经有挺多帖子了,但开发中发现认证未授权情况下返回的401状态码是没有任何信息的,业务中可能有需要返回一串错误的Json信息.在这里我分享一个自定义 ...

  6. mysql基本操作(二)

    1.向表msg中插入数据,先创建表,再插入数据 mysql> create table msg ( -> id int, -> title varchar(60), -> na ...

  7. Javascript \x 反斜杠x 16进制 编解码

    js 里 \x 开头的通常是16进制编码的数据,下面代码实现编解码: 解码 function decode(str){ return str.replace(/\\x(\w{2})/g,functio ...

  8. AtCoder Grand Contest 1~10 做题小记

    原文链接https://www.cnblogs.com/zhouzhendong/p/AtCoder-Grand-Contest-from-1-to-10.html 考虑到博客内容较多,编辑不方便的情 ...

  9. Python3爬虫知识点总结

    1.requests获取响应头的方法 eg:获取响应头信息 import requests res = request.head(url).headers print(res)

  10. tomcat配置调优与安全总结

    http://vekergu.blog.51cto.com/9966832/1672931 tomcat配置调优与安全总结 作为运维,避免不了与tomcat打交道,然而作者发现网络上关于tomcat配 ...