31_game

seonghyeon·2021년 12월 21일
0

과제로 베스킨라빈스 31 게임 과제를 받았다

하나는 컴퓨터와 나 랜덤으로 순서받고 입력하여 주고받는 게임이고

아래에 적힌 코드는 31게임 필승법으로 플레이어가 시작하는 단하나의 경우를 제외한 모든 경우를

컴퓨터가 이기는 코드 (물론 오류가 있을 수 있)ㅋㅋ

미천한 실력으로 여기저기 찾아보고 끄적였는데 진짜 복잡한거같다

나중엔 깔끔한 코드를 작성할수있길 바람


def baskin():
    import random
    # 컴퓨터가 먼저 숫자를 말할지, 플레이어가 먼저 숫자를 말할지는 랜덤으로 정한다.
    # 0 or 1을 반환
    # 31이 되면 스탑
    sequence = random.randint(0,1) # player or computer random sequence
    number = [] # add number
    number_31 = 0 # current min number
    win_num = [2, 6, 10, 14, 18, 22, 26, 30] # victory number in 31game
    while True:
        
        if sequence == 0:
            player = int(input('1~3중 입력하세요:'))
            player_num = input('수를 입력하세요(ex)1,2,3): ').split(',')
            if player > 3 or player < 0 :
                print('다시 입력하세요')
                continue
            elif len(player_num) != player:
                print('개수가 맞지않습니다')
                continue
            else :
                for i in range(player):
                    number_31 += 1
                    number.append(int(player_num[i]))
                    if number_31 > 31:
                        break
                    print(f'player: {int(player_num[i])}')
            sequence += 1 # next computer

        elif sequence == 1:
            
            if number == []:
                com = 2
            else:    
                for i , n in enumerate(win_num): # victory algorithm 
                    if number_31 < n <= number_31 + 3:
                        com = n - number_31
                        break
                    else:
                        com = random.randint(1,3)
                        
            
            for i in range(com):

                number_31 += 1
                number.append(number_31)
                if number_31 > 31:
                    break
                print(f'computer: {number_31}')
            
            sequence -= 1 # next player
            
        if number_31 >= 31:
            break

    if sequence == 0:
        print('player WIN')
    else:
        print('Computer WIN')
    print(number)



baskin()

0개의 댓글