자 우리 까만화면 시리즈의 마지막 행맨을 해봅시다!

제가 생각한 방법은 

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
프로그램 모습




+ Recent posts