반응형
디스코드 봇에 간단하게 가위바위보 기능을 추가해 보았습니다.
입출력 형식은 아래와 같습니다.
입력 및 출력
코드 및 설명
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
반응형
'프로젝트들[Projects] > 디스코드봇(Python)[DiscordBot]' 카테고리의 다른 글
디스코드 봇 공부 시간 측정 기능 추가(스톱워치)[Python - 파이썬] (1) | 2022.05.14 |
---|---|
디스코드 봇 실행 및 간단한 명령어추가(Python-파이썬) (3) | 2022.05.08 |
디스코드 봇 만들기 (0) | 2022.05.08 |
최근댓글