asp.net C# 控制台模拟红绿灯(交通信号灯)

一、需求分析

通过控制台输入绿灯,黄灯,红灯显示时间,然后倒计时,周而复始。

二、运行效果

1、输入显示时间

2、绿灯,黄灯,红灯,倒计时周而复始

三、实现代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Write("请输入绿灯显示时间:");
            int GreenNum = InputNum();

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.Write("请输入黄灯显示时间:");
            int YellowNum = InputNum();

            Console.ForegroundColor = ConsoleColor.Red;
            Console.Write("请输入红灯显示时间:");
            int RedNum = InputNum();
            //循环执行
            while (true)
            {
                //绿灯倒计时
                for (int i = GreenNum; i > 0; i--)
                {
                    WriteNum(i, ConsoleColor.Green);
                    //暂停1秒
                    Thread.Sleep(1000);
                }
                //黄灯倒计时
                for (int i = YellowNum; i > 0; i--)
                {
                    WriteNum(i, ConsoleColor.Yellow);
                    //暂停1秒
                    Thread.Sleep(1000);
                }
                //红灯倒计时
                for (int i = RedNum; i > 0; i--)
                {
                    WriteNum(i, ConsoleColor.Red);
                    //暂停1秒
                    Thread.Sleep(1000);
                }
            }
        }
        /// <summary>
        /// 获取输入值逻辑
        /// </summary>
        /// <returns></returns>
        public static int InputNum()
        {
            string s_Num = Console.ReadLine();
            if(s_Num.Length>2)
            {
                Console.Write("输入值不能超过两位数,请重新输入:");
                return InputNum();
            }
            int Num = 0;
            bool IsNum = int.TryParse(s_Num, out Num);
            if(!IsNum)
            {
                Console.Write("输入值不是整数,请重新输入:");
                return InputNum();
            }
            if(Num<=0)
            {
                Console.Write("输入值不是正数,请重新输入:");
                return InputNum();
            }
            if (Num > 99 )
            {
                Console.Write("输入值不是超过99,请重新输入:");
                return InputNum();
            }
            return Num;
        }
        /// <summary>
        /// 生成指定数字
        /// </summary>
        /// <param name="Num"></param>
        public static void WriteNum(int Num, ConsoleColor consoleColor)
        {
            int FirstNum = 0;
            int SecondNum = Num;
            if (Num.ToString().Length == 2)
            {
                FirstNum = int.Parse(Num.ToString()[0].ToString());
                SecondNum = int.Parse(Num.ToString()[1].ToString());
            }
            Console.Clear();
            for (int i = 0; i < 20; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    ChangeColor(FirstNum, i, j, consoleColor);
                    Console.Write("●");
                }
                Console.Write("   ");
                for (int j = 0; j < 10; j++)
                {
                    ChangeColor(SecondNum, i, j, consoleColor);
                    Console.Write("●");
                }
                Console.WriteLine();
            }
        }
        public static void ChangeColor(int Num, int i, int j, ConsoleColor consoleColor)
        {
            Console.ForegroundColor = ConsoleColor.White;
            switch (Num)
            {
                case 0:
                    if (i <= 1 || i >= 18 || j <= 1 || j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
                case 1:
                    if (j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
                case 2:
                    if (i <= 1 || i == 9 || i == 10 || i >= 18)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (i < 10 && j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (i > 10 && j <= 1)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
                case 3:
                    if (i == 0 || i == 1 || i == 9 || i == 10 || i == 18 || i == 19)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
                case 4:
                    if (i == 9 || i == 10)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (i < 10 && j <= 1)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
                case 5:
                    if (i <= 1 || i == 9 || i == 10 || i >= 18)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (i > 10 && j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (i < 10 && j <= 1)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
                case 6:
                    if (i <= 1 || i == 9 || i == 10 || i >= 18)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (j <= 1)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (i > 10 && j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
                case 7:
                    if (i <= 1)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
                case 8:
                    if (i <= 1 || i >= 18 || i == 9 || i == 10)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (j <= 1 || j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
                case 9:
                    if (i <= 1 || i == 9 || i == 10 || i >= 18)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (i < 10 && j <= 1)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    if (j >= 8)
                    {
                        Console.ForegroundColor = consoleColor;
                    }
                    break;
            }
        }
    }
}

C# Code

注:以上代码属个人整理,用于交流学习,原创。转载请标明出处。(QQ/微信:742010299 昵称:同心同德)

原文地址:https://www.cnblogs.com/tongxintongde/p/11768210.html

时间: 2025-01-16 16:28:33

asp.net C# 控制台模拟红绿灯(交通信号灯)的相关文章

交通信号灯控制系统——微机程序设计

1.设计任务 交通信号灯控制系统:要求能显示剩余时间和控制红.黄.绿三色灯的显示. 2.总体方案设计与方案论证 (1) 总体方案设计 设计路口交通灯控制系统,使用LED显示单元的两组发光二极管(红黄绿)分别模拟十字路口的两组交通灯. a.南北路口的绿灯.东西路口的红灯同时亮20秒.数码管20秒倒记时显示. b.南北路口的黄灯亮5秒,同时东西路口的红灯继续亮.数码管5秒倒记时显示. c.南北路口的红灯.东西路口的绿灯同时亮20秒. d.南北路口的红灯继续亮.同时东西路口的黄灯亮5秒. e.转(1)

交通信号灯远电力101通讯规约 设备运行数据 透传模块串口通信

方案需求 智慧交通信号控制系统是基于交通大数据的智能自动化应用系统.系统在大数据的基础上,对道路车流量.人流量.路况态势进行判断.智慧交通信号控制系统接入流量检测器.排队长度检测器.速度检测器等,对系统配时方案进行校正和验算.自动控制红绿灯时间,故障情况监测上报,远程人工在线调控红绿灯,为消防车.急救车.警务车等特殊车辆进行预警让道. 系统可根据各车道车流量反馈信息,根据相应算法设置各信号灯时间.控制系统和控制中心相连接,可以实现跨区域交通控制.在遇到救护车.消防车等突发情况下,可以由交警通过无

模拟红绿灯(递归与队列)

模仿交通信号灯,最简单的处理方式不过是一个简单的递归 function traffic(num) { var signal = ['红', '黄', '蓝']; num = num < (signal.length - 1) ? (num + 1) : 0; setTimeout(() => { console.log(signal[num]); deng(num); }, 1000); } 非常简单的一个功能,突然想到了队列的先进后出,蛮可以用队列的方式再升级一下,顺便巩固下队列的知识 创建

asp.net viewstate的模拟登陆

其实 VIEWSTATE 不用太在意,倒是 JTCookieID 需要注意,这个才应该是服务器上用来维护 Session 的那个 Cookie.所以,你用 httpclient 的时候,不能上来就直接发到“POST /PersonLogin.aspx”上,因为那样的话,服务器上还没有建立一个有效的 Session. 你需要先用 HttpClient 发一个别的什么请求(一般是登录窗口那个画面,也可以是其它任何别的页面,反正只是为了让服务器知道有新的客户端要上来了,立刻新创建一个 Session,

VisualStudioCode创建的asp.net core控制台程序部署到linux

1.asp.net core控制台程序 static void Main(string[] args) { int times=10; while(times>=0) { Console.WriteLine("Hello World!"); times--; Thread.Sleep(1000); } } 2.发布 发布前,修改test2.csproj文件(项目名称为test2) <Project Sdk="Microsoft.NET.Sdk">

黑马程序员——交通信号灯管理系统

题目: 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 异步随机生成按照各个路线行驶的车辆. 例如: 由南向而来去往北向的车辆 右转车辆 由东向而来去往南向的车辆"); } public Lamp blackOut(){ this.lighted = false; if(opposite!=null){ Lamp.valueOf(opposite).blackOut(); } Lamp nextLamp = null; if(next!=null){ nextLamp = Lamp.val

chrome控制台模拟hover、focus、active等状态,方便调试

有时候需要调试一个网页,需要某些元素在hover.focus.active等状态. 比如hover,鼠标放到hover上,然后去控制台中找DOM,鼠标移开的时候元素就不是hover状态了. 此时可以使用控制台来模拟hover事件. 方法:

一、ASP.NET MVC 路由(一)--- ASP.NET WebForm路由模拟

ASP.NET WebForm 应用,用户请求的是物理文件,其中包括静态页面和动态页面,在Url中的显示都是服务器中一个物理文件的相对路径.但是ASP.NET MVC就不同了,用户请求的是Controller中一个Action方法,这种请求是通过路由将Url映射到相对的Controller和Action中. ASP.NET MVC是在Application_Start时,定义了路由的规则,当用户使用规定的路由规则进行访问时,就会通过路由映射的方式实现用户完整的Url访问.下面我们就开始使用Asp

交通信号灯调试程序

一,以下内容需要的软件以及使用方法和操作方法请看我以前的博文.这里发下要使用到的proteus电路图 链接:https://pan.baidu.com/s/1W9vbEOxdCtdtd3VAaV1rkg 提取码:dxak 二,要交通灯的要求. 1,先东西南北红灯亮,1秒. 2,东西红灯亮,南北绿灯亮,10秒. 3,东西红灯闪,南北黄灯闪,3秒. 4,东西绿灯亮,南北红灯亮,10秒. 5,东西黄灯闪,南北绿灯亮,3秒. 三,开始 1,使用proteus软件打开交通灯的电路图(直接打开电路图即可),