import pygame
from first_pygame.plane_spirit import *                         # 调用重载的精灵类 # 初始化
pygame.init() # 初始化所有所需游戏模块
screen = pygame.display.set_mode((700, 700)) # 设置游戏窗口大小
pygame.display.set_caption("打飞机") # 这是窗口名字
bg = pygame.image.load("./image/bg.jpg") # 加载背景图片
player = pygame.image.load("./image/player/player.png") # 加载英雄图片 screen.blit(bg, (0, 0)) # 设置背景图片,窗口对象调用blit方法 参数一:背景对象 参数二:图片的绘制位置
pygame.display.update() # 更新输出 player_rest = pygame.Rect(200, 500, 402, 257) # 记录英雄初始位置 和大小 clock = pygame.time.Clock() # 实例绘制时钟 # 精灵初始化敌机
diji_jinglin = Game_Jinglin("./image/computer/diji1.png")              # 实例精灵
diji_jinglin1 = Game_Jinglin("./image/computer/diji1.png",speed=2)
jingling_group = pygame.sprite.Group(diji_jinglin,diji_jinglin1)          # 加入精灵组 while True:
clock.tick(60) # 每秒绘制60次
player_rest.y -= 1 # 设置动画 每次向Y轴负方向运动-1
if player_rest.y <= -257:
player_rest.y = 900
screen.blit(bg, (0, 0)) # 背景覆盖
screen.blit(player, player_rest) # 英雄闪现 # 让精灵组调用两个方法
# update 更新所有精灵位置
jingling_group.update()
# 让精灵绘制到窗口
jingling_group.draw(screen) pygame.display.update() # 更新显示 for event_list in pygame.event.get(): # 事件监听 pygame.event.get()返回事件列表
if event_list.type == pygame.QUIT:
print("游戏退出...")
pygame.quit()
exit() # 把当前程序退出
first_pygame/plane_spirit.py/Game_jinglin类
class Game_Jinglin(pygame.sprite.Sprite):
"""
精灵类
继承:pygame.sprite.Sprite
重载:update
""" def __init__(self, image_name, speed=1):
super(Game_Jinglin, self).__init__()
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect()
self.speed = speed def update(self, *args):
self.rect.y += self.speed      # 竖直方向自加
注:浅谈pygame sprite(精灵)
 Sprite模块、sprite对象

 在pygame.sprite模块里面包含了一个名为Sprite类,
他是pygame本身自带的一个精灵。但是这个类的功能比较少,
因此我们新建一个类对其继承,在sprite类的基础上丰富,以方便我们的使用。
rect (位置)
draw(绘制)
update(更新画面)
碰撞检测(groupcollide(组) spritecollide(对象))
精灵类参考:https://www.cnblogs.com/msxh/p/5013555.html
 

pygame 浅解的更多相关文章

  1. 从最大似然到EM算法浅解

    从最大似然到EM算法浅解 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习十大算法之中的一个:EM算法.能评得上十大之中的一个,让人听起来认为挺NB的. ...

  2. 面试-1-C#浅解

    面试-1   C#浅解众所周知c#是微软推出的一款完全没面向对象的编程语言,那么对象是什么?在现实生活中人们一提到对象首先想到的就是“情侣”!但是在我们的程序中对象是什么? 在程序中个能够区别于其他事 ...

  3. GIS历史概述与WebGis应用开发技术浅解

    声明:本篇在李晓晖的<杂谈WebGIS>,补充更多的资料说明.基于地图二次开发一直断断续续在做,这里算是补充一下基本功把.其实对于前端,WebGis开发都是api,抄demo,改.GIS深 ...

  4. List根据某字段去重,以及compareTo 浅解

    原文链接:https://blog.csdn.net/qq_35788725/article/details/82259013 Collections.sort可对集合进行排序 根据List里面某个字 ...

  5. JVM中GC浅解:垃圾回收的了解

    1.为什么要有GC 没有GC的世界,我们需要手动进行内存管理,但是内存管理是纯技术活,又容易出错.但是我们写码的目的是为了解决业务问题,所以可以把这种纯技术活自动化,当然自动化也是有代价的. 2.垃圾 ...

  6. Vuex state 状态浅解

    对于Vuex中的state里面的理解总是有些欠缺,机制似乎理解了.但是还有很多的不足,在这就先浅谈下自己的理解. vuex 机制中,定义了全局Store,在各个vue组件面的this.$store指向 ...

  7. Rest_framework Serializer 序列化 (含源码浅解序列化过程)

    目录 Rest_framework Serializer 序列化 序列化与反序列化中不得不说的感情纠葛 三角恋之 save/update/create 四角恋之 序列化参数instance/data/ ...

  8. Rest_framework Router 路由器(含SimplyRouter源码浅解)

    目录 Rest_framework Router 路由器 ViewSet结合Router,自动生成url. 将ViewSet注册到Router中,需要三个要素: 关于路由规则,细分有四类: rest_ ...

  9. Java之泛型浅解

    我觉得学习一个东西,首先得从概念上明白它大概是什么? “泛型”就是“参数化类型”,也就是是把类型当成了一种参数.之前我们看到得函数方法比如: public long add(int num1,int ...

随机推荐

  1. P3853 [TJOI2007]路标设置(二分答案)

    -------------------------------- 二分答案的典型题 --------------------------------- 注意一下check和输出就行 --------- ...

  2. vulnhub靶机之DC6实战(wordpress+nmap提权)

    0x00环境 dc6靶机下载地址:https://download.vulnhub.com/dc/DC-6.zip dc6以nat模式在vmware上打开 kali2019以nat模式启动,ip地址为 ...

  3. 【笔记】机器学习 - 李宏毅 - 4 - Gradient Descent

    梯度下降 Gradient Descent 梯度下降是一种迭代法(与最小二乘法不同),目标是解决最优化问题:\({\theta}^* = arg min_{\theta} L({\theta})\), ...

  4. 判定PDF文件是否能够正常打开

    下载iTextSharp.dll using iTextSharp.text.pdf; PdfReader reader = new PdfReader(strPath + "\\" ...

  5. ZViZbsPBdS

    第一步:请在下方输入框中输入你要搬家的博客个人主页地址,需要注意格式: SegmentFault:https://segmentfault.com/u/xxxx 掘金:https://juejin.i ...

  6. I Hate It HDU - 1754 线段树 单点修改+区间最值

    #include<iostream> #include<cstring> using namespace std; ; int m,n,p; struct node{ int ...

  7. JAVA鼠标监听器

    package howework_07; public class Example9_10 { public static void main(String args[]) { WindowMouse ...

  8. LaTeX技巧001:LaTeX中输入大小写罗马数字

    \uppercase\expandafter{\romannumeral20} \romannumeral20 前者将输入大写罗马数字20, 后者将输入小写罗马数字20.

  9. c语言中 char* 和 unsigned char* 的区别浅析(转)

    原文:https://blog.csdn.net/guotianqing/article/details/77341657 背景最近在项目中遇到了一个编译警告,是因为定义的变量为char[],而在使用 ...

  10. Tomcat中相关配置详解

    tomcat的相关配置 server.xml <Server port="8005" shutdown="SHUTDOWN"> <!-- 属性 ...