public void RankPrint() // 플레이어들 성적 출력 { Score temp; MergeSort(0, scores.Count - 1); Console.Clear(); ConsoleUI.GotoLine(4); Console.WriteLine("\t\t\t\t\t==============================================================="); for (int i = 0; i < scores.Count; i++) { temp = (Score)scores[i]; Console.Write("\t\t\t\t\t {0} ", i + 1); temp.PrintScore(); } Console.WriteLine("\t\t\t\t\t==============================================================="); Console.WriteLine("\t\t\t\t\t\t\t\tPress Any Key..."); while (true) { if (Console.ReadKey().KeyChar != 0) { Console.Clear(); break; } } }
public void PrintMenu() // 메뉴 선택 UI { ConsoleUI.GotoLine(6); Console.WriteLine("\t\t\t\t\t\t\t=========== Menu ===========\n"); Console.WriteLine("\t\t\t\t\t\t\t 1. Play With Computer\n"); Console.WriteLine("\t\t\t\t\t\t\t 2. User vs User\n"); Console.WriteLine("\t\t\t\t\t\t\t 3. Score Board\n"); Console.WriteLine("\t\t\t\t\t\t\t 0. Exit\n"); Console.WriteLine("\t\t\t\t\t\t\t============================\n"); Console.Write("\t\t\t\t\t\t\t Menu Choice > "); }
public void PrintGameScreen() // 게임 화면을 출력한다 { ConsoleUI.GotoLine(3); if (mode == 0) // 모드에 따라 출력 메시지가 다름 { Console.WriteLine("\t\t\t\t\t\t\t" + nickname[turn] + " turn"); } else { if (turn == 1) { Console.WriteLine("\t\t\t\t\t\t\t" + "Computer" + " turn"); } else { Console.WriteLine("\t\t\t\t\t\t\t" + nickname[turn] + " turn"); } } for (int k = 0; k < 9; k += 3) // 격자를 생성하고 map에 맞게 돌을 출력한다 { if (k == 0) { Console.WriteLine("\t\t\t\t\t --------------------------------------------------------------"); } for (int i = 0; i < 8; i++) { for (int j = k; j < k + 3; j++) { if (j == k) { Console.Write("\t\t\t\t\t | "); } if (map[j] == -1) { Console.Write(" "); } else if (map[j] == 0) { Console.Write(whiteBall[i]); } else { Console.Write(blackBall[i]); } Console.Write(" | "); } Console.WriteLine(); } Console.WriteLine("\t\t\t\t\t --------------------------------------------------------------"); } Console.WriteLine("\t\t\t\t\t\t\t\t\t1 2 3\n\t\t\t\t\t\t\t\t\t4 5 6\n\t\t\t\t\t\t\t\t\t7 8 9"); }
public void PrintScreen() // 초기화면 출력 { ConsoleUI.GotoLine(5); Console.WriteLine("\t\t=================================================================================================================="); Console.WriteLine("\t\t□□□□□□□ □□ □□□□□ □□□□□□□ □□ □□□□□ □□□□□□□ □□□□□ □□□□□"); Console.WriteLine("\t\t □ □□ □ □ □ □ □ □ □ □ □"); Console.WriteLine("\t\t □ □ □ □ □ □ □ □ □ □"); Console.WriteLine("\t\t □ □ □ □ □ □ □ □ □ □ □"); Console.WriteLine("\t\t □ □ □ □ □□□□□ □ □ □ □ □□□□□"); Console.WriteLine("\t\t □ □ □ □ □ □ □ □ □ □ □"); Console.WriteLine("\t\t □ □ □ □ □ □ □ □ □ □ □"); Console.WriteLine("\t\t □ □ □ □ □ □ □ □ □ □ □"); Console.WriteLine("\t\t □ □ □□□□□ □ □ □ □□□□□ □ □□□□□ □□□□□"); Console.WriteLine("\t\t=================================================================================================================="); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("\t\t\t\t\t\t\t\t- Press Any Key -"); }
override public void ChoicePlayer(ScoreList scores) { int choice = 0; for (int i = 0; i < 2; i++) { while (true) { ConsoleUI.GotoLine(3); Console.WriteLine("\t\t\t\t\t\t\t\t<Player {0} 설정>", i + 1); Console.WriteLine("\t\t\t\t\t\t\t=============================="); Console.WriteLine("\t\t\t\t\t\t\t 1. 새로운 player 생성\n"); Console.WriteLine("\t\t\t\t\t\t\t 2. 기존 player 이어하기"); Console.WriteLine("\t\t\t\t\t\t\t=============================="); Console.Write("\t\t\t\t\t\t\tInput > "); // 현재 입력된 키를 읽고 맞는지 체크한다. char _input = Console.ReadKey().KeyChar; if (_input < '1' || _input > '2') { Console.Clear(); Console.WriteLine("\n\t\t\tAlert : 1 ~ 2번 중 선택하세요"); continue; } else { choice = int.Parse(_input + ""); Console.WriteLine(); break; } } if (choice == 1) { bool repeat = true; Console.WriteLine("\n\t\t\t\t\t\t\t<새 플레이어 명을 정해주세요.>"); while (repeat) // 공백 문자가 포함되지 않은 닉네임이 입력될 때까지 반복 { Console.Write("\t\t\t\t\t\t\tNickname : "); this.nickname[i] = Console.ReadLine(); if (this.nickname[i].Length > 8) // 닉네임 길이가 8자가 넘어간다면 { this.nickname[i] = this.nickname[i].Substring(0, 8); // 닉네임이 너무 길면 문자열을 자름 Console.WriteLine("\n\t\t\t\t\t\t\t닉네임이 너무 길어 자동으로 잘립니다."); } if (this.nickname[i].Length == 0) // 공백 문자가 입력되면 다시 입력 받음 { Console.WriteLine("\n\t\t\t\t\t\t\t공백 문자가 포함될 수 없습니다."); continue; } else { for (int j = 0; j < this.nickname[i].Length; j++) // 공백 문자가 입력되면 임의로 닉네임을 생성 { if (this.nickname[i][j] == '\n' || this.nickname[i][j] == '\t' || this.nickname[i][j] == ' ') // 공백 문자가 포함된다면 { Console.WriteLine("\n\t\t\t\t\t\t\t공백 문자가 포함될 수 없습니다."); break; } if (j + 1 == this.nickname[i].Length) // 공백 문자 없음 확인 { repeat = false; } } } if (scores.IsThere(this.nickname[i])) { Console.WriteLine("\n\t\t\t\t\t\t\t해당 닉네임이 존재합니다. 다시 입력해주세요."); repeat = true; continue; } if (i == 1 && this.nickname[1].Equals(this.nickname[0])) { Console.WriteLine("\n\t\t\t\t\t\t\t플레이어의 이름이 중복됩니다. 다시 입력해주세요."); repeat = true; continue; } } scores.Push(nickname[i]); } else { while (true) { Console.WriteLine("\n\t\t\t\t\t\t\t불러올 플레이어 명을 입력하세요"); Console.Write("\t\t\t\t\t\t\tNickname : "); this.nickname[i] = Console.ReadLine(); if (i == 1 && this.nickname[1].Equals(this.nickname[0])) { Console.WriteLine("\n\t\t\t\t\t\t\t플레이어의 이름이 중복됩니다. 다시 입력해주세요."); } else { break; } } if (!scores.IsThere(this.nickname[i])) // 닉네임이 존재하는지 검사한다 { Console.WriteLine("\n\t\t\t\t\t\t\t닉네임 검색 결과 존재하지 않으므로 새로 생성합니다."); scores.Push(this.nickname[i]); // 새로운 닉네임을 등록한다 } } Thread.Sleep(400); if (i == 0) { Console.Clear(); } } }
public UserPlay(ScoreList scores) { int choice; mode = 0; // 사용자 모드로 설정 map = new int[9] { -1, -1, -1, -1, -1, -1, -1, -1, -1 }; ChoicePlayer(scores); DecideTurn(); while (true) { Console.Clear(); PrintGameScreen(); while (true) { // 현재 입력된 키를 읽고 맞는지 체크한다. char _input = Console.ReadKey().KeyChar; if (_input < '1' || _input > '9') { Console.Clear(); Console.WriteLine("\n\t\t\tAlert : 1 ~ 9번 중 선택하세요"); PrintGameScreen(); continue; } else { choice = int.Parse(_input + ""); if (map[choice - 1] != -1) // 이미 놓여진 자리라면 { continue; } map[choice - 1] = turn; if (turn == 0) { turn = 1; } else { turn = 0; } break; } } win = CheckGame(); if (win != -1) { Console.Clear(); ConsoleUI.GotoLine(4); ConsoleUI.DynamicPrint('#'); Console.WriteLine(" " + nickname[win] + "가 이겼습니다."); scores.Update(nickname[win], true); if (win == 0) { scores.Update(nickname[1], false); } else { scores.Update(nickname[0], false); } break; } else { int iter; for (iter = 0; iter < map.Length; iter++) { if (map[iter] == -1) { break; } } if (iter == map.Length) { Console.Clear(); ConsoleUI.GotoLine(4); ConsoleUI.DynamicPrint('#'); Console.WriteLine(" 무승부입니다."); for (int k = 0; k < 2; k++) // 무승부이므로 둘 다 승이 아님 { scores.Update(nickname[k], false); } break; } } } }
override public void ChoicePlayer(ScoreList scores) // 플레이어를 생성하거나 기존의 닉네임을 선택한다 { int choice; while (true) { ConsoleUI.GotoLine(3); Console.WriteLine("\t\t\t\t\t\t\t=============================="); Console.WriteLine("\t\t\t\t\t\t\t 1. 새로운 player 생성\n"); Console.WriteLine("\t\t\t\t\t\t\t 2. 기존 player 이어하기"); Console.WriteLine("\t\t\t\t\t\t\t=============================="); Console.Write("\t\t\t\t\t\t\tInput > "); // 현재 입력된 키를 읽고 맞는지 체크한다. char _input = Console.ReadKey().KeyChar; if (_input < '1' || _input > '2') { Console.Clear(); Console.WriteLine("\n\t\t\tAlert : 1 ~ 2번 중 선택하세요"); continue; } else { choice = int.Parse(_input + ""); Console.WriteLine(); break; } } if (choice == 1) // 플레이어를 새로 생성한다. { bool repeat = true; Console.WriteLine("\n\t\t\t\t\t\t\t<새 플레이어 명을 정해주세요.>"); while (repeat) // 공백 문자가 포함되지 않은 닉네임이 입력될 때까지 반복 { Console.Write("\t\t\t\t\t\t\tNickname : "); this.nickname[0] = Console.ReadLine(); if (this.nickname[0].Length > 8) { this.nickname[0] = this.nickname[0].Substring(0, 8); // 닉네임이 너무 길면 문자열을 자름 Console.WriteLine("\n\t\t\t\t\t\t\t닉네임이 너무 길어 자동으로 잘립니다."); } if (this.nickname[0].Length == 0) // 공백 문자가 입력되면 임의로 닉네임을 생성 { Console.WriteLine("\n\t\t\t\t\t\t\t공백 문자가 포함될 수 없습니다."); continue; } else { for (int i = 0; i < this.nickname[0].Length; i++) // 공백 문자가 입력되면 임의로 닉네임을 생성 { if (this.nickname[0][i] == '\n' || this.nickname[0][i] == '\t' || this.nickname[0][i] == ' ') { Console.WriteLine("\n\t\t\t\t\t\t\t공백 문자가 포함될 수 없습니다."); break; } if (i + 1 == this.nickname[0].Length) { repeat = false; } } } } if (scores.IsThere(this.nickname[0])) // 현재 입력된 닉네임이 존재하는지 확인한다. { Console.WriteLine("\n\t\t\t\t\t\t\t해당 닉네임이 존재하여 이어서 시작합니다."); } else { scores.Push(this.nickname[0]); // 닉네임 추가 Console.WriteLine("\n\t\t\t\t\t\t\t\t\t\t플레이어 생성!"); } } else { Console.WriteLine("\n\t\t\t\t\t\t\t불러올 플레이어 명을 입력하세요"); Console.Write("\t\t\t\t\t\t\tNickname : "); this.nickname[0] = Console.ReadLine(); if (!scores.IsThere(this.nickname[0])) // 불러올 닉네임이 있는지 확인한다. { Console.WriteLine("\n\t\t\t\t\t\t\t닉네임 검색 결과 존재하지 않으므로 새로 생성합니다."); scores.Push(this.nickname[0]); // 닉네임을 추가한다. } } }
public int NormalGame() // 보통 모드 { int choice; Random rand = new Random(); DecideTurn(); // 사용자와 컴퓨터 턴을 결정한다. while (true) { PrintGameScreen(); // 게임 화면 출력 // 컴퓨터가 아직 놓이지 않은 자리에 놓는다 if (turn == 1) { // 컴퓨터 차례이면 while (true) { choice = PositionDecision(); // 컴퓨터가 위치를 찍는다 if (map[choice - 1] == -1) { break; } } map[choice - 1] = 1; turn = 0; } else { // 사용자 차례이면 while (true) { // 현재 입력된 키를 읽고 맞는지 체크한다. char _input = Console.ReadKey().KeyChar; if (_input < '1' || _input > '9') { Console.Clear(); Console.WriteLine("\n\t\t\tAlert : 1 ~ 9번 중 선택하세요"); PrintGameScreen(); continue; } else { choice = int.Parse(_input + ""); if (map[choice - 1] != -1) { continue; } map[choice - 1] = 0; Console.WriteLine(); break; } } turn = 1; } Console.Clear(); win = CheckGame(); if (win != -1) { ConsoleUI.GotoLine(4); ConsoleUI.DynamicPrint('#'); if (win == 1) { Console.WriteLine(" 컴퓨터가 이겼습니다."); } else { Console.WriteLine(" {0}가 이겼습니다.", nickname[0]); } break; } else { int iter; for (iter = 0; iter < map.Length; iter++) // 무승부 여부를 판단한다 { if (map[iter] == -1) { break; } } if (iter == map.Length) { ConsoleUI.GotoLine(4); ConsoleUI.DynamicPrint('#'); Console.WriteLine(" 무승부입니다."); return(0); } } } return(win); }