Python 实践——外星人入侵小游戏(上)

Python 实践——外星人入侵小游戏(上)

目录

  • Python 实践——外星人入侵小游戏(上)
    • 安装pip/pygame
    • 1.开始项目
    • 2.设置屏幕背景色
      • 基本操作:
      • 3. 设置类
      • 4. 添加飞船图像
      • 5.导入程序
        • 基本操作:
        • 完整:
        • 总结

          安装pip/pygame

          先查询python路径,然后在终端输入:

          /路径/python3 -m ensurepip --default-pip
          

          通过pip安装pygame:

          /路径/python3 -m pip install pygame
          

          新建一个python文档:

          import pygame
          

          没报错就说明安装成功

          1.开始项目

          import sys
          import pygame
          def run_game():
              # 初始化游戏并创建一个屏幕对象
              pygame.init() #初始化
              screen = pygame.display.set_mode((1200,800)) #设置屏幕大小
              pygame.display.set_caption("Alien Invasion")
              # 开始游戏的主循环
              while True:#事件(用户的操作)循环
                  # 监视键盘和鼠标事件
                  for event in pygame.event.get():#检测事件-操作
                      if event.type == pygame.QUIT:
                          sys.exit()
                   # 让最近绘制的屏幕可见
                  pygame.display.flip() #更新屏幕
          run_game()
          

          注意:

          名称不要叫pygame.py,他会覆盖真正的pygame

          pygame 开发游戏

          sys 退出游戏

          .get()检测事件

          .display.flip() (flip快速翻动)随着操作改变,不断更新屏幕,以显示元素的新位置。

          2.设置屏幕背景色

          基本操作:

          (1)bg_color=(,) RGB 表示

          (2)调用screen.fill(bg_color),这个方法只接受一个实参(颜色)

          RGB

          这种颜色由红色、绿色和蓝色值组成,其中每个值的可能取值范围都为0~255。颜色值(255,0,0)表示红色,(0,255,0)表示绿色,而(0,0,255)表示蓝色。通过组合不同的RGB值,可创建1600万种颜色。在颜色值(230,230,230)中,红色、蓝色和绿色量相同,它将背景设置为一种浅灰色。

          3. 设置类

          可以在另一个py文件中把你的规定都写好,然后直接导入到游戏文件里。

          settings.py

          class Setting():
              def __init__(self):
                  self.screen_width= 1200
                  self.screen_height= 800
                  self.bg_color=(230,230,230)
          

          alien.py

          import sys
          import pygame
          from settings import Setting
          def run_game():
              # 初始化游戏并创建一个屏幕对象
              pygame.init() #初始化
              ai_settings=Setting()
              #传递元组
              screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
              pygame.display.set_caption("Alien Invasion")
              while True:#事件(用户的操作)循环
                  for event in pygame.event.get():#检测事件-操作
                      if event.type == pygame.QUIT:
                          sys.exit()
                  screen.fill(ai_settings.bg_color)
                  pygame.display.flip() #更新屏幕
          run_game()
          

          注意:

           screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
          

          传递元组,而不是参数。

          4. 添加飞船图像

          • 写代码之前:

            在pycharm中创建一个叫images的文件夹

            然后把图片粘贴到其中,refactor成ship.bmp

            (根据需求,可以在ps里调整一下像素大小)

            注意背景颜色要一样

          • 代码操作:

            初始化

            加载图像.image.load(‘路径.bmp’)

            矩形处理图形 self.rect/.get_rect()

            矩形处理屏幕self.screen_rect

            放置位置 .screen_rect.位置

            def

            .blit(图形,屏幕) 位块传输,绘制

            import pygame
            class Ship():
                def __init__(self,screen):
                    self.screen = screen
                    # 加载飞船图像
                    self.image = pygame.image.load('images/ship.bmp')
                    #处理图形
                    self.rect = self.image.get_rect()
                    #处理屏幕
                    self.screen_rect = screen.get_rect()
                    # 将每艘新飞船放在屏幕底部中央
                    self.rect.centerx = self.screen_rect.centerx
                    self.rect.bottom = self.screen_rect.bottom
                def blitme(self):
                    self.screen.blit(self.image, self.rect)
            

            注意:

            .bmp形式 位图

            .表示访问属性

            · get_rect():像处理矩形一样处理游戏元素.

            ·要将游戏元素居中,可设置相应rect对象的属性center、centerx或centery。要让游戏元素与屏幕边缘对齐,可使用属性top、bottom、left或right;要调整游戏元素的水平或垂直位置,可使用属性x和y,它们分别是相应矩形左上角的x和y坐标。

            ·在Pygame中,原点(0,0)位于屏幕左上角,向右下方移动时,坐标值将增大。在1200×800的屏幕上,原点位于左上角,而右下角的坐标为(1200,800)。

            5.导入程序

            基本操作:

            from xx import

            ship=Ship(screen) 创建实例

            ship.blitme()

            完整:

            import sys
            import pygame
            from settings import Setting
            from ship import Ship
            def run_game():
                # 初始化游戏并创建一个屏幕对象
                pygame.init() #初始化
                ai_settings=Setting()
                #传递元组
                screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
                pygame.display.set_caption("Alien Invasion")
                ship=Ship(screen)
                while True:#事件(用户的操作)循环
                    for event in pygame.event.get():#检测事件-操作
                        if event.type == pygame.QUIT:
                            sys.exit()
                    screen.fill(ai_settings.bg_color)
                    ship.blitme()
                    pygame.display.flip() #更新屏幕
            run_game()
            

            总结

            欢迎你进入编写自己的游戏阶段!我把很长的一章切分成了几个部分。本章你在画布中导入了一个飞船的图片。你完成了如下几个部分:开始项目(初始化/循环/屏幕可见/更新屏幕);设置背景颜色;设置类(预设规定);添加飞船图像;导入程序。