앞에서 대부분 배운것 이기에 이번 알아야 할 것들이 작네요!
자 만들어 볼까요?
다시 문제를 봅시다
0~9까지 중복을 허용하지 않는 숫자중에 자신이 예측하는 3개의 숫자를 입력합니다. 입력한 숫자와 컴퓨터가 생성한 숫자가 같으면 스트라이크로
값만 있고 위치가 다르면 볼 로 해서 사용자에게 결과를 알려줍니다. 이 정보로 추측하여 세 숫자와 그 위치까지 맞추면 게임이 끝납니다.
한번의 게임에 총 10번의 시도를 할 수 있습니다.
1.먼저 가위바위 보 같이 플레이어 클래스를 만들겠습니다 숫자를 입력받고 int형으로 변환하겠죠?
2. 숫자 3개를 랜덤으로 만드는 메서드 만들겠습니다.(중복이 없게 하는게 중요하겠죠? 중복제거는 로또번호에서 썻던 함수를 응용!)
3. 단순하게 메세지가 보이는 메서드, 스트라이크 볼이 보이는 메서드를 만들겠습니다.
4.게임이 끝날때 보이는 메서드를 생성합니다. 이겼거나 졌거나 컴퓨터의 숫자를 보여주는 메서드등으로 이루어져 있겠죠?
5.스트라이크와 볼등을 체크하는 메서드를 만들것 입니다.
6.한번 플레이 할때마다 체크 메서드를 이용 다른 메서드까지 이용해서 스트라이크와 볼을 보여주는 메서드를 만듭니다.
7.마지막으로 만든 메서드를 run 메서드에 넣고 완료!
소스 코드
Player.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 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NumberBaseBall { class Player { int a; String msg; public Player() { a = 0; msg = " "; } public int input() { Console.WriteLine("0 - 9 사이 값을 넣으세요"); msg = Console.ReadLine(); a = int.Parse(msg); return a; } } } | 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 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 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NumberBaseBall { class Program { int[] m_data; Player m_Player; void NumberBaseBall() { m_data= new int[3]; m_Player = new Player(); } void makeData() { Random rand; rand = new Random(); for(int i=0;i<m_data.Length;i++) { m_data[i] = rand.Next(0, 9); for (int j = 0; j < i; j++) { if(m_data[i]==m_data[j]) { i--; } } } } void showMsg(String msg) { Console.WriteLine(msg); } void showPlay(int[] data) { Console.WriteLine("스트라이크:" + data[1] + " ,볼:" + data[0]); } void showGameEnd(Boolean win) { if(true == win) { Console.WriteLine("축하합니다"); } else { Console.WriteLine("다음 기회에"); } Console.WriteLine("컴퓨터의 숫자는?"); for(int i=0;i<m_data.Length;i++) { Console.WriteLine(m_data[i]); } } int check(int index,int a) { int b; b = 0; for(int i=0;i<m_data.Length;i++) { if(m_data[i]==a) { if(i==index) { b = 2; break; } else { b = 1; } } } return b; } void onePlay(int[] result) { int input; int r; for(int i=0;i<result.Length;i++) { result[i] = 0; } for(int i=0;i<3;i++) { input = m_Player.input(); r = check(i, input); if(2== r) { result[1]++; } else if(1==r) { result[0]++; } } } void run() { Boolean win; int[] result; result = new int[2]; makeData(); win = false; for(int i=0;i<10;i++) { showMsg((i + 1) + "번째 시도"); onePlay(result); showPlay(result); if(3==result[1]) { win = false; break; } } showGameEnd(win); } static void Main(string[] args) { Program m = new Program(); m.NumberBaseBall(); m.run(); } } } | cs |
완성 한 프로그램 입니다.
'Visual C# > Universal App' 카테고리의 다른 글
13. C# 강좌 행맨 Hangman (2) (0) | 2015.10.24 |
---|---|
12. C# 강좌 행맨 Hangman (1) 알아야 할 것들 (0) | 2015.10.24 |
10. C# 강좌 숫자 야구(1) 알아야 할 것들 Call by refence,Call by Value (0) | 2015.10.20 |
9. C# 강좌 가위 바위 보 (2) (2) | 2015.10.20 |
8. C# 강좌 가위 바위 보 (1) 알아야 할 것들 (0) | 2015.10.20 |