python-3.x - 将参数放在列表中并在定义中返回它们并带有索引
问题描述
我正在制作一个可以与 1 到 3 名玩家一起玩的游戏,在游戏开始之前,将询问用户有多少人在玩。我正在努力的部分是在屏幕上显示正确数量的玩家。我想出的想法如下。我创建了一个def
called 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]
]
因此,当用户输入 2number of players for example
时,程序将取出播放器的参数 for draw_text_2
fromplayer_display
并将它们放入其中,draw_text_2
并且由于它在 while 循环内,它将继续显示,因为在 for 循环完成后num_players_playing will
再次变为 2。不幸的是,这没有用,因为它给了我一个TypeError
and 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
解决方案
我假设您正在谈论的错误来自draw_text_2(i[x])
. 为防止错误,请确保按照引发的异常的建议更正代码,并且确保x
无论x
是整数还是切片。
至于游戏逻辑,我认为我在那里看到了一个糟糕的模式。你有draw_text_2
一种方法,对我来说,你有一种方法来处理玩家数量的每一种变化,这本质上是一种不好的做法。您希望draw_text
尽可能通用,我不确定该函数内部是什么,但我建议您应该将玩家数量作为参数传递给函数,并根据该数字在函数内部做出一些决定.
我也看到你在做num_players_playing = 2
,虽然我假设你想让玩家在游戏开始时选择玩家数量,并且有很多方法可以做到这一点。我不熟悉 PyGame,但命令行游戏的经典方法是询问用户的玩家数量,例如:
number_of_players = input("How many players?: ")
推荐阅读
- git - Dockerfile - “主机密钥验证失败...”错误
- r - 带有 2 个类别和原始计数的华夫饼图用神秘的第 3 类组成数据填充最后一列
- python - pytz 不更新时区更改的时间
- javascript - 在 d3.js 中加载 csv 时“data.forEach 不是函数”
- php - 使用 file_get_contents 时出错,返回 null
- binary-tree - 试图在 Leetcode 中理解这个二叉搜索树。号码排列看起来不对
- sql - 当相关表使用多对一关系时,有没有办法使用 Power BI 中相关表的内容过滤表的行?
- typescript - 可以推断参数类型的嵌套对象的键吗?
- java - 使用 chromedriver 查找包含文本 IMG、Java Selenium 的 Spans
- qt - QML 中的结构化常量