Я делаю карточную игру, когда она добирается до конца, я хочу, чтобы люди могли играть больше раундов, но когда они повторяются, они должны снова пройти через переменные .. сброс счет. Я ищу способ исправить это без целого нового блока усложняющего кода, я надеюсь, что мне просто не хватает очень легкого решения.Функция вызова без переустановки переменных
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Imports
import time
def play_game():
# Variables
acard = int()
bcard = int()
apoints = int()
bpoints = int()
# Repeat
repeat = True
# Hand out cards
print 'Cards have been served'
input('\nPress Enter to Reveal')
# Cards Turn
time.sleep(0.5)
t = time.time()
acard = int(str(t - int(t))[2:]) % 13
print '\nYour card value is ' + str(acard)
time.sleep(0.1)
t = time.time()
bcard = int(str(t - int(t))[2:]) % 13
# Number Check & Point Assign
time.sleep(2)
if acard > 5:
apoints += 1
print '\nYour points have increased by one, your total is now ' \
+ str(apoints)
if acard < 5:
apoints -= 1
print '\nYour points have decreased by one, your total is now ' \
+ str(apoints)
if bcard > 5:
bpoints += 1
print '\nYour opponent got ' + str(bcard) \
+ ', their points have increased by one,\ntheir total is now ' \
+ str(bpoints)
if bcard < 5:
bpoints -= 1
print '\nYour opponent got ' + str(bcard) \
+ ', their points have decreased by one,\ntheir total is now ' \
+ str(bpoints)
# Card Reset
bcard = 0
acard = 0
# Shuffle
input('\nPress enter to shuffle deck')
print '\nCards being shuffled'
time.sleep(1)
print '.'
time.sleep(1)
print '.'
time.sleep(1)
print '.'
print 'Cards have been shuffled'
global enda
global endb
enda = apoints
endb = bpoints
# Loop
time.sleep(1)
answer = 'y'
while answer.lower() == 'y':
play_game()
answer = input('\nDo you wish to play again? (Y/N)')
# Scores
if enda > endb:
print '\nYou Win!'
print '\nScores'
print 'You: ' + str(enda) + ' Opponent: ' + str(endb)
if endb > enda:
print '\nYou Lost!'
print '\nScores'
print 'You: ' + str(enda) + ' Opponent: ' + str(endb)
Python не требует, чтобы 'объявить' переменные; 'acard = int()' точно так же, как 'acard = 0', но на самом деле линия избыточна. –
Вместо того, чтобы использовать цифры со времени для ваших случайных значений, я предлагаю использовать «случайный» модуль. Это будет гораздо более случайным! – Blckknght
Для этого я бы использовал класс и задал значения __init__ как ваши переменные (self.acard, self.bcard и т. Д.) И просто создавал новый экземпляр класса после запуска новой игры. @MartijnPieters вам может не понадобиться объявлять переменные в python, но если вы хотите перебирать несколько функций с одинаковыми переменными, вам нужно как-то их хранить. – asdf