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.异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆-----直行车辆 由西向而来去往南 ...
随机推荐
- 安装cx_Oracle 6
首先声明,本文是在Linux 环境下进行安装.不涉及Windows 版安装. 一. 了解cx_Oracle 安装要求 要python 通过cx_Oracle 6 操作Oracle 数据库,以下几个条件 ...
- 论文阅读笔记十一:Rethinking Atrous Convolution for Semantic Image Segmentation(DeepLabv3)(CVPR2017)
论文链接:https://blog.csdn.net/qq_34889607/article/details/8053642 摘要 该文重新窥探空洞卷积的神秘,在语义分割领域,空洞卷积是调整卷积核感受 ...
- 无废话-API-01
说明 我的开发环境:VS2013 浏览器:谷歌浏览器(Google Chrome) 1创建项目 1.1添加一个 应用程序"ASP.NET MVC 4 Web 应用程序" 1.2选 ...
- 常见的User-Agent及免费代理IP网站
常见的User-Agent 1.Android Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 ...
- [转] Javascript 原型链
1. 类 在C或者Java里,int a;定义了一个int类型的变量a.其中int是类型的名字,a是具体的变量. Javascript 模仿自 Java, 有一部分面向对象编程的部分.在面向对象的编程 ...
- 剑指offer错题记录
错误重点: 1. 传递vector参数时,如果调用函数改变了vector的内容,一定一定要&,传引用保持一致 旋转数组的最小数字:有重复数字情况,二分查找照样搞.情况考虑要周全,当a[mid] ...
- BeautifulSoup下Unicode乱码解决
今天在用scrapy爬某个网站的数据,其中DOM解析我用的是BeautifulSoup,速度上没有XPath来得快,不过因为用了习惯了,所以一直用的bs,版本是bs4 不过在爬取过程中遇到了一些问题, ...
- 【AtCoder】AGC016
A - Shrinking 用每个字母模拟一下就行 #include <bits/stdc++.h> #define fi first #define se second #define ...
- xcode svn commit is not under version control 和 git常用指令
使用Xcode提交一个第三方库时,由于包含资源文件,总是提交不了,提示报错:XXX commit is not under version control (1) 网上查了下,得知 xcode对于sv ...
- ios线程和GCD和队列同步异步的关系
1.什么是进程? 进程是指在系统中正在运行的一个应用程序.比如同时打开QQ.Xcode,系统就会分别启动2个进程.截图 2.什么是线程? 1).一个进程要想执行任务,必须得有线程(每一个进程至少要有一 ...