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.异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆-----直行车辆 由西向而来去往南 ...
随机推荐
- NPOI操作Excel(一)--NPOI基础
用C#读取Excel的方法有很多中,由于近期工作需要,需要解析的Excel含有合并单元格以及背景色等特殊要求,故在网上查了一些关于读Excel的方法的优缺点,觉得NPOI能满足我的需要,所以搜索了一些 ...
- 区分TCP包的顺序
确认TCP包的顺序: 使用抓包工具抓包之后,通常按照时间先后排序的,而不是数据的内容逻辑先后.查找内容的先后的关键在于查看TCP中的Sequence number和Acknowledgment num ...
- python练习册0004题
在任意一个英文文档中,统计单词出现的次数, 分析: 本题不是很难,单词通常以空格隔开,但是有些单词后面跟一些特殊符号,只需把这些特殊符号替换掉就可以了, 代码一 import re file_name ...
- debian 下deb包的制作
http://page.renren.com/601230663/note/817856769?op=next&curTime=1333642042000
- JSP基础知识➣Cookie和Session(五)
JSP Cookie 处理 Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持.JSP脚本通过request对象 ...
- alpha冲刺4/10
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺4 团队部分 后敬甲 过去两天完成了哪些任务 文字描述 主页部分图标的替换 -拍照按钮的设计和测试 GitHub代码 ...
- 【Android】Android EditText 去除边框
[Android]Android EditText 去除边框 将EditText属性设置修改 android:background="@null" //////////////// ...
- google hacking
Google是一个强大的搜索引擎:而对于黑客而言,则可能是一款绝佳的黑客工具.正因为google的检索能力强大,黑客可以构造特殊的关键字,使用Google搜索互联网上的相关隐私信息.通过Google, ...
- HDU2853 Assignment KM
原文链接http://www.cnblogs.com/zhouzhendong/p/8284105.html 题目传送门 - HDU2853 题意概括 (来自谷歌翻译) 题解 这是一道好题. 我们首先 ...
- JDK生成证书:
JDK生成证书: 在此之前确保本地已安装JDK1.6 1.生成客户端的私钥,客户端的证书 1)keytool -genkey -alias clientkey -keystore kclient.ke ...