2016-10-07 2 views
0

Я делаю свою собственную игру с Python2.7 через pygame libraby. Это боевая игра 1v1, в которой игроки используют одну и ту же клавиатуру.Python2.7 Как использовать переменные multiples в цикле?

Игра работает в основном цикле, который повторяется 60 раз в секунду, каждый раз, когда цикл выполняется, он вычисляет множество вещей, например, положение, проблема в том, что у меня есть 2 игрока, поэтому мне приходится писать строки два раз.

Пример здесь:

, если p1direction == 'право' и p1XS < p1Attributes [1]: p1XS + = p1Attributes [0]

и

:

если p2direction == 'правые' и p2XS < p2Attributes [1]: p2XS + = p2Attributes [0]

См. Различия p1 и p2, они являются переменными, принадлежащими Игроку 1 и Игроку 2 соответственно.

Я просто хочу найти решение, чтобы не писать каждый раз одни и те же строки только для p2. Я думал о функции, поэтому я могу даже добавить игроков, но я не знаю, как это сделать в этом случае ...

Может кто-нибудь мне помочь? :) Пожалуйста,

ответ

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

EDIT: Если вы не использовали классы в Python пока я рекомендую догоняю там первое, а затем продолжающееся ваше развитие игры. Я также запрограммировал несколько игр в pygame, и классы приходят в очень сжатые сроки. На самом деле, невозможно создать игры pygame без использования соответствующих классов (или бесконечных if-clauses и for-loops, которые сделают все супер медленным).

Желаю вам всем удачи

+0

Спасибо :)! К сожалению, я не начал использовать классы, но я все равно должен их выучить ... Разве вы не знаете некоторые другие трюки, которые я могу использовать? – GriffinBabe

+0

Вместо класса достаточно словаря. –

+0

ну, чтобы использовать pygame, (как я уже сказал в моем редактировании) вам в основном нужны классы. МНОГО. Если вы не узнали о них, ваш код скоро станет действительно большим. Вы также можете использовать список (возможно, это то, что означает juanma.arrivillaga) и работать с этим. Если вас все еще интересует, я могу написать еще один ответ, показывающий вам, как это сделать. – Narusan

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] 
+0

Вектор не является стандартным именем любой структуры данных Python. Вы имеете в виду 'list'? –

+0

Кроме того, попробуйте использовать стандартный стиль кодирования Python в ваших ответах - например.не используйте посторонние точки с запятой, отступы if-blocks и т. д. –

Смежные вопросы