程序写的有点繁杂,但大体功能出来的!
效果图:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Threading; 7 8 /* 9 * 空间名:TrafficLight 10 * 功能:模拟交通灯 11 * 编写人:Doget 12 * 编写日期:2017.10.14 13 */ 14 namespace TrafficLight 15 { 16 class Program 17 { 18 const int RED_TIME = 10; 19 const int GREEN_TIME = 15; 20 const int YELLOW_TIME = 3; 21 22 static void Main(string[] args) 23 { 24 //红绿灯程序开始 25 START: 26 Console.SetCursorPosition(0, 0); //设置光标位置离屏幕左边为0,离屏幕顶部为1 27 Console.Write("请按S键开启交通灯:"); 28 if (InputYellow() == "s") 29 { 30 LightOn("green", GREEN_TIME); 31 Thread.Sleep(500); 32 LightOn("red", RED_TIME); 33 Thread.Sleep(500); 34 LightOn("yellow", YELLOW_TIME); 35 Thread.Sleep(500); 36 } 37 else 38 { 39 Console.WriteLine("输入错误,请重新输入!"); 40 Console.Clear(); 41 goto START; 42 } 43 Console.Write("按g键继续,其他键退出:"); 44 if (InputYellow() == "g") 45 { 46 goto START; 47 } 48 else 49 Console.ReadKey(); 50 } 51 /// <summary> 52 /// 输入黄色字体的内容 53 /// </summary> 54 /// <returns>用户输入的内容</returns> 55 static string InputYellow() 56 { 57 string startCmd; 58 Console.ForegroundColor = ConsoleColor.Yellow; 59 startCmd = (Console.ReadLine()).ToLower(); 60 Console.ResetColor(); 61 return startCmd; 62 } 63 /// <summary> 64 /// 亮灯控制 65 /// </summary> 66 /// <param name="color">设置亮灯的颜色</param> 67 /// <param name="time">设置亮灯的时间</param> 68 static void LightOn(string color, int time) 69 { 70 switch (color.ToLower()) 71 { 72 case "green": 73 Console.ForegroundColor = ConsoleColor.Green; 74 for (int i = time; i > 0; i--) 75 { 76 ShowNumber(i); 77 Thread.Sleep(1000); 78 } 79 Console.ResetColor(); 80 break; 81 case "red": 82 Console.ForegroundColor = ConsoleColor.Red; 83 for (int i = time; i > 0; i--) 84 { 85 if (i < 10) 86 { 87 ShowNumber(i); 88 } 89 Thread.Sleep(1000); 90 } 91 Console.ResetColor(); 92 break; 93 case "yellow": 94 Console.ForegroundColor = ConsoleColor.Yellow; 95 for (int i = time; i > 0; i--) 96 { 97 if (i < 10) 98 { 99 ShowNumber(i); 100 } 101 Thread.Sleep(1000); 102 } 103 Console.ResetColor(); 104 break; 105 default: 106 break; 107 } 108 } 109 /// <summary> 110 /// 显示数字方法 111 /// </summary> 112 /// <param name="number">要显示的数字</param> 113 static void ShowNumber(int number) 114 { 115 int geNum = number % 10; 116 int shiNum = number / 10 % 10; 117 int baiNum = number / 10 % 10; 118 119 PrintNum(shiNum,0, 1); 120 PrintNum(geNum,8,1); 121 } 122 /// <summary> 123 /// 控制台打印要显示的字符 124 /// </summary> 125 /// <param name="number">要打印的数字</param> 126 /// <param name="shifx">打印数字距离屏幕左边距离</param> 127 /// <param name="shify">打印数字距离屏幕上边距离</param> 128 static void PrintNum(int number, int shifx, int shify) 129 { 130 switch (number) 131 { 132 case 0: 133 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 134 Console.Write(" *** "); 135 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 136 Console.Write(" * * "); 137 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 138 Console.Write("* * "); 139 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 140 Console.Write("* * "); 141 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 142 Console.Write("* * "); 143 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 144 Console.Write(" * * "); 145 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 146 Console.Write(" *** "); 147 break; 148 case 1: 149 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 150 Console.Write(" * "); 151 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 152 Console.Write(" ** "); 153 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 154 Console.Write(" * * "); 155 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 156 Console.Write(" * "); 157 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 158 Console.Write(" * "); 159 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 160 Console.Write(" * "); 161 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 162 Console.Write("******* "); 163 break; 164 case 2: 165 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 166 Console.Write("******* "); 167 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 168 Console.Write(" * "); 169 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 170 Console.Write(" * "); 171 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 172 Console.Write("******* "); 173 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 174 Console.Write("* "); 175 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 176 Console.Write("* "); 177 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 178 Console.Write("******* "); 179 break; 180 case 3: 181 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 182 Console.Write("******* "); 183 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 184 Console.Write(" * "); 185 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 186 Console.Write(" * "); 187 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 188 Console.Write("******* "); 189 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 190 Console.Write(" * "); 191 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 192 Console.Write(" * "); 193 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 194 Console.Write("******* "); 195 break; 196 case 4: 197 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 198 Console.Write("* * "); 199 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 200 Console.Write("* * "); 201 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 202 Console.Write("* * "); 203 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 204 Console.Write("******* "); 205 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 206 Console.Write(" * "); 207 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 208 Console.Write(" * "); 209 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 210 Console.Write(" * "); 211 break; 212 case 5: 213 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 214 Console.Write("******* "); 215 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 216 Console.Write("* "); 217 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 218 Console.Write("* "); 219 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 220 Console.Write("******* "); 221 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 222 Console.Write(" * "); 223 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 224 Console.Write(" * "); 225 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 226 Console.Write("******* "); 227 break; 228 case 6: 229 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 230 Console.Write("******* "); 231 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 232 Console.Write("* "); 233 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 234 Console.Write("* "); 235 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 236 Console.Write("******* "); 237 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 238 Console.Write("* * "); 239 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 240 Console.Write("* * "); 241 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 242 Console.Write("******* "); 243 break; 244 case 7: 245 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 246 Console.Write("******* "); 247 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 248 Console.Write(" * "); 249 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 250 Console.Write(" * "); 251 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 252 Console.Write(" * "); 253 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 254 Console.Write(" * "); 255 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 256 Console.Write(" * "); 257 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 258 Console.Write(" * "); 259 break; 260 case 8: 261 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 262 Console.Write(" ***** "); 263 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 264 Console.Write("* * "); 265 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 266 Console.Write("* * "); 267 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 268 Console.Write(" *** "); 269 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 270 Console.Write("* * "); 271 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 272 Console.Write("* * "); 273 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 274 Console.Write(" ***** "); 275 break; 276 case 9: 277 Console.SetCursorPosition(shifx, shify); //设置光标位置离屏幕左边为0,离屏幕顶部为1 278 Console.Write("******* "); 279 Console.SetCursorPosition(shifx, shify+1); //设置光标位置离屏幕左边为0,离屏幕顶部为1 280 Console.Write("* * "); 281 Console.SetCursorPosition(shifx, shify+2); //设置光标位置离屏幕左边为0,离屏幕顶部为1 282 Console.Write("* * "); 283 Console.SetCursorPosition(shifx, shify+3); //设置光标位置离屏幕左边为0,离屏幕顶部为1 284 Console.Write("******* "); 285 Console.SetCursorPosition(shifx, shify+4); //设置光标位置离屏幕左边为0,离屏幕顶部为1 286 Console.Write(" * "); 287 Console.SetCursorPosition(shifx, shify+5); //设置光标位置离屏幕左边为0,离屏幕顶部为1 288 Console.Write(" * "); 289 Console.SetCursorPosition(shifx, shify+6); //设置光标位置离屏幕左边为0,离屏幕顶部为1 290 Console.Write("******* "); 291 break; 292 default: 293 break; 294 } 295 } 296 } 297 }