Я делаю игру, в которую могут играть от 1 до 3 игроков. Перед началом игры у пользователя спросят, сколько человек играет.Часть, с которой я борюсь - это отображение нужного количества игроков на экране.Я создал def
с именем draw_text_2
, который печатает статистику игроков на правильной позиции поверхности с размером и цветом текста и позициями x и y.После этого я поместил параметры для рисования текста каждого игрока в список.
player_1 = [100,0,0,0], player_2 = [100,0,0,0], player_3 = [100,0,0,0]
draw_text_2(surface, text, size, color, x, y):
Draw text to surface
surface - Pygame surface to draw to
text - string text to draw
size - font size
color - color of text
x - x position of text on surface
y - y position of text on surface
player_display = [
[win,'Player 1 '+'Health: ' + str(player_1[0])+' Damage: ' + str(player_1[1])+' Armour: '+str(player_1[2])+' postition: '+str(player_1[3]),10,(0,0,0),10,20]
[win,'Player 2 '+'Health: ' + str(player_2[0])+' Damage: ' + str(player_2[1])+' Armour: '+str(player_2[2])+' postition: '+str(player_2[3]),10,(0,0,0),10,120]
[win,'Player 3 '+'Health: ' + str(player_3[0])+' Damage: ' + str(player_3[1])+' Armour: '+str(player_3[2])+' postition: '+str(player_3[3]),10,(0,0,0),10,220]
]
Таким образом, когда пользователь вводит 2 number of players for example
, программа извлекает параметры игроков для draw_text_2
из player_display
и помещает их в draw_text_2
, и так какнаходится внутри цикла while, он будет отображаться, потому что после завершения цикла for num_players_playing will
снова станет 2.Это не сработало, к сожалению, потому что это дало мне TypeError
и list indices must be integers or slices, not tuple
.Вопрос в том, как я могу предотвратить эту ошибку, чтобы сделать этот метод, и есть ли другой способ, если TypeError
не может быть решена?
while True:
num_players_playing = 2
while num_players_playing > 0:
for i in player_display:
draw_text_2(i[x])
num_players_playing -= 1