-
[python] 야구 게임프로그래밍/코드 조각 2015. 11. 15. 10:41반응형
#-*- coding: utf-8 -*- import random class text_baseball_game: maxround = int() nummax = int() numnumbers = int() nums = list() # maxround: 최대 게임의 라운드입니다. # nummax: 맞춰야 할 수의 최대값 입니다. # numnumbers 맞춰야 할 수의 개수입니다. def __init__(self, maxround: int = 10, nummax: int = 9, numnumbers: int = 3): if(nummax < numnumbers): raise ValueError("numnumbers too big") self.maxround = maxround self.nummax = nummax self.numnumbers = numnumbers def __game_init(self): # private func __...__ # n개의 카드를 섞습니다. temp = list() for num in range(0, self.nummax + 1): temp.append(num) random.shuffle(temp) # 섞인 카드에서 가장 앞의 numnumbers장을 가져옵니다. for idx in range(0, self.numnumbers): self.nums.append(temp[idx]) def _print_round_info(self, round: int): print("*ROUND: {0}".format(round)) def _print_round_result(self, numball: int, numstrike: int): print("{0}BALL {1}STRIKE!".format(numball, numstrike)) def _print_input_message(self): print("ENTER THE {0} NUMS({1}~{2}): ".format(self.numnumbers, 0, self.nummax), end = "") def _get_user_input(self): return str(input()) def _print_user_input_nums(self, inputnums: list): print("INPUT NUMS: {0}".format(inputnums)) def _print_game_result(self, iswin: bool): if iswin: print("YOU WIN!") else: print("YOU LOSE...") def run(self): self.__game_init() roundres = False for nowround in range(self.maxround): # 라운드를 출력합니다. self._print_round_info(nowround) # 입력 메세지를 출력합니다. self._print_input_message() # 유저 입력을 받습니다. userinputs = self._get_user_input() userinput_nums = list() # 입력된 문자열에서 문자 하나씩 검사하며, 숫자를 골라냅니다. for input_elem in userinputs: if str(input_elem).isdigit(): userinput_nums.append(int(input_elem)) if len(userinput_nums) == self.numnumbers: break # 골라진 숫자를 출력합니다. self._print_user_input_nums(userinput_nums) numstrikes = 0 # 스트라이크 수를 검사합니다. for num in self.nums: if 0 < userinput_nums.count(num): numstrikes += 1 self._print_round_result(self.numnumbers - numstrikes, numstrikes) # 모두 스트라이크 했다면 이겼다는 메세지를 출력하고 게임을 종료합니다. if numstrikes == self.numnumbers: roundres = True break self._print_game_result(roundres) game = text_baseball_game(12) game.run()
c를 처음 배웠던 때의 생각이 스멀스멀 ^^
반응형'프로그래밍 > 코드 조각' 카테고리의 다른 글
[c++] 멤버 함수 대리 호출(Invoke) (0) 2017.07.11 유니코드 범위 XML 파일 (0) 2016.10.05 Parse std::string with boost ptree (0) 2016.06.16 std::function으로 클래스의 멤버 함수 사용하는 방법 (0) 2016.06.02 asio::io_service + promise + future background worker (0) 2016.02.15