First time building a game in python, let alone pygame. When I launch the code the window with the desired BG comes up, and my Sprite
loads where I want. However, the Sprite
doesn't move despite all efforts. I've scoured this site and other for resolutions but to no avail.
Note: I am using an upgraded mid-2009 mac book with OS X 10.11.6 and I am launching the code via terminal (python boss_fight.py). Also, I downloaded[tag: pygame] via homebrew.
Other things I've tried:
elif
thenif
vs.if
thenif
statements- Adding
print
functions after if statements regarding key input to see if the input is registered, does notprint
. - List item adding
print
functions afterif
statements regarding key input to see if input is registered, does notprint
. - Updating pygame
- Updating python
- Launching with command pythonw boss_fight.py (this yields: ImportError: No module named pygame) which is weird because running the prompt python boss_fight.py runs the game.
- I've tried a few other things but can't remember them all
Here's the code:
import pygame # load pygame keywords
import sys # let python use your file system
import os # help python identify your OS
class Player(pygame.sprite.Sprite):
# Spawn a player
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.movex = 0
self.movey = 0
self.frame = 0
self.images = []
img = pygame.image.load(os.path.join('images','hero.png'))
self.images.append(img)
self.image = self.images[0]
self.rect = self.image.get_rect()
def control(self,x,y):
# control player movement
self.movex += x
self.movey += y
def update(self):
# Update sprite position
self.rect.x = self.rect.x + self.movex
self.rect.y = self.rect.y + self.movey
# moving left
if self.movex < 0:
self.frame += 1
if self.frame > 3 * ani:
self.frame = 0
self.image = self.images[self.frame//ani]
# moving right
if self.movex > 0:
self.frame += 1
if self.frame > 3 * ani:
self.frame = 0
self.image = self.images[(self.frame//ani)+4]
# Setup
worldx = 960
worldy = 720
fps = 40 # frame rate
ani = 4 # animation cycles
clock = pygame.time.Clock()
pygame.init()
main = True
BLUE = (25,25,200)
BLACK = (23,23,23 )
WHITE = (254,254,254)
ALPHA = (0,255,0)
world = pygame.display.set_mode([worldx,worldy])
backdrop = pygame.image.load(os.path.join('images','stage.jpeg')).convert()
backdropbox = world.get_rect()
player = Player() # spawn player
player.rect.x = 0
player.rect.y = 0
player_list = pygame.sprite.Group()
player_list.add(player)
steps = 10 # how fast to move
# Main loop
while main:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit(); sys.exit()
main = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player.control(-steps,0)
print('left')
elif event.key == pygame.K_RIGHT:
player.control(steps,0)
print('right')
elif event.key == pygame.K_UP:
print('up')
elif event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
player.control(steps,0)
elif event.key == pygame.K_RIGHT:
player.control(-steps,0)
elif event.key == pygame.K_q:
pygame.quit()
sys.exit()
main = False
world.blit(backdrop, backdropbox)
player.update()
player_list.draw(world)
pygame.display.update()
clock.tick(fps)
Aucun commentaire:
Enregistrer un commentaire