pgzero所有知识点详解

这篇具有很好参考价值的文章主要介绍了pgzero所有知识点详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 什么是pgzero?

pgzero的安装

4,正式开始!

1,调整背景色

2,导入角色

3,鼠标事件

5,按键事件

6,刷新功能

1,角色属性

2,功能介绍

7,全局变量and局部变量

1,全局变量与局部变量的区别

2,全局变量如何在功能内使用

8,角色功能及窗口功能

1,角色功能

2,窗口功能

9,结尾


 

pgzero所有知识点详解

 什么是pgzero?

python在各个领域都有着丰富的第三方库,pygame是python在游戏领域的应用库,可以用来开发各种不同的游戏。但是对于初学者来说,还是存在一定的门槛。

而今天要和大家分享的pgzero(pygame zero)是在pygame基础上做了进一步的封装,使得设计一款游戏十分的方便,特别适合少儿编程领域的教学, 与scratch相得益彰。

pgzero的安装

pip install pygame
pip install pgzero

 这个也就是我们所说的:终端下载pgzero库

安装完后,新建一个文本文档。打开,输入下列代码:

import pgzrun
pgzrun go()

pgzero所有知识点详解

将下面名字改为.py,编码改为UTF-8

pgzero所有知识点详解

再点击保存

找到这个文件,点击:pgzero所有知识点详解

你就会发现:pgzero所有知识点详解

4,正式开始!

1,调整背景色

实例代码:

import pgzrun
def draw():
   screen.fill((225,225,225))
pgzrun.go()
        

2,导入角色

实例代码:

import pgzrun
zy = Actor('zy.png')
def draw():
   zy.draw()
pgzrun.go()
#也可以用draw()功能画出背景图

注意:必须要在文件同一个目录下新建一个images文件夹,角色图片(必须都是png格式)都放里面!

3,鼠标事件

1,基础代码:

import pgzrun
def on_mouse_down():
    #代码
pgzrun.go()

2,获取鼠标位置:

import pgzrun
def on_mouse_down(pos):
    print(pos)
pgzrun.go()

3,鼠标按下左键 or 右键:

import pgzrun
def on_mouse_down(button):
    print(button)
pgzrun.go()

而输出的结果是:

mouse.LEFT#左键
#或者是:
mouse.RIGHT#右键

5,按键事件

1,功能

按键按下功能是on_key_down(),按键松开功能是on_key_up()(也可以写在update()(刷新游戏界面功能)里面)

2,数字按键

数字按键在pgzero的表达方式是:keyboard.K_1~8

3,字母按键

字母按键的表示方法是:keyboard.K_A~Z

4,功能按键

功能按键的表示方法是:keyboard.K_(功能键(大写))

5,按下按键,发生事件

示例代码:

import pgzrun
def on_key_down():
    if keyboard.K_1:
        #代码
pgzrun.go()

6,刷新功能

1,角色属性

说刷新功能之前,先给你们讲一下角色的属性。

角色的属性有这几类:方位类,图片类等

方位类的属性有:x(x坐标),y(y坐标),bottom(底部线),top(顶部线),left(左边线),right(右边线)

图片类的属性有:image(图片)

2,功能介绍

刷新功能就是update()功能。他就像while循环一样,被用于竞速类游戏的障碍移动等方面。程序调用一次update()功能就会再调用一次draw()功能哦!

代码示范:

import pgzrun
zy = Actor('zy.png')
def draw():
    zy.draw()
def update():
#让角色zy上升
    zy.x += 3
pgzrun.go()

7,全局变量and局部变量

实例代码:

p1 = '手机'
def home():
    p2 = '座机'
home()

1,全局变量与局部变量的区别

假如说一个程序里有一个def功能,那么全局变量就是在def功能外的一个变量。也就是示例代码里的p1变量。局部变量是在功能内的变量,只能在功能内使用。也就是示例代码里的p2变量。

2,全局变量如何在功能内使用

如果将示例代码更改一下:

p = '手机'
def home():
    p = ‘座机’
home()
print(p)
#那么输出结果是:
#手机
#如何不在home功能内使用print语句也能输出 座机 呢?

现在都看到要求了吧。如果功能内要使用功能外的变量,那么就要在def语句下面的一行输入:

global (全局变量)

这样,全局变量p的值就被更改为 座机 了,输出的东西也是 座机 。

注意:这个知识点一定要记住,因为这个知识将会很常见。

8,角色功能及窗口功能

1,角色功能

角色功能是对于角色创建的功能,比如角色碰到另一个角色以及角色碰到了游戏窗口里的一个点。

1,colliderect()功能

colliderect()功能是判断角色是否与另一个角色相撞。

示例代码:

import pgzrun
player1 = Actor('1.png',[400,300])
player2 = Actor('2.png',[400,250])
def draw():
    player1.draw()
    player2.draw()
if player1.colliderect(player2):#角色1.colliderect(角色2)(也可以这样:角色1.colliderect(角色2))
   exit()#退出游戏

2,collidepoint()功能

collidepoint()功能是判断角色是否一个点碰撞。

示例代码:

import pgzrun
player1 = Actor('1.png)

2,窗口功能

9,结尾

分享一个用pygame做的代码吧文章来源地址https://www.toymoban.com/news/detail-454100.html

#友情提示:请不要更改任何代码,谢谢!

import pgzrun


WIDTH = 1136
HEIGHT = 640
TITLE = 'P1 VS P2'
global bossX
bossX = 10
global zyX
zyX = 10
bg = Actor('bg.png')
zy = Actor('zy.png', [200, 420])
boss = Actor('boss.png', [900, 420])

def draw():
    bg.draw()
    zy.draw()
    boss.draw()
    # 写角色名字
    screen.draw.text('P1:' + str(zyX), [180, 30],fontsize=30,color='red')
    screen.draw.text('P2:' + str(bossX), [850, 30],fontsize=30,color='blue')
    #判断胜负
    if bossX == 0:
        print('P1玩家获胜')
        exit()
    elif zyX == 0:        
        print('P2玩家获胜')
        exit()
def update():
    # 判断壮猿移动
    if keyboard.K_A:
        zy.x = 200
    if keyboard.K_D:
        zy.right = 558
    # 判断boss移动
    if keyboard.K_LEFT:
        boss.left = 548
    if keyboard.K_RIGHT:
        boss.x = 900

    # 判断壮猿攻击、防御状态时,切换图片
    if keyboard.K_W:
        zy.image = 'zy1.png'
    elif keyboard.K_S:
        zy.image = 'zy2.png'
    else:
        zy.image = 'zy.png'
    # 判断boss攻击、防御状态时,切换图片
    if keyboard.K_UP:
        boss.image = 'boss1.png'
    elif keyboard.K_DOWN:
        boss.image = 'boss2.png'
    else:
        boss.image = 'boss.png'

    # 判断壮猿是否和boss发生碰撞
    if zy.colliderect(boss):
        if zy.image == 'zy1.png' and boss.image == 'boss.png':
            boss.x += 250
            global bossX
            bossX -= 1
        if boss.image == 'boss1.png' and zy.image == 'zy.png':
            zy.x -= 250
            global zyX
            zyX -= 1
        if zy.image == 'zy1.png' and boss.image == 'boss1.png':
            zy.x -= 250
            boss.x += 250
pgzrun.go()
#行数自己数!

到了这里,关于pgzero所有知识点详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 轻松掌握K8S目录持久卷PV/PVC的kubectl操作知识点04

    1、介绍 在docker中可以将容器中的目录挂载出来,在k8s中pod可以部署在不同节点,假如该节点的机器宕机了,k8s可能就会将此Pod转移到其他机器,就不是原先的机器了。k8s有自己的一套挂载方案,如下图所示, 原理为将所有节点的挂载的目录统一抽象管理为叫做 存储层的概念

    2024年02月12日
    浏览(47)
  • 【SciSpace】人工智能太强大了!文献阅读版ChatGPT,一站式科研文献阅读工具 - 知识点目录

    首先需要上传PDF 网站支持中文问答 Explain math table - 可以询问表格或者公式信息

    2024年02月16日
    浏览(49)
  • 【知识点扫盲】什么是域名以及域名解析

    网域名称(英语:Domain Name,简称:Domain),简称域名、网域,是由一串用点分隔的字符组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。 顶级域名分为三类:一、国家和地区顶级域名,二、是通用顶级域名,三、新顶级域名。 一个域

    2024年02月07日
    浏览(53)
  • 【百科】《DALL·E 2 vs Midjourney vs Stable Diffusion|AI图像工具对比》- 知识点目录

    Midjourney DALL·E 2 StableDiffusion 需要收费 如果出现 “区域限制” 的情况,请尝试清除缓存后并使用全局代理访问; Stability-AI/stablediffusion DreamStudio 示例prompt: 中文提示 英文提示 提问备忘 英文提示

    2024年02月12日
    浏览(47)
  • 详解MVCC相关知识点

    前言:学习前,先叙述mysql相关基础知识,一步步了解mysql底层机制。 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。 √: 可能出现    ×: 不会出现

    2024年02月06日
    浏览(43)
  • Spring AOP知识点详解

    Spring AOP是 Spring最核心的能力,那到底什么是AOP呢,今天了不起带大家了解一下。 AOP(Aspect Oriented Programming): 面向切面编程 ,是OOP(面向对象编程)的一个延续,其和OOP一样,也是一种编程思想,不过AOP是一种横向开发模式。 OOP ,面向对象,允许开发者定义纵向的关系,但并适

    2024年02月16日
    浏览(57)
  • 【详解】C语言冷门知识点之--位段

    下面是维基百科对位段的解释:   位段(或称“位域”,Bit field)为一种数据结构,可以把数据以位的形式紧凑的储存,并允许程序员对此结构的位进行操作。这种数据结构的好处: 可以使数据单元节省储存空间,当程序需要成千上万个数据单元时,这种方法就显得尤为重

    2024年02月16日
    浏览(41)
  • 【大数据】Hudi 核心知识点详解(二)

    😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!! Hudi 核心知识点详解(一) Hudi 核心知识点详解(二) Hudi 提供了 Hudi 表的概念,这些表支持

    2024年02月03日
    浏览(39)
  • 【Unity知识点详解】自定义程序集

            今天来介绍一下Unity中的自定义程序集。在项目开发中我们经常接触到第三方插件的程序集,如DOTween、Newtonsoft.Json等。         使用自定义程序集有这么几个好处: 方便代码的的复用。当某一功能模块需要在多个项目中重复使用时,可以将代码编译成程序集,将程

    2024年02月19日
    浏览(43)
  • Springboot实体类entity相关知识点详解

    目录 entity实体类相关知识点详解:       解释1:上面代码使用的注解是 Lombok 提供的注解,用于简化实体类的开发。       解释2:属性的注释自动生成问题:                解释3:java序列化反序列化,实体类实现Serializable接口:                     java序列化和反

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包