Comment réparer l'image dans mon jeu Python?
Je fais un jeu en utilisant le module pygame. Chaque fois que je fais bouger mon cochon, il sort comme ceci: voir photo ci-dessus. Comment puis-je réparer cela? Je pense que c'est quelque chose à voir avec la façon dont j'ai bloqué mon image ou c'est quelque chose à voir avec la façon dont j'ai codé la boucle principale. En outre, il a commencé à le faire lorsque j'ai défini l'image d'arrière-plan. J'ai donc enlevé l'image de fond pour empêcher l'image du cochon de sortir comme ça, mais ça sort toujours comme ça même quand l'image de fond a disparu. Voici mon code:
script jeu principal:
import sys
import pygame
from pig import Pig
pygame.init()
# Dimensions of screen.
screen_width = 800
screen_height = 600
# Set the screen display and caption.
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Pig Heaven")
# Objects
pig = Pig(screen)
def sky_blitme(screen):
"""Set background sky image."""
sky_img = pygame.image.load('images/sky.png')
sky_img = pygame.transform.scale(sky_img, (800, 600))
screen.blit(sky_img, (0, 0))
sky_blitme(screen)
while True:
# Accept events
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# Keydown events
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
pig.moving_right = True
pig.orientation = 'right'
elif event.key == pygame.K_LEFT:
pig.moving_left = True
pig.orientation = 'left'
elif event.key == pygame.K_UP:
pig.moving_up = True
elif event.key == pygame.K_DOWN:
pig.moving_down = True
# Keyup events
elif event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
pig.moving_right = False
elif event.key == pygame.K_LEFT:
pig.moving_left = False
elif event.key == pygame.K_UP:
pig.moving_up = False
elif event.key == pygame.K_DOWN:
pig.moving_down = False
pig.blitme()
pig.update()
pygame.display.flip()
est ici le module de porc:
import pygame
class Pig():
def __init__(self, screen):
"""Initialize the pig and set its starting position."""
self.screen = screen
# Load the pig image and set pig and screen to rect.
self.image = pygame.image.load('images/pig.png')
self.image2 = pygame.transform.flip(self.image, True, False)
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
# Start the pig at the bottom center of the screen.
self.rect.centerx = self.screen_rect.centerx
self.rect.bottom = self.screen_rect.bottom
# Pig direction
self.orientation = 'down'
# Speed of the pig
self.pig_speed = 1.5
self.center = float(self.pig_speed)
# Set a variable for each movement.
self.moving_right = False
self.moving_left = False
self.moving_up = False
self.moving_down = False
def update(self):
"""Update the position of the pig.
Set boundaries on the edges of the screen."""
if self.rect.right <= self.screen_rect.right:
if self.moving_right:
self.rect.centerx += self.pig_speed
if self.rect.left > 0:
if self.moving_left:
self.rect.centerx -= self.pig_speed
if self.rect.top > 0:
if self.moving_up:
self.rect.bottom -= self.pig_speed
if self.rect.bottom <= self.screen_rect.bottom:
if self.moving_down:
self.rect.bottom += self.pig_speed
def blitme(self):
if self.orientation == 'right':
self.screen.blit(self.image, self.rect)
elif self.orientation == 'left':
self.screen.blit(self.image2, self.rect)
else:
self.screen.blit(self.image, self.rect)
Je suis nouveau dans la programmation et c'est le premier jeu que je crée donc J'apprécierais que vous me donniez aussi des conseils et que vous critiquiez ma structure de codage.
Je veux juste de se déplacer, à gauche , droite, haut et bas. – Katrina
Ok, alors comment est-ce que l'image fixe d'un cochon qui s'est déplacé vers le haut illustre bien que cela ne se produit pas? Votre problème est l'effet tunnel? De l'image, tout ce à quoi je pense, c'est que "les cochons ne peuvent pas voler, alors ils s'enfuient dans le ciel" ... – roganjosh
Le cochon a l'air génial. – Adam