找回密码
 立即注册
首页 业界区 安全 pygame小游戏飞机大战_3玩家移动+面对对象编程 ...

pygame小游戏飞机大战_3玩家移动+面对对象编程

侧胥咽 2025-8-7 17:44:02
玩家移动:
设置x,y坐标并新增按按钮时改变其坐标值
将绘制玩家及背景放入循环中操作玩家的坐标值
  1. x = 179
  2. y = 500
  3. while True:
  4.     # 绘制背景
  5.     screen.blit(background, (0, 0))
  6.     # 绘制玩家
  7.     screen.blit(player, (x, y))
  8.     # 定义玩家x坐标和y坐标
  9.     # 获取事件
  10.     for event in pygame.event.get():
  11.         # 如果事件是QUIT事件,如点击窗口的关闭按钮,则退出循环
  12.         if event.type == pygame.QUIT:
  13.             # 执行退出游戏
  14.             pygame.quit
  15.             # 退出程序
  16.             exit()
  17.         # 判断按下键盘事件,打印上下左右文字,并对玩家x,y坐标进行调整使玩家移动
  18.         key_pressed = pygame.key.get_pressed()
  19.         if key_pressed[K_w] or key_pressed[K_UP]:
  20.             print("上")
  21.             y -= speed
  22.         if key_pressed[K_d] or key_pressed[K_RIGHT]:
  23.             print("右")
  24.             x += speed
  25.         if key_pressed[K_a] or key_pressed[K_LEFT]:
  26.             print("左")
  27.             x -= speed
  28.         if key_pressed[K_s] or key_pressed[K_DOWN]:
  29.             print("下")
  30.             y += speed
  31.         if key_pressed[K_SPACE]:
  32.             print("空格")
  33.     # 界面更新
  34.     pygame.display.update()
复制代码
面向对象编程:
将所写代码用面对对象编程方式编写
  1. # 引入飞机的类
  2. class Plane(object):
  3.     # 创建玩家的方法,引入screen模块
  4.     def __init__(self,screen):
  5.         # 引入图片创建玩家
  6.         self.player = pygame.image.load("./images/me1.png")
  7.         # 设置速度变量
  8.         self.speed = 10
  9.         self.x = 179
  10.         self.y = 500
  11.         # 使screen变为飞机类的一个属性
  12.         self.screen=screen
  13.     # 创建玩家移动的方法
  14.     def key_control(self):
  15.         # 判断按下键盘事件,对玩家x,y坐标进行调整使玩家移动
  16.         key_pressed = pygame.key.get_pressed()
  17.         if key_pressed[K_w] or key_pressed[K_UP]:
  18.             self.y -= self.speed
  19.         if key_pressed[K_d] or key_pressed[K_RIGHT]:
  20.             print("右")
  21.             self.x += self.speed
  22.         if key_pressed[K_a] or key_pressed[K_LEFT]:
  23.             print("左")
  24.             self.x -= self.speed
  25.         if key_pressed[K_s] or key_pressed[K_DOWN]:
  26.             print("下")
  27.             self.y += self.speed
  28.         if key_pressed[K_SPACE]:
  29.             print("空格")
  30.     def display(self):
  31.         # 绘制玩家
  32.         self.screen.blit(self.player, (self.x, self.y))
复制代码
完整代码:
  1. # 引入pygameimport pygame# 引入time模块import time# 引入pygame中的所有方法from pygame.constants import K_UP, K_RIGHT, K_DOWN, K_LEFT, K_w, K_a, K_s, K_d, K_SPACE# 引入飞机的类
  2. class Plane(object):
  3.     # 创建玩家的方法,引入screen模块
  4.     def __init__(self,screen):
  5.         # 引入图片创建玩家
  6.         self.player = pygame.image.load("./images/me1.png")
  7.         # 设置速度变量
  8.         self.speed = 10
  9.         self.x = 179
  10.         self.y = 500
  11.         # 使screen变为飞机类的一个属性
  12.         self.screen=screen
  13.     # 创建玩家移动的方法
  14.     def key_control(self):
  15.         # 判断按下键盘事件,对玩家x,y坐标进行调整使玩家移动
  16.         key_pressed = pygame.key.get_pressed()
  17.         if key_pressed[K_w] or key_pressed[K_UP]:
  18.             self.y -= self.speed
  19.         if key_pressed[K_d] or key_pressed[K_RIGHT]:
  20.             print("右")
  21.             self.x += self.speed
  22.         if key_pressed[K_a] or key_pressed[K_LEFT]:
  23.             print("左")
  24.             self.x -= self.speed
  25.         if key_pressed[K_s] or key_pressed[K_DOWN]:
  26.             print("下")
  27.             self.y += self.speed
  28.         if key_pressed[K_SPACE]:
  29.             print("空格")
  30.     def display(self):
  31.         # 绘制玩家
  32.         self.screen.blit(self.player, (self.x, self.y))# 创建main函数创建主程序def main():    # 创建一个窗口    screen = pygame.display.set_mode((480, 700), 0, 32)    # 引入图片创建背景    background = pygame.image.load("./images/background.png")    # 引入图片创建玩家    player = pygame.image.load("./images/me1.png")    # 引入玩家信息    player = Plane(screen)    # 设置速度变量    speed = 10    x = 179    y = 500    while True:        # 绘制背景        screen.blit(background, (0, 0))        # 获取事件        for event in pygame.event.get():            # 如果事件是QUIT事件,如点击窗口的关闭按钮,则退出循环            if event.type == pygame.QUIT:                # 执行退出游戏                pygame.quit                # 退出程序                exit()        # 执行飞机按键监听        player.key_control()        # 显示飞机        player.display()        # 界面更新        pygame.display.update()        # 使程序每次运行时停留0.01秒        time.sleep(0.01)if __name__ == '__main__':    main()
复制代码
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册