Sto cercando di sviluppare un semplice gioco realizzato con Pygame (libreria Python).
Ho un sprite
oggetto che è il player
e lo sposto usando i tasti freccia. Se non muovo il mouse, lo sprite si sposta normalmente, ma quando sposto il mouse, lo sprite si sposta più velocemente (come x2 o x3). L' player
oggetto è all'interno della charsGroup
var.
Ho eseguito il gioco in W7 e Ubuntu. La stessa cosa accade in entrambi i sistemi operativi.
Ho più entità che si muovono come NPC e proiettili ma non vengono colpite, solo il giocatore. Detto questo, penso che il problema abbia forse una connessione diretta con il sistema di spostamento del giocatore (tasti freccia).
Ecco il update()
metodo player
dell'oggetto:
def update(self):
for event in pygame.event.get():
key = pygame.key.get_pressed()
mouseX, mouseY = pygame.mouse.get_pos()
if event.type == pygame.MOUSEBUTTONDOWN:
self.bulletsGroup.add(Bullet(pygame.image.load("bullet.png"),
self.rect.x + (self.image.get_width()/2),
self.rect.y + (self.image.get_height()/2),
mouseX, mouseY, 50, 50))
if key[pygame.K_RIGHT]:
if not self.checkCollision():
self.rect.x += 10
else:
self.rect.x -= 10
if key[pygame.K_LEFT]:
if not self.checkCollision():
self.rect.x -= 10
else:
self.rect.x += 10
if key[pygame.K_UP]:
if not self.checkCollision():
self.rect.y -= 10
else:
self.rect.y += 10
if key[pygame.K_DOWN]:
if not self.checkCollision():
self.rect.y += 10
else:
self.rect.y -= 10
Ed ecco il ciclo while:
while True:
if PLAYER.healthBase <= 0:
GAMEOVER = True
if not GAMEOVER:
mapTilesGroup.draw(SCREEN)
charsGroup.update()
charsGroup.draw(SCREEN)
npcsGroup.update()
npcsGroup.draw(SCREEN)
drawBullets()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if GAMEOVER:
myfont = pygame.font.SysFont("monospace", 30)
label = myfont.render("GAME OVER!", 1, (255, 255, 0))
SCREEN.blit(label, (400, 300))
freq.tick(0)
pygame.display.flip()
Non so di cosa tu possa aver bisogno per aiutarmi, ma qualsiasi cosa ti serva (maggiori informazioni o codice) basta chiedere!
BULLET_IMAGE = pygame.image.load("bullet.png")
e poi più tardiself.bulletsGroup.add(Bullet(BULLET_IMAGE...