C#编程 - 交通灯模拟
程序写的有点繁杂,但大体功能出来的!
效果图:

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#编程 - 交通灯模拟的更多相关文章
- Micropython TurnipBit 青少年入门编程 交通灯实验
不知道大家小时候对红绿灯的原理有什么研究过,我是农村的孩子直到初中才见到真实的红绿灯,当时我记得很清楚,在那个路口站了五六分钟就盯着红绿灯变换,搞不清原理,只觉得神奇.现在想来实在可笑,今天写这个的很 ...
- 黑马程序猿_7K面试题之交通灯系统
交通灯信号模拟系统 一.概述 模拟实现十字路口的交通灯管理系统逻辑,详细需求例如以下:(需求直接来源于老师的文档) ① 异步随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆 ...
- 黑马程序员:Java编程_7K面试题之交通灯管理系统
=========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 异步随机生成按照各个路线行 ...
- 「雕爷学编程」Arduino动手做(34)——三色LED交通灯模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
- 微型计算机系统实验总结(学习性实验:IO地址译码,可编程并行接口8255,交通灯控制实验 + 自主设计实验:汽车信号灯控制系统,电风扇控制器,洗衣机控制系统,霓虹灯,电梯控制系统)
实验配套软件: https://download.csdn.net/download/qq_39932172/11221584 实验指导用书: 教师版: https://download.csdn.n ...
- 黑马程序员——【Java高新技术】——案例:交通灯管理系统
---------- android培训.java培训.期待与您交流! ---------- 一.交通灯管理系统的项目需求 Ø 异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆 - ...
- 黑马程序员_JAVA之交通灯管理系统
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.一.需求:模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 1.异步随机生成按照各个路 ...
- java 7K交通灯管理系统面试题
交通灯管理系统 模拟实现十字路口的交通灯管理系统逻辑.详细需求例如以下: 1. 异常随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆----直行车辆 由西向而来去往 ...
- Java基础---Java---面试题---交通灯管理系统(面向对象、枚举)
交通灯管理系统的项目需求: 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 1.异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆-----直行车辆 由西向而来去往南 ...
随机推荐
- Java+selenium之WebDriver对浏览器的简单操作(一)
操作浏览器的主要方法都来自 org.openqa.selenium.WebDriver 这个接口 这些方法都是在 org.openqa.selenium.remote.RemoteWebDriver这 ...
- spring中的xml配置出处
- 一 time与datetime模块
时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(time.time())”,返回的是float类型. 格式化的时间字 ...
- exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
1.虽然,不是大错,还说要贴一下,由于我运行run-example streaming.NetworkWordCount localhost 9999的测试案例,出现的错误,第一感觉就是Spark没有 ...
- Dapper Helper
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...
- x86 版的 Arduino Intel Galileo 开发板的体验、分析和应用
1.前言 在今年(2013)罗马举办的首届欧洲 Make Faire 上,Intel 向对外发布了采用 x86 构架的 Arduino 开发板:Intel Galileo.这无疑是一个开源硬件领域的重 ...
- python基础——dict和set(字典和集合)
1.dict:pop(),get(),in,{} >>> dicttest = {'marry':34,'jucy':56} --初始化>>> dicttest{' ...
- Python_python内置加密模块
数据加密: 对称加密:数据加密和解密使用相同的密钥,主要解决数据的机密性(DES,AES) 非对称加密(公匙加密):数据加密和解密使用的不同密钥,主要用于身份的验证(DSA,RSA) 单向加密:只能加 ...
- php 连接redis服务器
$redis = new Redis(); //实例化 $redis->connect("local ...
- BZOJ2120 数颜色 莫队 带修莫队
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2120.html 题目传送门 - BZOJ2120 题意 给定一个长度为 $n$ 的序列 $a$ ,有 ...