今天来做一款路飞打坚果的动图演示
先来搭建游戏框架

# coding:utf-8
import pygame, sys, time
from pygame.locals import*
# 初始化pygame环境
pygame.init()
# 设置一个长为1250,宽为700的窗口
canvas = pygame.display.set_mode((1200, 600))
canvas.fill([255, 255, 255])
# 设置窗口标题
pygame.display.set_caption("路飞大战坚果")

这样游戏框架就搭建完成了
接下来是图片的加载

# 背景图片加载
bg = pygame.image.load('img/bg3.jpg')
bg_end = pygame.image.load('img/ZombiesWon.png')
# 坚果图片加载
nut1 = pygame.image.load('img/plants/TallNut.gif')
nut2 = pygame.image.load('img/plants/TallnutCracked1.gif')
nut3 = pygame.image.load('img/plants/TallnutCracked2.gif')
# 其他植物图片加载
plant1 = pygame.image.load('img/plants/IceShroom.gif')
plant2 = pygame.image.load('img/plants/HypnoShroom.gif')
plant3 = pygame.image.load('img/plants/SunFlower.gif')
plant4 = pygame.image.load('img/plants/WallNut.gif')

图片加载后是动画的演示

# 路飞的三种状态:移动、攻击、站立
MOVE = 0
STAND = 1
ATTACK = 2
# 将所有动画帧图片对象存储到列表中
# 路飞移动图片数组
luffyM = []
for i in range(1, 14):if i < 10:luffyM.append(pygame.image.load('img/move/0' + str(i) + '.jfif'))else:luffyM.append(pygame.image.load('img/move/' + str(i) + '.jfif'))
# 路飞站立图片数组
luffyS = []
for i in range(21, 27):luffyS.append(pygame.image.load('img/stand/' + str(i) + '.jfif'))
# 路飞攻击图片数组
luffyA = []
for i in range(31, 42):luffyA.append(pygame.image.load('img/attack/' + str(i) + '.png'))

动画演示后是事件的处理

def handleEvent():for event in pygame.event.get():if event.type == pygame.QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:pygame.quit()sys.exit() 

之后是路飞类的定义

# 定义路飞类
class Luffy():def __init__(self):self.x = 1000self.y = 210self.width = 180self.height = 180self.state = MOVEself.index = 0self.frame = luffyM[self.index]#创建画路飞和路飞移动方法def paint(self):canvas.blit(self.frame, (self.x, self.y))def move(self):self.x -= 10#路飞播放动画方法def animation(self):if self.state == MOVE:self.frame = luffyM[self.index % 13]self.move()elif self.state == STAND:self.frame = luffyS[self.index % 6]elif self.state == ATTACK:self.frame = luffyA[self.index % 11]self.index += 1

坚果类的定义

#定义坚果类
class Tallnut():def __init__(self):self.x = 500self.y = 250self.width = 83self.height = 119self.life = 66self.frame = nut1#定义画坚果的方法def paint(self):canvas.blit(self.frame,(self.x, self.y))

检测碰撞(即路飞打坚果)

#创建check方法进行攻击检测
def check(zom, nut):if zom.x <= (nut.x + nut.width/2):zom.state = ATTACK#坚果被攻击后的变化if nut.life > 44:nut.frame = nut1elif nut.life > 22:nut.frame = nut2elif nut.life > 0:nut.frame = nut3elif nut.life == 0 and zom.x > 200:zom.state = MOVEreturnnut.life -= 1

创建对象

# 创建路飞l1对象
l1 = Luffy()
#创建坚果nut对象
nut = Tallnut()

最后是循环了

while True:#画出背景、路飞移动canvas.blit(bg, (0, 0))#画出坚果对象if nut.life > 0:nut.paint()#切换路飞的状态if l1.x <= 200:l1.state = STANDcanvas.blit(bg_end,(500,50))l1.paint()l1.animation()#调用check方法check(l1,nut)time.sleep(0.07)pygame.display.update()handleEvent()

Python游戏编程——路飞大战坚果相关推荐

  1. 小学生python游戏编程2----飞机大战1

    小学生python游戏编程2----飞机大战1 前言 主要设计 1.界面设计 2.动态背景 3.记分的实现 4.射击游戏功能的实现 5.声音的实现 应用知识点 1.python知识点 1.1 角色创建 ...

  2. 小学生python游戏编程arcade----坦克大战2

    小学生python游戏编程arcade----坦克大战2 前言 多摄象头显得分,title地图加载,精灵分层管理,移动精灵 1.提示框制作 1.1养眼绿色 1.2 画距形提示框 1.3 效果图 1.4 ...

  3. 小学生python游戏编程arcade----坦克大战4

    小学生python游戏编程arcade----坦克大战4 前言 坦克大战4 1.1 每单元英语单词学完升级效果 1.2 单词调用及敌坦克随机问题 1.3 效果图 1.4 代码实现 源码获取 前言 接上 ...

  4. pygame 学习笔记(4)推荐一本python入门游戏书籍《PYTHON游戏编程入门》

    简介 <PYTHON游戏编程入门>(More Python Programming for the Absolute Beginner)是 S.Harbour写的一本入门书籍,基于pyga ...

  5. python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点,这也是由于游戏本身的火热造成的结果,所以每年都有很多人在关注着游戏编程.介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家,希望对想要了解和学习游戏编程的朋友能 ...

  6. python游戏编程书籍-《Python游戏编程快速上手》一1.3 如何使用本书

    本节书摘来异步社区<Python游戏编程快速上手>一书中的第1章,第1.3节,作者: [美]Al Sweigart(斯维加特) 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区& ...

  7. python游戏编程入门-python游戏编程入门

    <Python游戏编程入门> 这些文章负责整理在这本书中的知识点.注意事项和课后习题的尝试实现. 并且对每一个章节给出的最终实例进行分析和注释. 初识pygame:pie游戏 pygame ...

  8. python游戏编程入门 免费-python游戏编程入门 python游戏编程入门课

    python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...

  9. 《Python游戏编程快速上手》第十四章----凯撒密码

    <Python游戏编程快速上手>的第十二章主要讲了笛卡尔坐标系的基本数学知识,我就不重现了:然后第十三章主要是一个笛卡尔坐标系的小应用,这个小应用也是非常简单的,所以我就不重现了. 今天主 ...

最新文章

  1. 什么是Sprint?
  2. 风水学是天气预测模型
  3. esp8266手册_ESP8266_前言
  4. Windows 10企业批量部署实战之WDS安装
  5. native数据类型 react_react-native中的请求数据
  6. 【开发环境】PyCharm 配置 GitHub ( 在 PyCharm 中向 GitHub 提交代码 )
  7. ubuntu之路——day8.4 Adam自适应矩估计算法
  8. 文件服务器高可用群集,fastDFS文件服务器(三):集群和高可用环境篇
  9. 笔试训练第三次知识点汇总
  10. P、NP、NPC(NP完全问题)、NP-hard问题概述
  11. 推荐几份能够帮助你学习 CSS3 的实用帮助手册
  12. URLConnection和HttpURLConnection类
  13. 计算机网络email服务的配置,计算机网络邮件配置实验报告
  14. kettle linux下的目录怎么看_Linux系统各目录下指令解析
  15. 如何用python设计一个计算器程序_如何使用 50 行 Python 代码制作一个计算器
  16. 等级保护三级和二级有什么区别?
  17. 短视频素材:17个视频网站,涨粉必上热门
  18. 计算机中常用术语CAD是指,计算机常用术语CAD的含义是
  19. 2020年节假日JSON,全年日期对应的上班日、周末、节假日
  20. 手机APP爬虫技巧(Fiddler+雷电模拟器进行APP抓包)

热门文章

  1. java笔记_继承(八)
  2. 手机版百度m.baidu.com被运营商劫持到xjcf168.com
  3. MQTT libary之发布和订阅之开发秘籍
  4. C++游戏分析与破解方法介绍
  5. 简单数据预测—使用Python训练回归模型并进行预测(转自蓝鲸网站分析博客)
  6. ECLIPSE快捷键大全 掌握了这个看着你就牛
  7. Ubuntu Python graphviz 出现 dot 错误
  8. 使用Lsyncd同步本地文件夹
  9. 用syncML同步备份通讯录
  10. c语言double保留2位小数0,c语言 double类型保留小数问题