import sys
import pygame
class rocaket:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((1200, 800))
self.ship = pygame.image.load("image/ship.bmp")
pygame.display.set_caption("小火箭")
self.screen.fill((230, 230, 230))
self.rect = self.ship.get_rect()
self.screen_rect = self.screen.get_rect()
self.rect.midbottom = self.screen_rect.center
self.screen.blit(self.ship, self.rect)
pygame.display.flip()
self.x = self.rect.x
self.y = self.rect.y
self.moving_right = False
self.moving_left = False
self.moving_up = False
self.moving_down = False
def run_game(self):
while True:
self._check_events()
self.update()
def _check_events(self):
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
self._check_keydown_events(event)
elif event.type == pygame.KEYUP:
self._check_keyup_events(event)
elif event.type == pygame.QUIT:
sys.exit()
def _check_keydown_events(self, event):
if event.key == pygame.K_UP:
self.moving_up = True
elif event.key == pygame.K_DOWN:
self.moving_down = True
elif event.key == pygame.K_LEFT:
self.moving_left = True
elif event.key == pygame.K_RIGHT:
self.moving_right = True
elif event.key == pygame.K_q:
sys.exit()
def _check_keyup_events(self, event):
if event.key == pygame.K_UP:
self.moving_up = False
elif event.key == pygame.K_DOWN:
self.moving_down = False
elif event.key == pygame.K_LEFT:
self.moving_left = False
elif event.key == pygame.K_RIGHT:
self.moving_right = False
def update(self):
"""根据移动标志调整飞船的位置"""
if self.moving_right and self.rect.right < self.screen_rect.right:
self.x += 1
if self.moving_left and self.rect.left > 0:
self.x -= 1
if self.moving_up and self.rect.y > 0:
self.y -= 1
if self.moving_down and self.rect.y < self.screen_rect.top:
self.y += 1
self.rect.x = self.x
self.rect.y = self.y
if name == 'main':
# 创建游戏实例并运行游戏
ai = rocaket()
ai.run_game()
```
你代码里面只写了坐标移动的代码,但是没有刷新画面的代码