Pygame游戏之 豌豆射手
Pygame游戏(6)
这是一个让豌豆射手不断左右摇摆,按下空格键后发射豌豆的小游戏框架
首先,我们先准备好一个带背景图的窗口,做好准备工作(解释在代码行的后面)
import pygame,sys
from pygame.locals import *pygame.init() #初始化模块
pygame.mixer.init() #初始化音乐播放器size = width,height = 800,460 #窗口的大小screen = pygame.display.set_mode((size)) #创建窗口
pygame.display.set_caption("豌豆射手") #设置标题pygame.mixer.music.load('Loonboon.mp3') #加载背景音乐
pygame.mixer.music.set_volume(0.5) #设置音量
pygame.mixer.music.play(loops=-1) #循环播放bg = pygame.image.load('photo/bg1.jpg') #加载背景图片
bgpos = bg.get_rect() #获取背景图片的外接矩形
while True:for event in pygame.event.get(): #获取事件列表if event.type == QUIT: #按下窗口右上角的关闭按钮sys.exit() #退出elif event.type == pygame.KEYDOWN: #按下键盘if event.key == K_ESCAPE: #按下ESC键sys.exit() #退出screen.blit(bg,bgpos) #绘制背景图片到窗口上pygame.display.update() #刷新屏幕
这样,一个带背景图和循环播放音乐的窗口就创建好啦
接下去我们把豌豆射手加入进来
1、我们先知道豌豆射手是怎么左右摇摆的
这里有12张图片,控制一定的帧数,不断的从第一张切换到第十二张,就会产生动画的效果啦
注释在代码行的后面
import pygame,sys,time
from pygame.locals import *class Bullet(pygame.sprite.Sprite): #继承精灵类def __init__(self):pygame.sprite.Sprite.__init__(self) #初始化精灵position = [230,145] #子弹的发射位置speed = [3,0] #子弹的速度self.img = pygame.image.load('photo/sun_bullet.png') #加载子弹的图片self.rect = self.img.get_rect() #获取子弹的外接矩形self.rect.center = position #把子弹的中心坐标设置为positionself.speed = speeddef move(self):self.rect = self.rect.move(self.speed) #让子弹以速度speed移动def main():pygame.init() #初始化模块pygame.mixer.init() #初始化音乐播放器size = width,height = 800,460 #窗口的大小screen = pygame.display.set_mode((size))#创建窗口pygame.display.set_caption("豌豆射手") #设置标题pygame.mixer.music.load('Loonboon.mp3') #加载音乐pygame.mixer.music.set_volume(0.5) #设置音量pygame.mixer.music.play(loops=-1) #循环播放bg = pygame.image.load('photo/bg1.jpg') #加载背景图片bgpos = bg.get_rect() #获取背景图片的外接矩形nownum = 1 #记录图片的张数i = 0 #控制切换图片的时间间隔group = pygame.sprite.Group() #创建精灵组while True:#每加5次就切换豌豆射手的图片(这是一个非常快的过程)i = i + 1 if i%5 == 0:nownum = nownum + 1if nownum == 13: #如果达到了最后一张nownum = 1 #重新回到第一张#通过str(nownum)不断的变化,加载不同序号的图片img = pygame.image.load('photo/Pea_Pitcher/' + str(nownum) + '.png')#把豌豆射手的中心设在在140,110位置pos = img.get_rect().center = 140,110 for event in pygame.event.get(): #获取事件if event.type == QUIT: #按下窗口的关闭按钮sys.exit() #退出if event.type == pygame.KEYDOWN:#按下键盘if event.key == pygame.K_ESCAPE:#按下ESC键sys.exit() #退出if event.key == pygame.K_SPACE: #按下空格键group.add(b) #往精灵组里面添加子弹b = Bullet() #实例化子弹screen.blit(bg,bgpos) #绘制背景screen.blit(img,pos) #绘制豌豆射手#key = pygame.key.get_pressed() 第二种按下键盘空格实现发射的方法#if key[K_SPACE]:#group.add(b)for bullet in group.sprites(): #遍历精灵组bullet.move() #让子弹移动screen.blit(bullet.img,bullet.rect) #绘制子弹pygame.time.Clock().tick(60) #控制帧速率pygame.display.update() #刷新屏幕main()
这里用到了精灵和精灵组,具体的解释在接下去的博客会陆续讲解,这里大家只要简单的把精灵组看作成一个列表就可以了,把子弹对象放进列表,并绘制到屏幕上
好了,是不是觉得小有意思呢
Pygame游戏之 豌豆射手相关推荐
- Pygame游戏之 愤怒的小鸟
Pygame游戏(7) 让我们用键盘控制小鸟躲避成群结队的绿皮猪 当小鸟与绿皮猪发生碰撞后,会进入一个新的界面,并且有按钮让玩家重玩(动态图稍大,加载比较慢) 首先我们还是老步骤 准备好一个基本的游戏 ...
- Pygame游戏之 合金弹头
Pygame游戏(5) 这是一个让坦克不断切换形态,用户通过按下键盘的上下左右键来控制坦克的方法 首先,把窗口的基本框架搭好 import pygame,sys from pygame.locals ...
- python植物大战僵尸 豆约翰,python植物大战僵尸十三之豌豆射手摆放
import pygame from pygame.locals import * import sys from Bullet import Bullet from Peashooter impor ...
- CE-植物大战僵尸-子弹速度-豌豆射手
针对豌豆射手 内存地址 假设植物的冷却刷新用0和1 来表示 处于冷却状态,首次刷新0,点击射手刷新状态时,再次刷新1,010101不间断刷新,找到其中一个地址,当冷却时为0,刷新时为1,点击加入地址栏 ...
- scratch中的植物大战僵尸之豌豆射手收集豌豆
这是一个简单的案例,主要的是运用植物大战僵尸里面的素材去做到一个好玩的小游戏,这个游戏的概念是教会小学生怎样运用一些变量还有数学中的知识,例如有负数和坐标的概念,下面我来展示一下我的这个案例: 有的小 ...
- CE修改植物大战僵尸豌豆射手的射速
首先我们要找到吐出豆豆的地址.当一个豌豆射手吐出一个豆豆后,豆豆距离僵尸的距离会逐渐减少.这个就是我们ce扫描时的突破口.由于豆豆的速度比较快我们扫描起来不方便,这里改变游戏的速度,方便我们扫描.我们 ...
- 豌豆射手-第13届蓝桥杯Scratch选拔赛真题精选
[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第72讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...
- 第5课python植物大战僵尸-添加豌豆射手类
提示:第5课python植物大战僵尸-添加豌豆射手类 文章目录 摘要 一.豌豆射手类 Peashooter 1.import导入pygame模块 2.定义一个豌豆射手的类型,不用继承任何的类 3.定义 ...
- 【Unity植物大战僵尸】豌豆射手子弹发射逻辑(十三)
目录 23.子弹导入及其初始化 24.子弹逻辑完善 测试 23.子弹导入及其初始化 导入子弹素材 在Bullet游戏对象上添加相关组件 既然子弹具有碰撞体,那么僵尸也得有碰撞体 新建Zombie的Ta ...
最新文章
- nuxt 如何引入js_nuxtjs如何在单独的js文件中引入store和router
- overflow与min-width
- Python【Python基础】
- .net程序调试一:快速定位异常
- 1242 Rescue BFS
- UFLDL深度学习笔记 (三)无监督特征学习
- 计算机网络---物理层
- mysql可以打开dbt么_dbt 基本试用
- 代替Excel上载的方法
- 最新数据显示,全国有580万人被限制乘坐高铁,大家怎么看?
- CATia对计算机配置要求,【2人回答】求CATIA对电脑的详细配置要求-3D溜溜网
- Hbase Memstore刷新方式与Region的数目上限
- type与instance区别
- matlab做线性规划图
- 《互联网的那些事之时代》第三回:滟滟随波千万里,何处春江无月明
- 来看看大牛 justjavac的编程之路:「懒惰」是程序员最大的美德
- 链接了GitHub的文件,在Pycharm不同颜色的不同含义
- matlab 收敛速度,BP网络的收敛速度和设计步骤【转】
- 中移物联网采购4G行车记录仪
- JavaScript——Web APIs