나는이 같은 질문을하기 위해 눈살을 찌푸린다고 알고 있지만 파이썬 스크립트에서 모든 버그를 해결할 수는없는 것 같습니다. 그것은 전쟁 게임 (카드 게임)을 시뮬레이션합니다. 완벽하게 작동해야한다고 생각합니다. 나보다 파이썬에 대해 더 많이 알고있는 누군가가 내 스크립트를보고 기본적으로 그것을 고치려고하면 정말 고맙겠습니다.내 카드 게임 시뮬레이션 스크립트의 버그
import random
cards = ['ace', 'ace', 'ace', 'ace', '1', '1', '1', '1', '2', '2', '2', '2', '3', '3', '3', '3', '4', '4', '4', '4', '5', '5', '5', '5', '6', '6', '6', '6', '7', '7', '7', '7', '8', '8', '8', '8', '9', '9', '9', '9', '10', '10', '10', '10', 'jack', 'jack', 'jack', 'jack', 'queen', 'queen', 'queen', 'queen', 'king', 'king', 'king', 'king']
order = ['ace', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'jack', 'queen', 'king']
warcardvalue0 = 0
warcardvalue1 = 0
print "shuffling cards"
cards = random.shuffle(cards,random.random)
print "lets play"
player0 = [cards[i] for i in range(len(cards)) if i % 2 == 1]
player1 = [cards[i] for i in range(len(cards)) if i % 2 == 0]
while (len(player0) > 0 or len(player1) > 0):
nextcard0 = player0[0]
nextcard1 = player1[0]
cardplayed0 = order.index(nextcard0)
cardplayed1 = order.index(nextcard1)
if cardplayed0 > cardplayed1:
player0.append(nextcard0)
player0.append(nextcard1)
player0.remove(nextcard0)
player1.remove(nextcard1)
elif cardplayed0 < cardplayed1:
player1.append(nextcard1)
player1.append(nextcard0)
player1.remove(nextcard1)
player0.remove(nextcard0)
elif cardplayed0 == cardplayed1:
while warcardvalue0 == warcardvalue1:
if len(player0) >= 4:
warcard0 = 4
elif len(player0) < 4:
warcard0 = len(player0)
if len(player1) >= 4:
warcard1 = 4
elif len(player1) < 4:
warcard1 = len(player1)
warcardvalue0 = order.index(warcard0)
warcardvalue1 = order.index(warcard1)
if warcardvalue0 > warcardvalue1:
player0.append(player0[range(warcard0 + 1)])
player0.append(player1[range(warcard1 + 1)])
player0.remove(player0[range(warcard0 + 1)])
player1.remove(player1[range(warcard1 + 1)])
elif warcardvalue0 < warcardvalue1:
player1.append(player1[range(warcard1 + 1)])
player1.append(player0[range(warcard0 + 1)])
player1.remove(player1[range(warcard1 + 1)])
player0.remove(player0[range(warcard0 + 1)])
else:
print "another war!"
if len(player1) == 0:
print "player1 won!"
elif len(player0) == 0:
print "player0 won!"
특히 제대로 작동하지 않는 코드는 무엇입니까? –
코드가 매번 다르게 실행되기 때문에 "셔플 링"카드에 많은 오류가 있습니다. 기본적으로 많은 버그들 중 많은 것들이 내가 –
@ A.Collins에 대해 모른다 : 당신이 알고있는 것으로 시작하는 것은 어떨까요? 우리 뼈를 던져. 다시 테스트 할 수 있도록 셔플 코드를 주석으로 처리하십시오. – mhawke