Недостаток опыта в Pygame - PullRequest
       19

Недостаток опыта в Pygame

1 голос
/ 30 апреля 2019

Я разрабатывал игру типа Shoot'em up для своего собственного развлечения в Pygame, и на полпути я столкнулся с некоторыми сомнениями, создавая основные движения игрока, «Dash» и «Switch» не работают должным образом.

...

def switch(self):
    if self.offensive_stance() == True:
        self.defensive_stance() == False
    if self.defensive_stance() == True:
        self.offensive_stance() == False
    switch_stance = cycle([self.offensive_stance(), 
    self.defensive_stance()])
    next(switch_stance)

# switch () при нажатии LSHIFT работает правильно под классом Player

def dash(self, cooldown=200):
    self.last_dash = pygame.time.get_ticks()
    self.cooldown = cooldown

def dash_properties(self):
    now = pygame.ticks.get_ticks()
    if self.last_dash - now >= cooldown:
        self.last_dash= now
        self.rect.x -= self.speedx * 2
        self.rect.y -= self.speedy * 2
...

Я ожидаю, что эти 2 результата для обоих объектов.

Тире (Увеличение скорости по осям x и y в течение 1 с, а затем перезарядка) - Не удается создать его из-за недостатка опыта.

Switch (цикл между 2 func, Offensive и Defensive) - Невозможно правильно создать переключатель с LSHIFT, defensive_stance активируется только при нажатии LSHIFT

1 Ответ

0 голосов
/ 30 апреля 2019

Минимальный пример, который использует LSHIFT для переключения значения в переменной active и используется для переключения цвета (красный / зеленый) в прямоугольнике.

import pygame

# --- constants --- (UPPER CASE NAMES)

BLACK = (  0,   0,   0)
RED   = (255,   0,   0)
GREEN = (  0, 255,   0)

# --- main ---

pygame.init()

screen = pygame.display.set_mode((800, 600))
screen_rect = screen.get_rect()

rect = pygame.Rect(0, 0, 200, 200)
rect.center = screen_rect.center

active = False

# --- mainloop ---

clock = pygame.time.Clock()

running = True

while running:

    # --- events ---

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                running = False

            elif event.key == pygame.K_LSHIFT:
                # toggle
                active = not active

    # --- updates ---

    if active:
        color = GREEN
    else:
        color = RED

    # --- draws ---

    screen.fill(BLACK)

    pygame.draw.rect(screen, color, rect)        
    pygame.display.flip()

    clock.tick(5)

# --- end ---

pygame.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...