자 우리 까만화면 시리즈의 마지막 행맨을 해봅시다!
제가 생각한 방법은
1. 클래스를 하나 더 만들겠습니다! 컴퓨터 클래스를 만들어서 문제들을 몇개 넣을거에요! 배열로요!
2. 이겼습니다 졌습니다 나오는 메서드와 행맨의 상태를 보여주는 메서드를 만들겠습니다.
3. 레벨이 5이상일때 끝내는 매서드를 만들겠습니다.
4. 레벨이 5면 끝내고 아니라면 입력한 문자를 바꾸어주는 메서드를 만들겠습니다.
5. 주 클래스로 와서 String을 입력받고 그 값이 에러가 아니라면 리턴해주는 메서드를 만들겠습니다.
6. 마지막으로 While문으로 이기거나 지기까지 계속 하게 만드는 메서드를 만들겠습니다.
Computer.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hangman // 크게 입력 문제인지, 비교문제인지, 알아 보아야 함 { class Computer { private String[] m_key = { "Boolean", "Integer", "String", "System", "Thread", "StringBuffer", "Package", "Class", "Object", "Void" }; public StringBuilder m_user; //유저가 넣은 글자 public String m_word; // 컴퓨터가 랜덤으로 넣은 글자 private int m_level; // 맞거나 틀리거나 한 레벨 private int m_index; // 크기를 알아야 그 크기 만큼 -로 채울수 있다 public Computer() //생성자를 통해서 변수 초기화 { Random myrand = new Random(); m_index = myrand.Next(m_key.Length-1); //랜덤으로 값을 인덱스에 넣고 번째 찾음 m_word = m_key[m_index]; //나의 키 중에 나의 인덱스를 가진값을 word에 넣음 예 0은 boolean m_level = 0; //레벨은 9부터 시작 m_user = new StringBuilder(); //유저가 넣은 값을 stringbuilder 에 넣음 for(int i=0;i<m_word.Length;i++) //word에 길이 만큼 -생성 { m_user.Append('_'); } } public void showEndMsg(Boolean isWin) // true false값을 통해서 메세지 생성 함수 { String msg; if(true == isWin) { msg = "사형수를 구하셨습니다"; } else { msg = "사형이 집행 되었습니다."; } Console.WriteLine(msg); } public void showHangMan() //레벨을 가지고 행맨을 보여주는 함수 { Console.WriteLine("★ 집행 단계 ★"); switch (m_level) { case 0: Console.WriteLine(" ┌──┐"); Console.WriteLine(" ▲ ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); ; break; case 1: Console.WriteLine(" ┌──┐"); Console.WriteLine(" ▲ ┃"); Console.WriteLine("┌─┼─ ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); break; case 2: Console.WriteLine(" ┌──┐"); Console.WriteLine(" ▲ ┃"); Console.WriteLine("┌─┼─┐┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); break; case 3: Console.WriteLine(" ┌──┐"); Console.WriteLine(" ▲ ┃"); Console.WriteLine("┌─┼─┐┃"); Console.WriteLine(" ┃ ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); break; case 4: Console.WriteLine(" ┌──┐"); Console.WriteLine(" ▲ ┃"); Console.WriteLine("┌─┼─┐┃"); Console.WriteLine(" ┃ ┃"); Console.WriteLine("┌─┼─ ┃"); Console.WriteLine(" ┃"); break; case 5: Console.WriteLine(" ┌──┐"); Console.WriteLine(" ▲ ┃"); Console.WriteLine("┌─┼─┐┃"); Console.WriteLine(" ┃ ┃"); Console.WriteLine("┌─┼─┐┃"); Console.WriteLine(" ┃"); break; default: Console.WriteLine(" ┌───┐"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); Console.WriteLine(" ┃"); break; } } private int checkEnd() { String t_msg; t_msg = m_user.ToString(); if(t_msg.Equals(m_key[m_index])) { return 1; } if(5<=m_level) { return 2; } return 0; } public int checkLevel(char msg) { Boolean find = false; for(int i =0;i<m_key[m_index].Length;i++) { if(m_key[m_index][i]==msg) { if('_' == m_user[i]) //중복을 막아준다 { m_user[i]=msg; find = true; break; } } } if(false == find) { m_level++; } return checkEnd(); } } } | cs |
Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hangman { class Program { Computer m_com; public void Hangman() { m_com = new Computer(); } public char getKey() { String msg; char a; msg = "error"; Console.WriteLine("알파벳을 입력하세요:"); msg = Console.ReadLine(); a = msg[0]; return a; } public void run() { int result; char msg; while (true) { Console.WriteLine(" "+m_com.m_user); msg = getKey(); result = m_com.checkLevel(msg); m_com.showHangMan(); if(1==result) { m_com.showEndMsg(true); break; } else if(2==result) { m_com.showEndMsg(false); break; } } } static void Main(string[] args) { Program m = new Program(); m.Hangman(); m.run(); } } } | cs |
프로그램 모습
'Visual C# > Universal App' 카테고리의 다른 글
15. C#/Xaml Windows 10 app 강좌 Hello, Windows 10 (0) | 2015.10.28 |
---|---|
14. C# 강좌 GUI 프로그래밍을 하기전에 (0) | 2015.10.25 |
12. C# 강좌 행맨 Hangman (1) 알아야 할 것들 (0) | 2015.10.24 |
11. C# 강좌 숫자 야구(2) (0) | 2015.10.21 |
10. C# 강좌 숫자 야구(1) 알아야 할 것들 Call by refence,Call by Value (0) | 2015.10.20 |