본문 바로가기
파이썬

파이썬으로 주사위 게임(Dice 10000, Farkle) 만들기 (1)

by 수퍼스타 2021. 1. 17.

최근에 즐겨하는 게임이 있다. 이름은 '킹덤컴: 딜리버런스(Kingdom Come: Deliverance)'로, 2018년 체코의 게임사 '워호스 스튜디오(Warhorse Studios)'에서 개발한 게임이다. 스팀에서 최대 66%까지 할인을 진행한 기록이 있다.

 

자료: Warhorse Studios

 

이 게임은 1403년의 보헤미아 왕국, 신성로마 제국 등의 실제 사실을 배경으로 하는데, 주인공 헨리는 게임을 진행하면서 저장을 하거나, 퀘스트를 받기 위해 반드시 들려야 하는 여관(선술집)에서 주사위 게임을 하고 있는 사람들을 만날 수 있다.

 

검색해보니 이 주사위 게임의 이름은 'Dice 10000'이라고 한다.

(https://en.wikipedia.org/wiki/Dice_10000)

 

실제 그 시대에 즐겼던 게임인가에 대해서는 모르겠지만... 친구와 파이썬 공부를 위해서 직접 만들어보기로 했다.

 

1. 룰 찾기

위의 위키피디아 페이지에서도 룰을 확인할 수 있었는데, 게임에서 적용되는 룰을 한글로 설명해놓은 이미지를 찾아서 이를 참고하기로 했다.

 

자료: 풍월량 공식 팬카페, 트게더

 

2. 기본 프레임 만들기

기본적으로 주사위 게임을 만들기 위해서는 random 모듈이 필요할 것이다. 그리고 게임에서는 주사위의 종류가 다양하다는 점도 구현하고 싶었다. 룰 적용은 나중에 하기로 하고 기본적으로 주사위의 종류를 입력하고, 주사위를 던져 주사위 눈을 얻기까지만 만들어보았다.

 

import random

# 주사위 확률 정의
def dice_throw(name):
    if name == "basic": # 기본 주사위: 1~6까지 동일한 확률로 반환
        spot = random.randint(1, 6)
    elif name == "lucky": # 행운의 주사위: 1과 5만 반환
        possible = [1, 5]
        spot = random.choice(possible)
    return spot
        
# 주사위 클래스 정의
class Dice:
    def __init__(self, name):
        self.name = name

    def get_spot(self):
        spot = dice_throw(self.name)
        self.spot = spot

    def show_detail(self):
        print(self.name, self.spot)

# 주사위 6개 종류 입력
D1 = Dice("basic")
D2 = Dice("basic")
D3 = Dice("lucky")
D4 = Dice("lucky")
D5 = Dice("basic")
D6 = Dice("basic")

# 주사위 6개 세팅
dices = []
dices.append(D1)
dices.append(D2)
dices.append(D3)
dices.append(D4)
dices.append(D5)
dices.append(D6)

# 주사위 던지기
running = True
while running:
    for Dice in dices:
        Dice.get_spot()
        Dice.show_detail()
    break

 

다음 과제로는 던져서 나온 주사위 눈에서 특정한 주사위만 선택하고, 룰을 적용하여 점수를 얻을 수 있도록 만들어보겠다.

댓글