liuxingyu.. 发表于 2021-5-8 17:15:40

python 小游戏求组

主程序代码
import pygame
from plane_sprites import *

#模块初始化
pygame.init()

#创建窗口
screen=pygame.display.set_mode((480,700))
#绘制背景图像
#加载图像的数据
background=pygame.image.load("./images/background.png")
#blit 绘制图像
screen.blit(background,(0,0))

#updata 更新图像的显示
# pygame.display.update()

#绘制我方飞机
hero = pygame.image.load("./images/me1.png")
screen.blit(hero,(200,500))

#updata 更新图像的显示TODO 将screen对象绘制的图像显示一次性的绘制到图像上 可以统一的将blit绘制后的结果在绘制完后统一调用 update 方法
pygame.display.update()

#创建一个时钟对象

clock=pygame.time.Clock()

#定义rect记录飞机初始值的位置
hreo_rect=pygame.Rect(200,500,102,126)

#创建敌机的精灵
enemy=GameSprite("./images/enemy1.png")

#创建敌机的精灵组
enemy_group=pygame.sprite.Group(enemy)
#游戏循环
i=0
while True:
    #TODO 可以指定循环体内部代码执行的频率
    clock.tick(1)
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
            print("退出游戏")
            pygame.quit()

            exit()


    #修改飞机的位置
    hreo_rect.y-=50
    #判断飞机是否移出屏幕 如果是则移到屏幕底部
    if hreo_rect.y <=0:
      hreo_rect.y=700
    #使用bilt方法绘制图像 TODO 重新绘制了一边背景 将之前飞机的影像做了一个遮挡

    screen.blit(background,(0,0))
    screen.blit(hero,hreo_rect)


    #调用update方法更新显示
    # 调用精灵组中的update draw 方法
    # updata -- 让精灵组中的所有精灵调用update更新位置

    enemy_group.update()
    # draw --在屏幕上绘制更新里的精灵位置 需要让你的窗口变量作为参数
    enemy_group.draw(screen)


    pygame.display.update()
    print(i)
    i+=1

#结束
pygame.quit()

plane_sprite.py
#TODO 派生精灵子类的演练
import pygame
class GameSprite(pygame.sprite.Sprite):
    """飞机大战游戏精灵"""
    def __init__(self,image_name,spend=1):
    #调用父类的初始化方法
      super().__init__()
    #定义属性
      self.image=pygame.image.load(image_name)
      self.rect=self.image.get_rect()
      self.spend=spend

    def updata(self):
      #默认y周移动
      self.rect.y += self.spend

我使用精灵组创建了一个敌机但是不知道为什么那个敌机的图像不会动 求助

c3106169682 发表于 2022-9-19 15:40:05

666
页: [1]
查看完整版本: python 小游戏求组