pygame 中的贪吃蛇游戏没有 运行
snake game in pygame doesn't run
import pygame
from pygame.locals import *
class Snake:
def __init__(self, parent_screen):
self.parent_screen = parent_screen
self.block = pygame.image.load("BLOCK.png")
self.x = 100
self.y = 100
def draw(self):
self.parent_screen.fill("White")
self.parent_screen.blit(self.block, (self.x,self.y))
pygame.display.flip()
def move_up(self):
self.y -= 10
self.draw()
def move_down(self):
self.y += 10
self.draw()
def move_right(self):
self.x += 10
self.draw()
def move_left(self):
self.x -= 10
self.draw()
class game:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((500,500))
self.screen.fill("White")
self.snake = Snake(self.screen)
self.snake.draw()
def run(self):
game_on = True
while game_on:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_w:
self.snake.move_up()
elif event.key == K_s:
self.snake.move_down()
elif event.key == K_a:
self.snake.move_left()
elif event.key == K_d:
self.snake.move_right()
elif event.type == QUIT:
game_on = False
pygame.display.flip()
Game = game()
Game.run
必须在应用程序中绘制和更新场景:
class game:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((500,500))
#self.screen.fill("White") # <-- DELETE
self.snake = Snake(self.screen)
#self.snake.draw() # <-- DELETE
def run(self):
game_on = True
while game_on:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_w:
self.snake.move_up()
elif event.key == K_s:
self.snake.move_down()
elif event.key == K_a:
self.snake.move_left()
elif event.key == K_d:
self.snake.move_right()
elif event.type == QUIT:
game_on = False
self.screen.fill("White") # <-- INSERT
self.snake.draw() # <-- INSERT
pygame.display.flip()
Game = game()
Game.run() # <-- ()
典型的 PyGame 应用程序循环必须:
- 限制每秒帧数以限制 CPU 使用
pygame.time.Clock.tick
- 通过调用
pygame.event.pump()
or pygame.event.get()
. 来处理事件
- 根据输入事件和时间(分别为帧)更新对象的游戏状态和位置
- 清除整个显示或绘制背景
- 绘制整个场景(
blit
所有对象)
- 通过调用
pygame.display.update()
or pygame.display.flip()
更新显示
import pygame
from pygame.locals import *
class Snake:
def __init__(self, parent_screen):
self.parent_screen = parent_screen
self.block = pygame.image.load("BLOCK.png")
self.x = 100
self.y = 100
def draw(self):
self.parent_screen.fill("White")
self.parent_screen.blit(self.block, (self.x,self.y))
pygame.display.flip()
def move_up(self):
self.y -= 10
self.draw()
def move_down(self):
self.y += 10
self.draw()
def move_right(self):
self.x += 10
self.draw()
def move_left(self):
self.x -= 10
self.draw()
class game:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((500,500))
self.screen.fill("White")
self.snake = Snake(self.screen)
self.snake.draw()
def run(self):
game_on = True
while game_on:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_w:
self.snake.move_up()
elif event.key == K_s:
self.snake.move_down()
elif event.key == K_a:
self.snake.move_left()
elif event.key == K_d:
self.snake.move_right()
elif event.type == QUIT:
game_on = False
pygame.display.flip()
Game = game()
Game.run
必须在应用程序中绘制和更新场景:
class game:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((500,500))
#self.screen.fill("White") # <-- DELETE
self.snake = Snake(self.screen)
#self.snake.draw() # <-- DELETE
def run(self):
game_on = True
while game_on:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_w:
self.snake.move_up()
elif event.key == K_s:
self.snake.move_down()
elif event.key == K_a:
self.snake.move_left()
elif event.key == K_d:
self.snake.move_right()
elif event.type == QUIT:
game_on = False
self.screen.fill("White") # <-- INSERT
self.snake.draw() # <-- INSERT
pygame.display.flip()
Game = game()
Game.run() # <-- ()
典型的 PyGame 应用程序循环必须:
- 限制每秒帧数以限制 CPU 使用
pygame.time.Clock.tick
- 通过调用
pygame.event.pump()
orpygame.event.get()
. 来处理事件
- 根据输入事件和时间(分别为帧)更新对象的游戏状态和位置
- 清除整个显示或绘制背景
- 绘制整个场景(
blit
所有对象) - 通过调用
pygame.display.update()
orpygame.display.flip()
更新显示