-2
我在Pygame中做一個遊戲。現在我只有一個矩形正在屏幕上移動。矩形的方向可以從鍵盤改變。爲什麼我的pygame遊戲太慢了?
main.py:
import pygame
import sys
import player
import room
# Colors
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
blue = (0, 255, 0)
green = (0, 0, 255)
# Global variables
S_WIDTH = 800
S_HEIGHT = 800
FPS = 60
# player speed
SPEED = 2
# Initialization
pygame.init()
screen = pygame.display.set_mode([S_WIDTH, S_HEIGHT])
pygame.display.set_caption("Py-Man Alpha")
clock = pygame.time.Clock()
# Game class
class Game(object):
"""
This is main class of game.
All game events will happen here.
"""
Player = player.Player(blue, 50, 50, 0, 0)
def __init__(self, screen, running):
self.screen = screen
self.running = running
self.run()
def run(self):
while self.running:
# Events
for event in pygame.event.get():
# If user hits 'x'
if event.type == pygame.QUIT:
self.running = False
# Keyborad events
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
self.Player.direction = 'up'
self.Player.move(SPEED, WALLS)
elif event.key == pygame.K_DOWN:
self.Player.direction = 'down'
self.Player.move(SPEED, WALLS)
elif event.key == pygame.K_LEFT:
self.Player.direction = 'left'
self.Player.move(SPEED, WALLS)
elif event.key == pygame.K_RIGHT:
self.Player.direction = 'right'
self.Player.move(SPEED, WALLS)
elif event.key == pygame.K_p:
self.Player.direction = 'pause'
# Clear screen
self.screen.fill(white)
#Draw
self.Player.move(SPEED, WALLS)
self.Player.draw(self.screen)
for wall in WALLS:
wall.draw()
# Set clock
clock.tick(60)
# Update screen
pygame.display.flip()
# End of game
pygame.quit()
sys.exit()
# Tests
game = Game(screen, True)
player.py:
#imports
import pygame
class Player(pygame.sprite.Sprite):
"""
This class represent the player image
and has the player actions.
"""
direction = 'right'
def __init__(self, color, width, height, x, y):
# Pygame constructor
pygame.sprite.Sprite.__init__(self)
# Init. variables
self.color = color
self.width = width
self.height = height
# Create sprite
self.image = pygame.Surface([width, height])
self.image.fill(self.color)
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def draw(self, screen):
# Draw player on the screen
pygame.draw.rect(screen, self.color, [self.rect.x, self.rect.y, self.width, self.height], 0)
def move(self, speed, walls):
# Move the player
if self.direction == 'up':
self.rect.y -= speed
elif self.direction == 'down':
self.rect.y += speed
elif self.direction == 'left':
self.rect.x -= speed
elif self.direction == 'right':
self.rect.x += speed
所以,我怎樣才能加快我的遊戲?我如何提高速度?我錯在哪裏? 謝謝!
編輯: 顯示器的刷新速度很慢。我按'向上'鍵,但在2-3秒後監聽命令。爲什麼?
這個問題似乎是題外話,因爲它是關於改善工作的代碼,它可能是更適合codereview.stackexchange.com –
您是否嘗試過增加'SPEED'變量?我敢打賭,這會給你更多的速度。 – Kevin
什麼是慢?刷新屏幕或播放器的速度? – daouzli