혼자만든 게임 코드인데 고쳐주실분 있나요.. 아무도 질문할 사람이 없어요..

조회수 579회
playertoken=20

computertoken=20

deck=[0,0,0]

comdeck=[0,0,0]

value=0

comvalue=0

mass=0

def gameover():
    print("게임이 종료되었습니다.")

def bating():
    print("배팅하시겠습니까?")
    answer=input()

    if (answer=="yes"):
        print("얼마나 배팅하시겠습니까" "(10개이하)")
        mass=input()

        mass=int(mass)

        playertoken-mass

        computertoken-mass
        if(mass>11|mass<0):

            mass=0
            print("값을 다시 설정해주세요")
            mass=input()

def winordefeat():

    if(computertoken==0):
        print("승리하였습니다!!")
        gameover()
    if(playertoken==0):
        print("패배하셨습니다...")
        gameover()

def who():
    first=deck[0]*deck[1]
    second=deck[1]*deck[2]
    third=deck[0]*deck[2]

    comfirst=comdeck[0]*deck[1]
    comfirst=int(comfirst)
    comsecond=comdeck[1]*comdeck[2]
    comsecond=int(comsecond)
    comthird=comdeck[0]*comdeck[2]
    comthird=int(comthird)
    if(comfirst>comsecond):
        if(comfirst>comthird):
            comvalue=comfirst
        if(comfirst<comsecond):
            comvalue=comsecond
    elif(comsecond>comfirst):
       comvalue=comsecond
       if(comsecond<comthird):
           comvalue=comthird
    else:
        comvalue=comthird


    if(value!=first|second|third):
        print("3개의 값에서 곱셈을 하십시오")
    if(value==first|second|third):
        if(value>comvalue):
            return playertoken+mass ,computertoken-mass


def 카드게임시작():
    print("게임 규칙은 3장의카드를 이용하여 곱셈으로 가장 큰수를 만듭니다")

    print("그 수의 합이 상대 카드의 합보다 크다고 생각할때 배팅을 할 수있습니다.")

    print("배팅은 게임이 시작되면 1개를 기본으로 하게됩니다")

    print("자신의 숫자 합이 낮다고 생각하면 기권으로 다음판을 할 수 있습니다.")

    print("상대의 덱중 1개의 숫자만 몇인지 볼 수있습니다")

    print("자신의 토큰 개수가 0이되면 패배 컴퓨터의 토큰을 0개로 만들면 승리입니다.") 

    publicdeck=[i for i in range(1,10)]
    deck.pop(publicdeck)*3
    comdeck.pop(publicdeck)*3
    for i in range(playertoken):
        playertoekn=-1
        computertoken=-1
        deck
        comdeck[:1]
        bating()
        who()
    winordefeat()

카드게임시작()
  • 질문내용이 없어요 김호원 2020.5.19 08:47

1 답변

  • 제가 소스를 제대로 읽은 건지 모르겠는데... 일단... "상대의 덱중 1개의 숫자만 몇인지 볼 수있"다는 약속이 안 지켜지고 있는 거 같습니다. 그걸 포함해서, 전체적으로, 사용자가 뭔가 선택(입력)을 하거나 뭔가를 확인하는 부분이 극히 적어서, 그런 점에서 조금 어리둥절 되네요.

    적어 주신 시나리오대로라면, 사용자의 토큰이 1개라도 있는 한은, 항상 다음 순서의 전개가 실행돼야 합니다.

    1. 컴퓨터에게 카드 3개, 나한테 카드 3개를 무작위로 준다.
    2. 내 카드 3개, 컴퓨터 카드 (무작위) 1개를 보여준다.
    3. 베팅할지 말지 결정한다. (그나저나 "내기걸다"는 영어로 bet이라고 합니다. bat은 몽둥이 또는 박쥐구요.)
    4. 베팅하지 않는다면, 1로 넘어간다.
    5. 베팅한다면, 토큰 몇 개를 베팅할지 결정한다.
    6. 내기 결과를 나한테 알려준다. (내 카드 3개, 곱셉 결과, 컴퓨터 카드 3개, 곱셈 결과)
    7. 그 결과에 따라서 베팅된 토큰을 처리한다.
    8. 컴퓨터의 남은 토큰과 나의 남은 토큰을 차례로 확인한다. 어느 쪽이든 토큰이 더 이상 없는 쪽이 있다면 그쪽의 패배로 끝낸다.
    9. 양쪽 다 토큰이 남아 있다면 1로 돌아간다.

    지금까지 작성하신 코드만 보자면 언제 메소드를 쓰고 언제 안 쓰는가 같은 감은 기본적으로 있으신 거 같으니 그것들 가지고 구현할 서비스 흐름만 다시 다잡으셔서 새로 다시 작성하시면 금방 끝날 듯합니다. (이런 경우에는 기존 코드를 고치기보다는 새로 짜는 게 더 낫더군요.)

    행운을 빕니다.


    PS. 그나저나 컴퓨터에게 카드 3개, 나한테 3개 무작위로 주는 방식이 맞나요? 아니면 맨 처음 시작할 때 1~10의 카드를 싹 주고 한판 할 때마다 3개씩 버리는 건가요? 코드를 보면 볼수록 룰이 헷갈리네요.

    • 그 상대에 덱중 1개의 덱만봐서 뭔가 베팅할 때 판단에 도움이 되라고 주는거였고 그 카드는 총 1~10의 카드구성 2세트중 3개씩 뽑아서 쓰고 없애버리는걸 목표로했습니다 답변해주셔서 감사해용 그러면 저 1번으로 돌아간다를 while을 써서 처리하는게 편할까요?? 뤼튀 2020.5.19 10:18
    • 저라면 다음판 진행 가능한지를 저장하는 변수(플래그 변수라고 부름)를 하나 만들어놓고 그거 가지고 판단할거 같네요. 빠찡꼬라면 또모를까 이건 분명 끝이있는 게임인데 무한루프는 이상하잖아요. 아무튼 전체적인 게임 룰부터 명확히 하시고 그걸 코드로 구현한다는 느낌으로 해보시길 권해 드립니다. 엽토군 2020.5.19 10:33

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)