Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. ## 게임을 시작할 때 몇명이 플레이어의 수를 결정합니다.
  2. # 3. x2카드 추가 : [X]
  3. ## x2 카드는 다음 차례의 플레이어(혹은 컴퓨터)에게 두장의 카드를 내게 합니다.
  4. # 4. reverse카드 추가 : [X]
  5. ## reverse 카드는 게임의 순서를 역순으로 바꿉니다.
  6. # 5. 컴퓨터 추가 : [X]
  7. # 6. sum이 보이지 않게 하기 : [X]
  8. ## 여럿이서게임을 할 때 (자동으로 게임을 하는)컴퓨터를 추가합니다.
  9. ## 컴퓨터가 가진 카드는 보이지 않아야 하며, 항상 "게임에 패배하지 않는" 카드를 제출해야 합니다.
  10. ## (단, 가진 카드 중 어떤 카드를 내더라도 패배할 경우는 제외)
  11. ## 위 조건 이외에 추가기능은 (기존의 규칙을 바꾸지 않는 한도 내에서) 자유롭게 변경이 가능합니다.
  12. ## 또한 아래 카드의 구조(cards) 역시 마음대로 바꿔도 되지만 게임의 기능 자체는 유지해야 합니다.
  13.  
  14. import random
  15.  
  16. cards = (
  17. 0,0,0,0, # 0 카드 4장
  18. 76, # 76 카드 1장
  19. -10,-10,-10,-10, # -10 카드 4장
  20. 11,22,33,44,55,66, # 11,22,33,44,55,66 카드 각 1장
  21. 2,2,2, # 2 카드 3장
  22. 3,3,3, # 3 카드 3장
  23. 4,4,4, # 4 카드 3장
  24. 5,5,5, # 5 카드 3장
  25. 6,6,6, # 6 카드 3장
  26. 7,7,7, # 7 카드 3장
  27. 8,8,8, # 8 카드 3장
  28. 9,9,9, # 9 카드 3장
  29. 10,10,10,10,10,10,10,10, # 10 카드 8장
  30. # "2x","2x","2x","2x",
  31. # "rev","rev","rev","rev","rev",
  32. )
  33.  
  34. def shuffle(cards) :
  35. random.shuffle(cards)
  36. return cards
  37.  
  38. def draws(n,cards) :
  39. result = []
  40. while n > 0 :
  41. result.append(cards.pop())
  42. n -= 1
  43. return result
  44.  
  45. def print_card(card) :
  46. if card == -10 :
  47. print("|-10|", end=" ")
  48. elif card < 10 :
  49. print("| "+str(card)+"| ", end="")
  50. else :
  51. print("| "+str(card)+"| ", end="")
  52.  
  53. def print_hand(cards) :
  54. print(" 1 2 3 4 5")
  55. print("/---\\ /---\\ /---\\ /---\\ /---\\ ")
  56. for card in cards :
  57. print_card(card)
  58. print("\n\\---/ \\---/ \\---/ \\---/ \\---/ ")
  59.  
  60. def print_board(x) :
  61. print(" --------")
  62. if x >= 10 :
  63. print(" "+str(x))
  64. else :
  65. print(" "+str(x))
  66. print(" --------")
  67.  
  68. num_of_players = 4
  69.  
  70. def pick(n, hand, deck) :
  71. a_card = hand[n-1]
  72. hand[n-1] = draws(1, deck)[0]
  73. return a_card
  74.  
  75. def submit(card, sum) :
  76. return sum + card
  77.  
  78. on = True
  79. while on :
  80. print("shuffle cards...")
  81. deck = shuffle(list(cards))
  82. hands = []
  83. for i in range(num_of_players) :
  84. hand = draws(5, deck)
  85. hands.append(hand)
  86. if deck == 0 :
  87. random.shuffle(list(a_card))
  88.  
  89. # sum : 각 플레이어(혹은 컴퓨터)가 제출한 카드의 합을 누적하는 변수.
  90. # 이 값이 11,22,33,44,55,66 혹은 77 이상이 되도록 카드를 제출한 사람은 패배합니다.
  91. sum = 0
  92.  
  93. game = True
  94. while game :
  95. for i in range(num_of_players) :
  96.  
  97. print_board(sum)
  98. print("-------------------------------")
  99. print("[player "+str(i+1)+"]'s hand...")
  100. print("-------------------------------")
  101. print_hand(hands[i])
  102. print("-------------------------------")
  103.  
  104. n = int(input("choose a card to submit (1-5) : "))
  105. a_card = pick(n, hands[i], deck)
  106. sum = submit(a_card, sum)
  107. if sum >= 77 or sum == 11 or sum == 22 or sum == 33 or sum == 44 or sum == 55 or sum == 66 :
  108. print ("lose")
  109. break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement