[C#실습] 신호등 시뮬레이션
사용자로부터 신호등에서 자동차가 이동할 수 있는 시간과 사람이 이동할 수 있는 시간을 입력받아 이에 맞게 신호등 시뮬레이션하는 응용 프로그램이다.
이를 통해 Console 클래스의 여러 멤버를 사용해 보기로 하자.
능력단위 (NCS 기준) |
프로그래밍 언어 활용 (2001020215_15v3) |
개발기간 |
2017.09. 28 (1시간) |
프로그램 개요 |
Console클래스의 여러 멤버의 사용법을 익히기 위한 프로젝트로 원하는 화면 좌표로 캐럿을 이동하여 원하는 색상으로 원하는 내용을 출력하는 신호등 시뮬레이션이다. |
||
능력단위 요소 및 수행 준거(훈련내용) |
기본문법 활용하기 1.1 응용소프트웨어 개발에 필요한 프로그래밍 언어의 데이터 타입을 적용하여 변수를 사용할 수 있다. 1.2 프로그래밍 언어의 연산자와 명령문을 사용하여 애플리케이션에 필요한 기능을 정의하고 사용할 수 있다. 1.3 프로그래밍 언어의 사용자 정의 자료형을 정의하고 애플리케이션에서 사용할 수 있다. |
개인 기술 경력 문서
using System; using System.Threading;
namespace 신호등 { class Program { static string[,] msg= new string[3,2] //신호에 따른 출력할 내용 [색][메시지] { {"GREEN ","Don't Walk"}, {"YELLOW","Don't Walk"}, {" RED ", " Walk "} }; static string[] loads = new string[2]//도로를 표현할 내용 { "-----------|---|-----------", "|---|" }; static void Main(string[] args) { int[] ts = new int []{ 20, 3, 5 }; //시간 배열 int cnt = 0; //테스트 실험 카운터 int flag = 0;//신호
Console.Write("녹색등 시간(20~30초): "); ts[0] = int.Parse(Console.ReadLine()); if ((ts[0] < 20) || (ts[0] > 30)) //입력한 시간이 범위를 벗어나면 { Console.WriteLine("입력 오류\n"); return; } Console.Write("보행시간(5~10)초: "); ts[2] = int.Parse(Console.ReadLine()); if ((ts[2] < 5) || (ts[2] > 10))//입력한 시간이 범위를 벗어나면 { Console.WriteLine("입력 오류\n"); return; } Console.Clear(); //입력받았던 화면 내용을 지운다. while (cnt < 10)//신호등은 10 번의 사이클 동안 실험 { for (flag = 0; flag < 3; flag++)//0:녹색, 노랑, 빨강 { SetColor(flag); DrawMap(flag, ts[flag] * 1000);//그리기(신호, 시간) } cnt++; //실험 카운터 증가 } Console.ReadKey(); }
private static void SetColor(int flag) { switch(flag) { case 0: Console.ForegroundColor = ConsoleColor.Red; break; case 1: Console.ForegroundColor = ConsoleColor.Yellow; break; case 2: Console.ForegroundColor = ConsoleColor.Green; break; } }
private static void DrawMap(int flag, int time_flow) { Putsxy(10, 1, msg[flag,1]);//위쪽 메시지 출력 Putsxy(10, 7, msg[flag,1]);//아래쪽 메시지 출력 //도로 출력 Putsxy(0, 2, loads[0]); Putsxy(11, 3, loads[1]); Putsxy(0, 4, loads[0]); Putsxy(11, 5, loads[1]); Putsxy(0, 6, loads[0]);
Putsxy(19, 3, msg[flag,0]);//도로에 신호등 색 출력 Putsxy(3, 5, msg[flag,0]); //도로에 신호등 색 출력 DrawTime(time_flow); //남은 시간을 출력 }
private static void DrawTime(int time_flow) { while (time_flow > 0)//남은 시간이 있으면 { Console.SetCursorPosition(0, 0);//시간 출력 좌표로 이동 Console.Write("{0,6:F2}", (float)time_flow / 1000);//총 6자리(소수점 이하 2자리)를 출력 Thread.Sleep(10);//0.01초 멈춤 time_flow -= 10; //남은 시간을 빼줌 } }
private static void Putsxy(int x, int y, string msg) { Console.SetCursorPosition(x, y); Console.Write(msg); } } }
|
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
[라이브러리 실습] 응용 종류에 종속적이지 않은 라이브러리 만들기 (0) | 2017.12.21 |
---|---|
[ADO.NET 실습] DB 설계, 저장 프로시저 구현, 응용 프로그램 구현 (0) | 2017.11.10 |
[MSSQL] 상품 판매 DB 설계 및 저장 프로시저 구현 (0) | 2017.11.08 |
[XML.NET 실습] XmlDocument를 이용한 도서 관리 프로그램 (0) | 2017.10.25 |
[Windows Forms with C#] 화면 설계 및 화면 구현 (0) | 2017.10.17 |
[C# 실습] 라이브러리 활용하기 (0) | 2017.09.28 |
매우 초보스런 단위테스트 예 (0) | 2017.09.20 |
[C# OOP 실습] 캠퍼스 생활 (0) | 2017.09.15 |
[C# 소스] 클래스 간의 관계 - 5. 의존(Dependency) 관계 (0) | 2017.09.14 |
[C# 소스] 클래스 간의 관계 - 4. 연관(Association) 관계 (0) | 2017.09.14 |