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.异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆-----直行车辆 由西向而来去往南 ...
随机推荐
- data-key
在foreach或者each循环中给按钮赋予值 html中:data-key="@config.key" js里获取值: var key = $(this).data(" ...
- Linux使用退格键时出现^H ^?解决方法
Linux使用退格键时出现^H ^?解决方法 在linux下执行脚本不注意输错内容需要删除时总是出现^H ^H不是H键的意思,是backspace.主要是当你的终端backspace有问题的时候才需要 ...
- TodoMVC:帮助你选择一个MV*框架
开发者现在有很多的MV*框架选择来组织开发web应用程序.Backbone. Ember.AngularJS.Spine… 新的稳定解决方案列表持续增长,但你如何决定在海量的框架中选择哪个使用? 为了 ...
- 547. Friend Circles
There are N students in a class. Some of them are friends, while some are not. Their friendship is t ...
- hdu2036
题解: 求多边形面积 分成很多块三角形求就可以了 凹的也是支持的 代码: #include <bits/stdc++.h> using namespace std; #define rin ...
- 【ASP.NET】UCenter实现多站点同步登录退出
利用UCenter实现discuz论坛和应用网站同步登录和退出功能 测试环境:Discuz! X3.2.UCenter 1.6..Net Framework 4.0 进入Discuz 后台的UCent ...
- WebApi接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了 ...
- http账户密码的截取
首先,http的前提也是基于arp欺骗的,当arp欺骗成功后,方可进行. 具体步骤如下: 1.打开终端,先进行流量的转发:echo 1 >/proc/sys/net/ipv4/ip_forw ...
- JS元素意外点击元素消失
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 移动端上拉加载下拉刷新插件-mescroll.js插件
官网地址是:http://www.mescroll.com // 初始化mescroll function initMeScroll() { //创建MeScroll对象,内部已默认开启下拉刷新,自动 ...