반응형

디스코드 봇에 간단하게 가위바위보 기능을 추가해 보았습니다.

입출력 형식은 아래와 같습니다.

입력 및 출력

 

코드 및 설명

global rockPaperScissors
rockPaperScissors = ["가위","바위","보"]

@bot.command()
async def 가위바위보(ctx,*,player):

    botThrow = rockPaperScissors[random.randrange(0,len(rockPaperScissors))]
    result = resultOfRockPaperScissors(player,botThrow)
    if result == "에러":
        content = "잘못된 형식입니다. {}님 가위, 바위, 보 중 하나를 내주세요!".format(ctx.author.mention)
    else : content = "제가 낸 것은 {}, {}님이 낸 것은 {}, {}.".format(botThrow, ctx.author.mention, player, result)
    await ctx.send(content)
    
    def resultOfRockPaperScissors(player, botThrow) :
    win = "제가 이겼습니다"
    lose = "제가 졌습니다"
    #비겼을 때
    if player == botThrow :
        result = "비겼습니다"

    # 플레이어가 가위를 냈을 떼
    if player == "가위" :
        if botThrow == "바위":
            result = win
        if botThrow == "보":
            result = lose

    # 플레이어가 바위를 냈을 떼
    elif player == "바위" :
        if botThrow == "가위" :
            result = lose
        if botThrow == "보":
            result = win

    # 플레이어가 보를 냈을 떼
    elif player == "보" :
        if botThrow == "가위" :
            result = win
        if botThrow == "바위":
            result = lose
    else :
        result = "에러"
    return result

가위 바위 보 명령어는 위의 코드로 구성되어 있습니다.

명령어는 $가위바위보 가위 와 같은 방식으로 입력 받고 player에는 플레이어가 입력한 값을, botThrow에는 가위, 바위, 보 중 하나를 랜덤으로 저장하도록 하였습니다. // rockPaperScissors = ["가위","바위","보"]에서 랜덤한 값을 가져옴.

그 후 resultOfRockPaperScissors() 함수를 호출하여 플레이어와 봇의 가위바위보 값을 각각 넣고 결과를 반환 받습니다.

결과를 반환 받은 후 foramt()을 사용하여 형식에 맞도록 출력하도록 구현하였습니다.

하드코딩 버전 코드

global rockPaperScissors
rockPaperScissors = ["가위","바위","보"]

@bot.command()
async def 가위바위보(ctx,*,player):
    botThrow = rockPaperScissors[random.randrange(0,len(rockPaperScissors))]
    result = resultOfRockPaperScissors(player,botThrow).format(ctx.author.mention)
    await ctx.send(result)

def resultOfRockPaperScissors(player, botThrow) :

    # 플레이거가 가위를 냈을 떼
    if player == "가위" :

        if botThrow == "가위" :
            result = "제가 낸 것은 가위, {}님이 낸 것도 가위, 비겼습니다."
        if botThrow == "바위":
            result = "제가 낸 것은 바위, {}님이 낸 것은 가위, 제가 이겼습니다."
        if botThrow == "보":
            result = "제가 낸 것은 보, {}님이 낸 것은 가위, 제가 졌습니다."

    # 플레이거가 바위를 냈을 떼
    elif player == "바위" :

        if botThrow == "가위" :
            result = "제가 낸 것은 가위, {}님이 낸 것은 바위, 제가 졌습니다."
        if botThrow == "바위":
            result = "제가 낸 것은 바위, {}님이 낸 것도 바위, 비겼습니다."
        if botThrow == "보":
            result = "제가 낸 것은 보, {}님이 낸 것은 바위, 제가 이겼습니다."

    # 플레이거가 보를 냈을 떼
    elif player == "보" :

        if botThrow == "가위" :
            result = "제가 낸 것은 가위, {}님이 낸 것은 보, 제가 이겼습니다."
        if botThrow == "바위":
            result = "제가 낸 것은 바위, {}님이 낸 것은 보, 제가 졌습니다."
        if botThrow == "보":
            result = "제가 낸 것은 보, {}님이 낸 것도 보, 비겼습니다."

    else :
        result = "잘못된 형식입니다. {}님 가위, 바위, 보 중 하나를 내주세요!"
    return result
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기