J'ai un événement utilisateur personnalisé que j'ai assigné à la variable enemy_fire
et le régler pour qu'il s'active toutes les 100 ms avec pygame.time.set_timer(enemy_fire, 100)
. Cependant, cela ne fonctionne pas. J'ai essayé de le régler sur 10 ms : pygame.time.set_timer(enemy_fire, 10)
et cela a fonctionné, et j'ai continué à jouer avec le paramètre de temps jusqu'à ce que je trouve le seuil dans lequel il a cessé de fonctionner, et j'ai constaté que tout ce qui est supérieur à 16 ms ne fonctionne pas. J'ai lu la documentation, et je suis presque sûr que j'utilise cette fonction correctement. Cela me semble être un comportement étrange, je ne sais pas vraiment pourquoi cela se produit.
Voici la partie principale de mon code :
import pygame
import gametools
import players
import enemies
from sys import exit
# initilaization
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Bullet hell')
clock = pygame.time.Clock()
# Player
player = players.Player()
enemy = enemies.Enemy()
# Background
back_surf = pygame.image.load('sprites/backgrounds/background.png').convert()
enemy_fire = pygame.USEREVENT + 1
# main game loop
while True:
pygame.time.set_timer(enemy_fire, 100)
# event loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
if event.type == enemy_fire:
print('fire')
enemy.attack(screen)
# display background
screen.blit(back_surf, (0, 0))
player.draw(screen)
player.update(screen)
enemy.draw(screen)
enemy.update()
enemy.collision(enemy.rect, player.bullets)
pygame.display.update()
clock.tick(60)