Почему python 2.7 просто так останавливается?
Всем привет. Я собираюсь написать дурака (карточная игра) на python. Но у меня возникла ошибка. Программа просто останавливается, когда бот должен взять карты, которые не смог отбить. Программа просто пишет, то что не должна и перестаёт работать. Что делать? Заранее спасибо Код:
from cards import Card
import random
#ВСЕ ПЕРЕМЕННЫЕ
#СПИСКИ
koloda = []
good_cards = []
myList = []
botList = []
players = [myList, botList]
desk = []
#Управление игрой
job = 0
the_ability = False
turn = True
game = True
#Козырь
trump = random.randint(1, 4)
if trump == 1:
trumps = "Diamonds"
elif trump ==2:
trumps = "Hearts"
elif trump == 3:
trumps = "Spades"
else:
trumps = "Clubs"
#СОЗДАНИЕ КОЛОДЫ
for suit_id in range(1,5):
for rank_id in range(6, 15):
new_card = Card(suit_id, rank_id, rank_id)
if suit_id == trump:
new_card.value = new_card.value + 50
koloda.append(new_card)
#РАЗДАЧА КАРТ
for i in players:
for k in range(0,6):
a = random.choice(koloda)
i.append(a)
koloda.remove(a)
while game:
#Добираем карты
if job == 4:
while job == 4:
if len(myList) != 6 or len(botList) != 6:
if len(koloda) > 0:
for i in players:
if len(i) < 6:
a = random.choice(koloda)
i.append(a)
koloda.remove(a)
else:
if len(myList) > 0 and len(botList) > 0:
job = 0
else:
game = False
else:
job = 0
#ВЫВОД ДАННЫХ НА ЭКРАН
for i in range(0, 5):
print" "
print "Козырь:", trumps
print "Карт в колоде:", len(koloda)
print "Карт у противника:", len(botList)
if len(desk) > 0:
last_card = desk[len(desk) - 1]
print"Доска:"
for i in desk:
print i
if desk.index(i) + 1 % 2 == 0:
print " "
print " "
print"Моя колода:"
for i in players:
for q in i:
print i.index(q) + 1, q
print" "
#Наш ход
if turn:
#Бросаем карту
if job == 0:
num_card = (input("Введите номер карты: ")) - 1
if num_card < len(myList):
desk.append(myList[num_card])
del myList[num_card]
turn = False
job = 1
else:
print" "
print"у тебя нету такой карты"
print " "
#Отбиваем карту
elif job == 1:
answer = input("Введите 1 если хотите побить карту или 0 если если хотите взять карты")
if answer == 1:
num_card = (input("Введите номер карты: ")) - 1
if num_card < len(myList):
my_card = myList[num_card]
#Подбрасываем карту или говорим "Бито"
elif job == 2:
if (len(desk) < 12) and len(botList) > 0:
answer = input("Введите 1 если хотите подбросить или 0 если ваши карты биты: ")
if answer == 1:
num_card = (input("Введите номер карты: ")) - 1
if num_card < len(myList):
my_card = myList[num_card]
for i in desk:
if i.rank_id == my_card.rank_id:
the_ability = True
if the_ability:
desk.append(my_card)
myList.remove(my_card)
job = 1
turn = False
the_ability = False
else:
print"Ты не можешь подкинуть эту карту"
else:
print"Такой карты нет в твоей колоде"
elif answer == 0:
desk = []
turn = False
job = 4
else:
print'Я тебя не понял.'
else:
print "Доска переполнена"
turn = False
job = 4
#Подбрасываем карту или говорим "Пас"
elif job == 3:
answer = input("Введите 1 если хотите подбросить или 0 если блольше не хотите подкидывать карту: ")
#Ошибка здесь
if answer == 0:
for i in desk:
botList.append(i)
desk.remove(i)
turn = False
job = 4
if answer == 1:
num_card = (input("Введите номер карты: ")) - 1
if num_card <= len(myList):
my_card = myList[num_card]
for i in desk:
if i.rank_id == my_card.rank_id:
the_ability = True
if the_ability:
desk.append(my_card)
myList.remove(my_card)
else:
print"Ты не можешь подкинуть эту карту"
else:
print"Такой карты нет в твоей колоде"
else:
print'Я тебя не понял.'
#Ход противника
if not turn:
#Отбиваем карту
if job == 0:
best_card = botList[0]
for i in botList:
if best_card.value > i.value:
best_card = i
desk.append(best_card)
botList.remove(best_card)
turn = True
job = 1
elif job == 1:
last_card = desk[len(desk) - 1]
for i in botList:
if (i.value > last_card.value and i.suit_id == last_card.suit_id) or (i.value > 50 and i.value > last_card.value):
good_cards.append(i)
botList.remove(i)
if len(good_cards) > 0:
best_card = good_cards[0]
for i in good_cards:
if best_card.value > i.value:
best_card = i
desk.append(best_card)
good_cards.remove(best_card)
for i in good_cards:
botList.append(i)
good_cards.remove(i)
job = 2
turn = True
else:
job = 3
turn = True