1精灵文件 plane_sprites.py

 import pygame

 class GameSprite(pygame.sprite.Sprite):
"""飞机大战游戏精灵"""
def __init__(self,plane_name,speed=1): # 调用父类方法 只要继承的不是object类 初始化的第一步都要调用父类方法
super().__init__() # 定义对象的属性
# 加载精灵图像
self.image = pygame.image.load(plane_name)
# 精灵大小
# image的get_rect()方法,可以返回pygame.Rect(0,0,图像宽,图像高)的对象
self.rect = self.image.get_rect()
# 设置精灵移动速度
self.speed = speed def update(self):
"""更新精灵位置"""
# 在屏幕的垂直方向移动
self.rect.y += self.speed

2.绘制图像主页面

 import pygame
from plane_sprites import * # 游戏初始化
pygame.init() # 创建游戏窗口 480*700
# 使用display.set_mode()创建的screen对象是一个内存中的屏幕数据对象,可以理解成是油画的画布
screen = pygame.display.set_mode((480,700)) # 绘制背景图像
bg = pygame.image.load("./images/background.png")
# 绘制背景图像在屏幕
#screen.blit方法是在画布上绘制很多图像
# blit方法接收两个参数,第一个参数是图像数据,第二个参数是图像的坐标
screen.blit(bg,(0,0)) # display.update()会将画布的最终结果绘制在屏幕上,这样可以提高屏幕绘制效率,增加游戏的流畅度
# pygame.display.update() #hero1. 绘制英雄飞机
hero = pygame.image.load("./images/me1.png") #hero2. 绘制图像在屏幕
screen.blit(hero,(150,300)) # 更新显示 只有调用update()方法 才能开到绘制在屏幕上的飞机
pygame.display.update( ) #hero3. 定义rect记录英雄飞机的初始位置
# Rect(x坐标,y坐标,图片宽,图片高)
hero_rect = pygame.Rect(150,300,102,126) # pygame.time.Clock 可以非常方便的设置屏幕绘制速度----刷新频率
# clock1.初始化创建一个时钟对象
clock = pygame.time.Clock() # 创建敌机的精灵
enemy = GameSprite("./images/enemy1.png")
enemy2 = GameSprite("./images/enemy1.png",2) # 创建敌机精灵组
enemy_group = pygame.sprite.Group(enemy,enemy2) # 游戏循环
while True:
# clock2.在游戏循环中让时钟对象调用tick(频率)方法
# 制定循环体内部的代码执行的频率
clock.tick(60) #每秒更新60次 # hero4.修改英雄飞机的位置
hero_rect.y -= 1 if hero_rect.y <= 0-hero_rect.height:
hero_rect.y = 700 #刷新绘制背景图片 如果没有这一步 英雄飞机飞行时会有重影
screen.blit(bg,(0,0))
# hero5.重新绘制英雄图像
screen.blit(hero,hero_rect) #blit第二个参数可以直接把Rect()放进去 # 让精灵组调用两个方法才能显示敌机
# 精灵组1.update
enemy_group.update()
# 精灵组2.draw(画布)
enemy_group.draw(screen) # 更新显示
pygame.display.update() # 捕获事件
# event_list = pygame.event.get()
# print(event_list) # 游戏循环中监听事件 pygame.event.get() 可以获得用户当前所做动作的事件列表
for event in pygame.event.get(): # 事件event
# print(event) # 判断用户是否点击了关闭按钮
if event.type == pygame.QUIT:
print("游戏腿粗") # 退出游戏循环 卸载所有模块
pygame.quit() # 直接退出系统
exit()

pygame游戏图像绘制及精灵用法的更多相关文章

  1. 2.pygame快速入门-绘制图像

    介绍 在游戏中能够看到的游戏元素大都是图像 图像文件初始是保存在磁盘上的,如果需要使用,第一步就需要被加载到内存 要在屏幕上看到某一个图像的内容,需要按照三个步骤 使用pygame.image.loa ...

  2. pygame游戏开发-简介

    转自白月黑羽Python教程:http://www.python3.vip/doc/tutorial/python/game/ 推荐对Python有兴趣的童鞋可以关注去看看,教程语言平实,简单易懂. ...

  3. Pygame游戏开发入门(1)-开发框架

    pygame库的安装 pip install pygame pygame最小开发框架 #Pygame Hello World Game import pygame,sys #引入pygame和sys( ...

  4. Python和Pygame游戏开发 pdf

    Python和Pygame游戏开发 目录 第1章 安装Python和Pygame 11.1 预备知识 11.2 下载和安装Python 11.3 Windows下的安装说明 11.4 Mac OS X ...

  5. 【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/ ...

  6. Python游戏开发:pygame游戏开发常用数据结构

    一.数组与列表 数组可以理解为简化的列表.像我们之前使用的pygame.sprite.Group这样的精灵组,也是一个列表.列表的元素是可变的,它具有添加.删除.搜索.排序等多种方法. 1.一维列表 ...

  7. IOS第16天(1,Quartz2D基本图像绘制)

    ***************基本图像绘制 画线 #import "HMLineView.h" @implementation HMLineView - (id)initWithF ...

  8. HTML5 canvas图像绘制方法与像素操作属性和方法

    图像绘制方法 drawImage()        向画布上绘制图像.画布或视频 像素操作属性和方法 width                                返回 ImageData ...

  9. camera按键采集图像及waitKey的用法(转)

    源: camera按键采集图像及waitKey的用法

随机推荐

  1. 任务调度Quartz.Net之Windows Service

    这个应该是关于Quartz.Net使用的最后一篇文章了,之前的介绍都是基于Web的,这种实现任务调度的方式很少见,因为不管是MVC.WebApi还是WebService,它们都需要寄宿在IIS上运行, ...

  2. git将代码提交到多个远程仓库

    在项目目录下执行: git remote set-url --add origin http://mayun.cn/xxx/adsdsdsdcelery-demo.git 即可添加一个远程仓库. 再执 ...

  3. 汉字转拼音js工具:

    / JavaScript Document var PinYin = { "a": "\u554a\u963f\u9515", "ai": ...

  4. box-shadow 用法总结

    一.基础知识 box-shadow 属性向框添加一个或多个阴影. 语法 box-shadow: offset-x offset-y blur spread color inset; box-shado ...

  5. 字典的学习2——参考Python编程从入门到实践

    遍历字典 1. 遍历所有键值对 eg1: user_0 = { 'username': 'efermi', 'first': 'enrico', 'last': 'fermi',}for key, v ...

  6. 如何实现在H5里调起高德地图APP

    这一篇文章将告诉您,如果直接打开高德地图APP,并展示路线规划.适合有定位的移动设备,可以查询到从“我的位置”到目的地的路径规划,并直接导航. 场景二.调起高德地图的路线规划功能 导航是目前JSAPI ...

  7. Scratch零基础起步攻略(一)

    通常,类似这样的文章开头总要阐述一大段关于编程的重要性,还有自己的专业性.权威性等等,我就都省掉了…… 简单介绍一下自己,从事计算机编程教育前前后后有近20年了,面对了不同年龄层次的学员,大部分跟着我 ...

  8. npm查看包版本

    点击跳转 ~ 会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0 ^ 会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包 ...

  9. 类中变量私有化和调用:__x和getx/setx或者property

    __xx:双前置下划线,子类不可继承属性.方法,父类私有. 详见:https://www.cnblogs.com/andy9468/p/8299448.html 例子1:隐藏数据:私有化后,用get和 ...

  10. Swagger 接口文档规范

    导语: 相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是 ...