프로그래밍/코드 조각
[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를 처음 배웠던 때의 생각이 스멀스멀 ^^
반응형