Я прыгаю по учебникам, пытаясь успешно завершить свою первую игру. Я занимался тяжелым объектно-ориентированным подходом к управлению ресурсами, но я чувствовал, что это немного помутнение моего понимания, поэтому я перезапустил. У меня в настоящее время мой персонаж плавно перемещается по экрану со скоростью, которую мне нравится, моя проблема в том, что мой «цикл ходьбы» из трех изображений идет быстро, и я получаю постоянство эффекта видения на ногах моей маленькой курицы. Мне нужно замедлить его, до сих пор я смог добиться желаемого эффекта, появляясь при вызове часов после каждого цикла принятия решения, но я беспокоюсь, что это замедлит всю логику игры, так как я не уверен, часы более одного раза «замораживают» мое обновление игры во времени, пока персонаж решает двигаться. Я подумал, может быть, сделать какое-то уравнение, сравнивающее время на часах с временем на часах раньше, чтобы замедлить ключевые кадры цикла цикла. Любая помощь или предложения, есть ли более простой метод? Огромное спасибо.
импорт Pygame, SYS из pygame.locals импорта *Игрок перемещает правильную скорость по экрану, цикл ходьбы слишком велик, надеясь, что предложения будут выполнены правильно
pygame.init()
#Contstants
BLACK = (0, 0, 0)
SCREENWIDTH = 300
SCREENHEIGHT = 300
game_running = True
clock = pygame.time.Clock()
#variables
current = 0
class Player(object):
def __init__(self):
self.avatar_front = pygame.image.load("chicken_front.png")
self.avatar_back = pygame.image.load("chicken_back.png")
self.avatar_right = pygame.image.load("chicken_right_stand.png")
self.avatar_left = pygame.image.load("chicken_left_stand.png")
self.avatar_left_walk = pygame.image.load("chicken_left_walk1.png")
self.avatar_left_walk2 = pygame.image.load("chicken_left_walk2.png")
self.avatar_right = pygame.image.load("chicken_right_stand.png")
self.avatar_right_walk = pygame.image.load("chicken_right_walk1.png")
self.avatar_right_walk2 = pygame.image.load("chicken_right_walk2.png")
self.position = [0, 0]
self.current_direction = self.avatar_front
#SetUp
myScreen = pygame.display.set_mode((SCREENWIDTH, SCREENHEIGHT))
pygame.display.set_caption("Chicken Rush!")
pygame.display.set_icon(pygame.image.load("chicken_front.png"))
myPlayer = Player()
while game_running:
myScreen.fill(BLACK)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
#RIGHT HERE DETERMINES WHICH IMAGE TO DISPLAY FOR WALKING LEFT->This is the part I need to # slow down
keys_pressed = pygame.key.get_pressed()
if keys_pressed[K_LEFT] and myPlayer.position[0] >= 0:
if current == 0:
myPlayer.current_direction = myPlayer.avatar_left
current += 1
elif current == 1:
myPlayer.current_direction = myPlayer.avatar_left_walk
current += 1
elif current == 2:
myPlayer.current_direction = myPlayer.avatar_left_walk2
current = 0
myPlayer.position[0] -= 3
if keys_pressed[K_RIGHT] and myPlayer.position[0] < SCREENWIDTH - 32:
myPlayer.position[0] += 3
if keys_pressed[K_UP] and myPlayer.position[1] >= 0:
myPlayer.position[1] -= 3
if keys_pressed[K_DOWN] and myPlayer.position[1] < SCREENHEIGHT - 35:
myPlayer.position[1] += 3
myScreen.blit(myPlayer.current_direction, (myPlayer.position[0], myPlayer.position[1]))
pygame.display.update()
clock.tick(28)
что появился, чтобы дать мне те же результаты, когда я просто измененный elif current == 0, current == 10 и current == 20, он заканчивает блокировку изображения аватара, если я делаю что-либо, кроме текущего == 0, current == 1, current == 2, кажется, что мы были думая по тем же самым линиям, просто нужно понять, что разрушает его, реализуя его. Спасибо за ответ :) –
Вы добавили инструкцию '' else: current + = 1'? –
Нет, я поймал это прямо перед тем, как вы разместили его, и он исправил и делает то, что я хотел сделать сейчас. Спасибо за помощь. Я могу только предположить, что он застрял, потому что он не знал, что делать в значениях между моими «установленными кадрами», так как я пошел с elseif, но мы получили его работу. Еще раз спасибо. –