import random


class GameNumber():
    # create game's numbers
    
    # create number set for game
    def createNumberSet(self, amount, gamesize):
        s = {}
        s = set()
        while len(s) < gamesize:
            # add set as gamesize
            s.add(random.randint(0, amount-1))

        print(s)
        return s
        
    # create game number list
    def createGameNumber(self, gameSet): 
        numbers = []
        for k in gameSet:
            numbers.append(k)
            print(k)
            
        return numbers


class CheckNumber():
    # check number whether it is right
    
    # compare number between a guess answer and a right answer
    def compareNumber(self, gameNumber, guessNumber):
        result = []
        strike = 0
        ball = 0
        
        for i in range(len(gameNumber)):
            print(guessNumber)
            if guessNumber[i] == gameNumber[i]:
                # check number of strke
                strike += 1
            elif guessNumber[i] in gameNumber:
                # check number of ball
                ball += 1

        # add results of strike and ball
        result.append(strike)
        result.append(ball)

        return result

    
class InputNumber():
    # user inputs numbers
    
    def getGameSize(self):
        amountNumber = []
        while True:  # check wrong input 
            temp = input('put a game size : ')
            try:
                if len(temp) > 1:
                    raise
                
                for i in temp:
                    if i not in '0123456789':
                        raise
            except:
                print('it is not number or too big, input  again')
            else:
                amountNumber.append(int(temp))
                break

        while True:   # check wrong input
            temp = input('put a max of number : ')
            try:
                if len(temp) > 1:
                    raise

                for i in temp:
                    if i not in '0123456789':
                        raise
            except:
                print('it is not number or too big, input again')
            else:
                amountNumber.append(int(temp))

                return amountNumber
            
    def getNumber(self, gameSize):
        userGuess = []
        for i in range(gameSize):
            while True:  # check wrong input
                print('put ', i+1, ' of numbers : ', end='')
                temp2 = input()
                try:
                    if len(temp2) > 1:
                        raise

                    for k in temp2:
                        if k not in '0123456789':
                            raise
                except:
                    print('it is not number or too big, input  again')
                else:
                    userGuess.append(int(temp2))
                    break

        return userGuess


class PrintResult():
    # print result

    def printResult(self, result):
        print(result[0], ' strike, ', result[1], ' ball')
