我通过pygame libraby用Python2.7制作自己的游戏。 这是一款1v1格斗游戏,玩家使用相同的键盘。
游戏在每秒重复60次的主循环中工作,每次循环执行时,它会计算很多东西,例如位置,问题是我有2个玩家,所以我必须写两次线
此处示例:
如果p1direction ==' right'和p1XS< p1Attributes [1]:p1XS + = p1Attributes [0]
和
如果p2direction =='对'和p2XS< p2Attributes [1]:p2XS + = p2Attributes [0]
参见差异p1和p2,它们分别是属于播放器1和播放器2的变量。
我只想找到一个解决方案,不要每次都为p2写相同的行。我正在考虑for功能,所以我甚至可以轻松添加玩家,但在这种情况下我不知道该怎么做......
有人能帮助我吗? :)请
答案 0 :(得分:2)
创建一个班级玩家。 然后将每个玩家的属性添加到课程中。 使用播放器1和2实例化您的课程。
class Player():
direction = "right"
etc.
def shoot(self):
if self.direction == "right"
shoot_right()
playerOne = Player()
playerTwo = Player()
direction = playerOne.direction
如果您还没有使用过类,我建议不要使用它们。继承可能变得非常讨厌......
希望有所帮助, Narusan
编辑: 如果你还没有在Python中使用过类,我建议先在那里使用,然后继续你的游戏开发。我也在pygame中编写了几个游戏,并且课程非常有用。事实上,如果不使用适当的类(或无限的if-clauses和for循环使得一切都变得非常慢),几乎不可能创建pygame游戏。
祝你好运
答案 1 :(得分:0)
如何将变量(例如p1direction和p2direction)存储在由玩家编号索引的矢量(player_directions)中并使用循环访问它,例如:
number_of_players = 2
playersXS = function_that_fills_playersXS() # return a vector containing your p1XS and p2XS variables in a vector
for player_number in xrange(number_of_players):
if player_directions[player_number]=='right' and playersXS[player_number]< Attributes[player_number][1]:
playersXS[player_number]+=Attributes[player_number][0]