Skip to content

Instantly share code, notes, and snippets.

@hwahyang1
Created April 2, 2020 07:18
Show Gist options
  • Save hwahyang1/ba731279aa4baf80e200993bc023d475 to your computer and use it in GitHub Desktop.
Save hwahyang1/ba731279aa4baf80e200993bc023d475 to your computer and use it in GitHub Desktop.
# 별도의 모듈 설치가 필요 없습니다. 아래처럼 random 모듈만 불러 와 주시면 됩니다.
import random
# 구현하는 방법은 많은데, 일단 조금 보기 쉬운 방법으로 구문을 작성하겠습니다.
# 보통은 if message.content == "가위": if message.content == "바위": 같이 if를 다 따로 짜지만,
# 이번에는 입력한 명령어가 "가위", "바위", "보" 셋 중에 하나라면 반응하도록 if문을 작성 하겠습니다.
if message.content == "가위" or message.content == "바위" or message.content == "보":
# 그리고 나서, 다른 구문을 먼저 짜기 전에, 봇이 무엇을 낼지 정하겠습니다.
# 가위/바위/보 총 3가지 경우의 수가 있으니, 1부터 3까지 수 중에서 아무거나 뽑아서 bot_response 라는 변수에 담아보겠습니다.
bot_response = random.randint(1, 3)
# if 구문으로 경우의 수를 잡아줍시다.
# bot_response는 문자열이 아닌, 정수로 저장되기 때문에 if문으로 값을 비교 할 때 양옆에 따옴표나 str()을 안해주셔도 됩니다.
# 여담으로, 정수끼리는 <, >을 사용해서 대소비교도 가능합니다.
# 여기서부터는 흔히 말하는 '하드코딩'을 진행합니다.
# 경우의 수가 9개밖에 되지 않기 때문이기도 하고 마땅한 구문도 없어서 하드코딩으로 진행합니다
if bot_response == 1: # 봇이 가위를 낸 경우,
if message.content == "가위": # 가위 vs 가위이기 때문에 비겼습니다.
await message.channel.send("비겼습니다")
elif message.content == "바위": # 바위 vs 가위이기 때문에 유저가 이겼습니다.
# elif는 타 언어에서의 else if와 같은 역할을 합니다.
# 물론, if를 도배하셔도 되는데, 여기서는 elif 사용하겠습니다.
await message.channel.send("제가 졌습니다")
else: # 두개 다 아니면 보자기 vs 가위일겁니다.
await message.channel.send("제가 이겼습니다")
# 이 아래부터는 같은 내용의 반복이기 때문에 주석만 간단하게 달아놓겠습니다.
elif bot_response == 2: # 봇이 바위를 낸 경우,
if message.content == "가위": # 가위 vs 바위
await message.channel.send("제가 이겼습니다")
elif message.content == "바위": # 바위 vs 바위
await message.channel.send("비겼습니다")
else: # 보자기 vs 바위
await message.channel.send("제가 졌습니다")
else: # 가위도 바위도 아니면 보자기를 냈다고 볼 수 있습니다.
# 물론, 여기까지 elif 쓰시고 만약을 대비해서 세개도 아니고 엉뚱한 숫자를 선택했을 경우를 대비하셔도 되나,
# 왠만해선 그럴 일 없습니다.
if message.content == "가위": # 가위 vs 보자기
await message.channel.send("제가 졌습니다")
elif message.content == "바위": # 바위 vs 보자기
await message.channel.send("제가 이겼습니다")
else: # 보자기 vs 보자기
await message.channel.send("비겼습니다")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment