python新手敲打飞机大作战项目(上)

代码已经标注前后顺序,感觉还算比较详细,

res/引入的图片素材,大家可以自行百度或对接自己的素材,希望对大家有所帮助!

import pygame
import sys
import pygame.localsIMG_BACKGROUND="res/img_bg_level_2.jpg"
APP_ICO="res/app.ico"# TODO 12 创建所有显示的图形父类 Model
class Model:# TODO 16定义主题框对象,用于模型访问使用window = None# TODO 10.制作背景构造方法  ,  传入图片路径 x,ydef __init__(self, img_path, x, y):self.img = pygame.image.load(img_path)  # 背景图片,传入图片路径self.x = xself.y = y# TODO 13 将模型加入窗体的方法抽取到父类def display(self):# TODO 17使用Mode的类变量访问窗体对象  调用bilt 方法,将图片加入到窗体中Model.window.blit(self.img,(self.x,self.y))# TODO 背景
class Bcakground(Model):#TODO 16.定义背景移动方法def move(self):self.y +=1 #纵坐标自增1,展示出来图片不断变化# TODO 21.加入背景移动的情况判定if self.y <= Game.WINDOW_HEIGHT: # TODO .如果没有超出屏幕就正常移动self.y += 1else:self.y=0 #纵坐标=0 恢复原位#TODO 22覆盖父类display方法  制作原始背景贴图+辅助背景图def display(self):# TODO .原始背景贴图,推荐使用super().display()Model.window.blit(self.img,(self.x,self.y))# TODO 辅助背景,坐标位置与原始背景贴图上下拼接吻合Model.window.blit(self.img,(self.x,self.y-Game.WINDOW_HEIGHT))# TODO 玩家
class PlayerPlane(Model):pass#TODO 敌方
class EnemyPlane(Model):pass# TODO 子弹
class Bullet(Model):pass# TODO 游戏
class Game:WINDOW_HEIGHT = 768WINDOW_WIDTH = 512# TODO 1.主程序  运行游戏入口 def构造方法def run(self):self.frame_init() #TODO 4.执行窗体初始化self.model_init()# TODO 12.背景图执行对象初始化while True: # TODO 使用反复执行的机制, 刷新窗体#TODO 19 调用背景移动操作,构造背景图片下拉移动的效果self.background.move()#TODO 20 移动完毕后将移动后的图片加入到窗体中self.background.display()# TODO 6.刷新窗体pygame.display.update()self.event_init()#TODO 8.初始化关闭窗口-监听事件并反复调用监听# TODO 3.初始化 窗体def frame_init(self):# TODO 5.初始化窗体self.windows=pygame.display.set_mode((Game.WINDOW_WIDTH,Game.WINDOW_HEIGHT))Model.window = self.windows #TODO 15将窗体对象传入模型类中# TODO 7.设置游戏相关属性img=pygame.image.load(APP_ICO)pygame.display.set_icon(img)pygame.display.set_caption("飞机大作战无敌版 -By.ictcast")def event_init(self):# TODO  9.获取当前页面所有发生的事件for event in pygame.event.get():# 判断当前事件类别是不是点击窗体的关闭按钮if event.type == pygame.locals.QUIT:# 执行退出系统操作sys.exit()# TODO 11.初始化窗体中的对象def model_init(self):# 初始化背景对象,传入图片路径,放置在0,0(x.y)位置self.background=Bcakground(IMG_BACKGROUND,0,0)  #TODO 18.使用self 提成为类方法调用# TODO 14 使用抽取的Model类中的display方法完成  18操作之后失效# background.display()# 调用bilt方法,将图片加入到窗口体# self.windows.blit(background.img,(background.x,background.y))#TODO  2.程序测试类   入口操作if __name__ == '__main__':Game().run()


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部