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游戏之 豌豆射手相关推荐

  1. Pygame游戏之 愤怒的小鸟

    Pygame游戏(7) 让我们用键盘控制小鸟躲避成群结队的绿皮猪 当小鸟与绿皮猪发生碰撞后,会进入一个新的界面,并且有按钮让玩家重玩(动态图稍大,加载比较慢) 首先我们还是老步骤 准备好一个基本的游戏 ...

  2. Pygame游戏之 合金弹头

    Pygame游戏(5) 这是一个让坦克不断切换形态,用户通过按下键盘的上下左右键来控制坦克的方法 首先,把窗口的基本框架搭好 import pygame,sys from pygame.locals ...

  3. python植物大战僵尸 豆约翰,python植物大战僵尸十三之豌豆射手摆放

    import pygame from pygame.locals import * import sys from Bullet import Bullet from Peashooter impor ...

  4. CE-植物大战僵尸-子弹速度-豌豆射手

    针对豌豆射手 内存地址 假设植物的冷却刷新用0和1 来表示 处于冷却状态,首次刷新0,点击射手刷新状态时,再次刷新1,010101不间断刷新,找到其中一个地址,当冷却时为0,刷新时为1,点击加入地址栏 ...

  5. scratch中的植物大战僵尸之豌豆射手收集豌豆

    这是一个简单的案例,主要的是运用植物大战僵尸里面的素材去做到一个好玩的小游戏,这个游戏的概念是教会小学生怎样运用一些变量还有数学中的知识,例如有负数和坐标的概念,下面我来展示一下我的这个案例: 有的小 ...

  6. CE修改植物大战僵尸豌豆射手的射速

    首先我们要找到吐出豆豆的地址.当一个豌豆射手吐出一个豆豆后,豆豆距离僵尸的距离会逐渐减少.这个就是我们ce扫描时的突破口.由于豆豆的速度比较快我们扫描起来不方便,这里改变游戏的速度,方便我们扫描.我们 ...

  7. 豌豆射手-第13届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第72讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  8. 第5课python植物大战僵尸-添加豌豆射手类

    提示:第5课python植物大战僵尸-添加豌豆射手类 文章目录 摘要 一.豌豆射手类 Peashooter 1.import导入pygame模块 2.定义一个豌豆射手的类型,不用继承任何的类 3.定义 ...

  9. 【Unity植物大战僵尸】豌豆射手子弹发射逻辑(十三)

    目录 23.子弹导入及其初始化 24.子弹逻辑完善 测试 23.子弹导入及其初始化 导入子弹素材 在Bullet游戏对象上添加相关组件 既然子弹具有碰撞体,那么僵尸也得有碰撞体 新建Zombie的Ta ...

最新文章

  1. nuxt 如何引入js_nuxtjs如何在单独的js文件中引入store和router
  2. overflow与min-width
  3. Python【Python基础】
  4. .net程序调试一:快速定位异常
  5. 1242 Rescue BFS
  6. UFLDL深度学习笔记 (三)无监督特征学习
  7. 计算机网络---物理层
  8. mysql可以打开dbt么_dbt 基本试用
  9. 代替Excel上载的方法
  10. 最新数据显示,全国有580万人被限制乘坐高铁,大家怎么看?
  11. CATia对计算机配置要求,【2人回答】求CATIA对电脑的详细配置要求-3D溜溜网
  12. Hbase Memstore刷新方式与Region的数目上限
  13. type与instance区别
  14. matlab做线性规划图
  15. 《互联网的那些事之时代》第三回:滟滟随波千万里,何处春江无月明
  16. 来看看大牛 justjavac的编程之路:「懒惰」是程序员最大的美德
  17. 链接了GitHub的文件,在Pycharm不同颜色的不同含义
  18. matlab 收敛速度,BP网络的收敛速度和设计步骤【转】
  19. 中移物联网采购4G行车记录仪
  20. JavaScript——Web APIs

热门文章

  1. 读《致在大学里感到迷茫的你》有感
  2. VBA(一)操作PPT中的图片和表格
  3. 这款上线6年火爆应用即将消失
  4. 华为软件测试工程师分享的自动化测试经验,纯干货!
  5. 使用html2Canvas、JsPDF分页打印(分享)
  6. java毕业设计房屋租赁系统Mybatis+系统+数据库+调试部署
  7. 1613-3-傅溥衍 总结《2016年10月11日》【连续第十一天总结】
  8. ANIMATION动画的学习小总结
  9. 安卓设备互相投屏_一键电视投屏
  10. 米拓+php.ini_米拓