pygame代码大全(含用法,格式)!!!

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

目录 

第一节 pygame基础... 3

一、pygame框架... 3

1、基本框架:... 3

2、导库... 3

3、初始化... 3

4、设置画布大小... 3

5、设置窗口名称... 4

6、填充颜色... 4

7、更新画布... 4

二、添加素材... 4

1、添加图片... 4

坐标系... 5

2、pygame加载图片... 5

3、pygame绘制图片... 5

4、pygame缩放图片的方法... 6

5、pygame显示图片的方法... 6

第二节 pygame中的事件... 7

事件:能够产生影响的操作叫做事件。... 7

一、鼠标事件... 7

1、MOUSEBUTTONDOWN事件... 7

2、MOUSEBUTTONDOWN事件使用方法... 7

3、MOUSEBUTTONUP事件... 7

4、MOUSEBUTTONUP事件使用方法... 8

二、键盘事件... 8

1、键盘事件KEYDOWN.. 8

2、KEYDOWN事件使用方法... 8

3、键盘事件KEYUP. 8

4、KEYUP事件使用方法... 9

5、精确的检测某个按键的方法... 9

三、退出事件QUIT. 10

1、QUIT事件语法如下:... 10

2、QUIT事件使用方法... 11

第三节 pygame中的图像... 12

一、加载图片... 12

二、缩放图片... 12

三、绘制图片... 12

四、rgb三原色... 12

五、图像拖拽... 12

1、矩形和点的碰撞检测... 13

2、获取鼠标点位置... 13

3、MOUSEMOTION事件... 13

4、MOUSEMOTION事件的使用方法... 13

5、选中图形跟随鼠标移动... 14

6、固定图形-MOUSEBUTTONUP事件... 14

7、MOUSEBUTTONUP事件使用方法... 14

8、完整代码展示... 15

第一节 pygame基础

一、pygame框架

1、基本框架:

import pygame                                   (导库)

pygame.init()                                    (初始化)

screen = pygame.display.set_mode((800,600))    (设置大小)

pygame.display.set_caption("可多的王国")            (设置窗口名称)

while True:                                        (主循环)

    king.quit()                                    (退出)

    screen.fill((255,255,255))                    (设置颜色)

    pygame.display.update()                        (更新画布)

2、导库

格式:import pygame,king

import表示导入、pygame表示游戏库、king是国王库

pygame是游戏库,会使用它做很多小游戏

king是国王使用的库

备注:库名之间用逗号隔开,当然也可以继续添加其他的库

3、初始化

格式:pygame.init()

打开游戏都有初始化的过程,相当于告诉电脑:"我要用pygame制作游戏啦!"

4、设置画布大小

格式:screen = pygame.display.set_mode((800,600))

第一个参数(800, 600)表示画布的大小,800表示画布的宽,600表示画布的高。注意是放在括号里。

变量screen代表设置的画布

注意是双扩号

画布大小的单位是像素

5、设置窗口名称

格式:pygame.display.set_caption("可多的王国")

注意:括号内是字符串,字符串需要使用双引号

6、填充颜色

格式:screen.fill((255,255,255))

这里使用的是变量screen,而不是pygame

(255,255,255)RGB颜色值,需要使用扩号

RGB颜色结构:

(num1,num2,num3)

num10-255的整数,代表Rred-红色),数字越大,颜色中红色成分越多

num20-255的整数,代表Ggreen-绿色),数字越大,颜色中绿色成分越多

num30-255的整数,代表Bblue-蓝色),数字越大,颜色中蓝色成分越多

7、更新画布

格式:pygame.display.update()
我们需要让画布一直显示,所以需要放进循环里

二、添加素材

1、添加图片

添加图片两步走:

1)加载图片 image = pygame.image.load("图片名.图片格式")

2)绘制图片 screen.blit(image,(100, 100))

这里的screenpygame的画布,使用screen.blit()方法就可以将画布绘制到画布上,其中image是加载的图片,(100,100)是绘制的位置。

坐标系

pygame的坐标系是以左上角为原点,坐标为(0,0)

横轴(X轴)向右坐标依次变大,纵轴(Y轴)向下坐标依次变大。

坐标系图:

 文章来源地址https://www.toymoban.com/news/detail-457280.html

2、pygame加载图片

格式:变量名=pygame.image.load("图片名称.图片格式")

图片名称需要用字符串的形式,而且需要带上图片的格式

3、pygame绘制图片

格式:画布名称.blit(绘制对象,(坐标x,坐标y))

注意:坐标需要用括号括起来

绘制图片语句要放在程序主循环pygame.display.update()之前

绘制多张图片时,先绘制的对象在下面,后绘制的对象在上面。如果坐标重合,后绘制的对象遮挡先绘制的对象

4、pygame缩放图片的方法

格式:变量名=pygame.transform.scale(缩放对象,(宽度,高度))

参数宽度和高度表示缩放后的宽度和高度,需要用括号括起来

这里的缩放对象是指通过pygame.image.load()方法加载过图片的对象

5、pygame显示图片的方法

缩放根据需要选择是否缩放,不是必要步骤

img1=pygame.image.load("图片名称.图片格式")

img2=pygame.transform.scale(img1,(宽度,高度))

screen.blit(img2,(坐标x,坐标y))

pygame.display.update()

第二节 pygame中的事件

事件:能够产生影响的操作叫做事件。

一、鼠标事件

概念:用鼠标控制的事件,我们称之为鼠标事件

1、MOUSEBUTTONDOWN事件

检测鼠标按键按下:

event.type == pygame.MOUSEBUTTONDOWN

鼠标事件通常通常作为if条件语句中的条件。

MOUSEBUTTONDOWN全部都是大写。

2、MOUSEBUTTONDOWN事件使用方法

#导库

import pygame,sys

......

while True:

    for event in pygame.event.get():               #循环检测

        if event.type == pygame.KEYDOWN:          #检测键盘按键按下

            print("这是键盘事件")

        elif event.type == pygame.MOUSEBUTTONDOWN:  #检测鼠标按下

            print("这是鼠标事件")         #执行语句

3、MOUSEBUTTONUP事件

检测鼠标按键按下:

event.type == pygame.MOUSEBUTTONUP

鼠标事件通常通常作为if条件语句中的条件。

MOUSEBUTTONUP全部都是大写。

4、MOUSEBUTTONUP事件使用方法

#导库

import pygame,sys

......

while True:

    for event in pygame.event.get():               #循环检测

        if event.type == pygame.KEYDOWN:          #检测键盘按键按下

            print("这是键盘事件")

        elif event.type == pygame.MOUSEBUTTONUP:  #检测鼠标抬起

            print("这是鼠标事件")         #执行语句

二、键盘事件

概念:用键盘控制角色移动,我们称之为键盘事件

1、键盘事件KEYDOWN

KEYDOWN事件语法如下:

event.type == pygame.KEYDOWN

用途:检测按键是否被按下。

pygame.KEYDOWNKEYDOWN需要大写。

2、KEYDOWN事件使用方法

#导库

import pygame,sys

......

while True:

    for event in pygame.event.get():               #循环检测

        if event.type == pygame.QUIT:          #退出事件判断

            pygame.quit()                  #窗口退出

            sys.exit()                  #系统退出

        elif event.type == pygame.KEYDOWN:  #检测按键按下

            print("已经按下按键")         #执行语句

检测键盘按下作为if语句的条件,按下键盘后的程序作为条件语句的执行语句。

3、键盘事件KEYUP

KEYUP事件语法如下:

event.type == pygame.KEYUP

用途:检测按键是否被抬起。

pygame.KEYUPKEYUP需要大写。

4、KEYUP事件使用方法

#导库

import pygame,sys

......

while True:

    for event in pygame.event.get():               #循环检测

        if event.type == pygame.QUIT:          #退出事件判断

            pygame.quit()                  #窗口退出

            sys.exit()                  #系统退出

        elif event.type == pygame.KEYUP:  #检测按键抬起

            print("已经释放了按键")         #执行语句

检测键盘抬起作为if语句的条件,抬起键盘后的程序作为条件语句的执行语句。

5、精确的检测某个按键的方法

精确的检测某个按键的语法如下:

event.key == pygame.K_按键名 event.type == ord("字符")

例如:检测按键1:event.type == pygame.K_1

检测按键a:event.type == ord("a")

注意:按键名前加大写的K_ord()函数表示取得字符对应的ASCII码。下面三种写法是相等的。

if event.type == pygame.K_a:

if event.type == ord("a"):

if event.type == 97:

ASCII码表如下:

字母

a

b

c

...

x

y

z

ASCII

97

98

99

...

120

121

122

要检测其他的按键,只需要修改下划线后的按键名。常见按键名如下:

 

pygame中的方向键:

方向

方向键代码

K_UP

K_DOWN

K_LEFT

K_RIGHT

#导库

import pygame,sys

......

while True:

    for event in pygame.event.get():               #循环检测

        if event.type == pygame.QUIT:          #退出事件判断

            pygame.quit()                  #窗口退出

            sys.exit()                  #系统退出

        elif event.type == pygame.KEYDOWN:  #检测按键按下

            if event.key == pygame.K_RIGHT: #判断按下右键

                print("按下了向右的方向键")

精确的检测某个键时,需要先判断事件的类型,按下还是抬起,然后再检测按下的键是什么。

三、退出事件QUIT

1、QUIT事件语法如下:

event.type == pygame.QUIT

用途:判断程序是否需要退出。

在程序中,我们要一直判断退出事件是否触发,然后做出相应,所以退出事件通常需要配合循环语句和条件语句使用。

pygame.QUITQUIT需要大写。

2、QUIT事件使用方法

#导库

import pygame,sys

......

while True:

    for event in pygame.event.get():       #循环检测

        if event.type == pygame.QUIT:  #退出事件判断

            pygame.quit()          #窗口退出

            sys.exit()             #系统退出

窗口退出:就好比我们关闭了音乐软件的界面,但音乐还在播放。

系统退出:我们退出了音乐软件。

第三节 pygame中的图像

一、加载图片

格式:变量名=pygame.image.load("图片名称.图片格式")

图片名称需要用字符串的形式,而且需要带上图片的格式

二、缩放图片

格式:变量名=pygame.transform.scale(缩放对象,(宽度,高度))

参数宽度和高度表示缩放后的宽度和高度,需要用括号括起来

这里的缩放对象是指通过pygame.image.load()方法加载过图片的对象

三、绘制图片

格式:画布名称.blit(绘制对象,(坐标x,坐标y))

注意:坐标需要用括号括起来

绘制图片语句要放在程序主循环pygame.display.update()之前

绘制多张图片时,先绘制的对象在下面,后绘制的对象在上面。如果坐标重合,后绘制的对象遮挡先绘制的对象

四、rgb三原色

RGB颜色结构:

(num1,num2,num3)

num10-255的整数,代表Rred-红色),数字越大,颜色中红色成分越多

num20-255的整数,代表Ggreen-绿色),数字越大,颜色中绿色成分越多

num30-255的整数,代表Bblue-蓝色),数字越大,颜色中蓝色成分越多

五、图像拖拽

步骤:

鼠标动作

图形动作

矩形动作

1、鼠标按下

选中图形

选中图形对应的矩形对象

2、鼠标移动

移动图形

将矩形对象的坐标设置为鼠标坐标

3、鼠标松开

固定图形

取消选中图形的矩形对象

1、矩形和点的碰撞检测

格式:矩形.collidepoint(点的坐标)

例如:判断矩形rect1和点(520,233)是否碰撞:

if rect1.collidepoint(520,233):

    print("矩形和点碰到了")

2、获取鼠标点位置

获取鼠标的坐标:event.pos

获取鼠标的x坐标:event.pos[0]

获取鼠标的y坐标:event.pos[1]

3、MOUSEMOTION事件

检测鼠标移动:

event.type == pygame.MOUSEMOTION

鼠标事件通常作为if条件语句中的条件。

4、MOUSEMOTION事件的使用方法

#导库

import pygame,sys

......

while True:

    for event in pygame.event.get():               #循环检测

        if event.type == pygame.KEYDOWN:          #退出事件判断

            print("这是键盘事件")

        elif event.type == pygame.MOUSEBUTTONDOWN:  #检测鼠标按下

            print("这是鼠标事件")         #执行语句

        elif event.type == pygame.MOUSEMOTION:  #检测鼠标移动

            print("鼠标移动了")         #执行语句

5、选中图形跟随鼠标移动

moveRect = None   # 移动的对象

while True:

    for event in pygame.event.get():

        #退出事件

        if event.type == pygame.QUIT:

            pygame.quit()

            sys.exit()

        #鼠标事件

        elif event.type == pygame.MOUSEBUTTONDOWN:

            for n in rectList:

                if n.collidepoint(event.pos):

                    # print(event.pos)

                    moveRect = n         #设置变量为选中图形

        elif event.type == pygame.MOUSEMOTION:

            if moveRect != None:

                moveRect.center = event.pos   #设置选中图形跟随鼠标位置

6、固定图形-MOUSEBUTTONUP事件

检测鼠标按键按下:

event.type == pygame.MOUSEBUTTONUP

鼠标事件通常通常作为if条件语句中的条件。

MOUSEBUTTONUP全部都是大写。

7、MOUSEBUTTONUP事件使用方法

moveRect = None   # 移动的对象

while True:

    for event in pygame.event.get():

        #退出事件

        if event.type == pygame.QUIT:

            pygame.quit()

            sys.exit()

        #鼠标事件

        elif event.type == pygame.MOUSEBUTTONDOWN:

            for n in rectList:

                if n.collidepoint(event.pos):

                    # print(event.pos)

                    moveRect = n         #设置变量为选中图形

        elif event.type == pygame.MOUSEMOTION:

            if moveRect != None:

                moveRect.center = event.pos   #设置选中图形跟随鼠标位置

        elif event.type == pygame.MOUSEBUTTONUP:

            moveRect = None      #固定图形

8、完整代码展示

import pygame, sys, tangram

pygame.init()

screen = pygame.display.set_mode((700, 500))

pygame.display.set_caption("益智七巧板")

bg = pygame.image.load("bg.png")

sound = pygame.mixer.Sound("sound1.wav")

# 用列表imgNameList存储图片名

imgNameList = ["1.png", "2.png", "3.png", "4.png", "5.png", "6.png", "7.png"]

imgList = []  # 存储加载后的七巧板图片

#循环加载七巧板图片

for n in imgNameList:

    img1 = pygame.image.load(n)

    imgList.append(img1)

#为每一个七巧板创建Rect对象

rect1 = pygame.Rect(495, 118, 47, 93)

rect2 = pygame.Rect(478, 330, 69, 73)

rect3 = pygame.Rect(532, 184, 36, 73)

rect4 = pygame.Rect(569, 121, 52, 56)

rect5 = pygame.Rect(567, 273, 26, 50)

rect6 = pygame.Rect(517, 255, 26, 51)

rect7 = pygame.Rect(564, 365, 36, 47)

# 用列表rectList存储创建的Rect对象

rectList = [rect1, rect2, rect3, rect4, rect5, rect6, rect7]

moveRect = None   # 移动的对象

while True:

    for event in pygame.event.get():

        #退出事件

        if event.type == pygame.QUIT:

            pygame.quit()

            sys.exit()

        #鼠标事件

        elif event.type == pygame.MOUSEBUTTONDOWN:

            for n in rectList:

                if n.collidepoint(event.pos):

                    # print(event.pos)

                    moveRect = n

        elif event.type == pygame.MOUSEMOTION:

            if moveRect != None:

                moveRect.center = event.pos

        elif event.type == pygame.MOUSEBUTTONUP:

            moveRect = None

            sound.play()

    screen.fill((255, 255, 255))

    screen.blit(bg, (0, 0))

    #绘制七巧板

    for i in range(7):

        screen.blit(imgList[i], rectList[i])

    # 判断游戏是否完成

    tangram.win(rectList, screen)

    pygame.display.update()

运行效果初始状态截图:

 

 

到了这里,关于pygame代码大全(含用法,格式)!!!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • mysql日期函数用法大全

    一、 返回当前日期 1、CURRENT_DATE()、CURRENT_DATE和CURDATE()用法相同:返回当前日期 2、CURRENT_TIME()、CURRENT_TIME和CURTIME()用法相同:返回当前时间 3、CURRENT_TIMESTAMP()、CURRENT_TIMESTAMP、LOCALTIMESTAMP()、LOCALTIMESTAMP、LOCALTIME()、LOCALTIME和NOW()用法相同:返回当前日期和时间 4、SYSDATE():返回

    2024年02月15日
    浏览(13)
  • nmap的用法大全

    nmap的用法大全

    Nmap是一款比较常用的开源工具,可以从https://nmap.org/下载,它可以用来探测目标机器开放了哪些端口,使用的操作系统类型和启用了哪些服务,同时,可以针对具体的服务发起一些枚举攻击以及漏洞扫描,并且根据漏扫发现的漏洞使用某个CVE发起攻击。本文主要对一些常用的

    2023年04月24日
    浏览(5)
  • git指令大全、用法详解

    git config : 用于设置用户身份信息,包括姓名和邮箱地址。在第一次使用Git或安装新的Git时使用,全局设置将在每次提交时使用这些信息。 用法: git config --global user.name \\\"Your name\\\" git config --global user.email \\\"Your email\\\" git version : 用于检查当前Git的版本号。 git version git init : 初始化

    2024年04月22日
    浏览(7)
  • Elasticsearch终端命令行用法大全

    Elasticsearch终端命令行用法大全

    API 作用 使用场景 curl localhost:9200/_cluster/health?pretty 查看ES健康状态 curl localhost:9200/_cluster/settings?pretty 查看ES集群的设置 其中persistent为永久设置,重启仍然有效;trainsient为临时设置,重启失效 curl localhost:9200/_cat/nodes?v 查看ES在线的节点 存在节点缺失的情况可用该命令查看缺失

    2024年02月09日
    浏览(26)
  • ADB 操作命令详解及用法大全

    ADB(Android Debug Bridge)是一个用于管理Android设备的命令行工具, 它允许用户与设备进行通信,执行各种调试和开发任务 。以下是一些常用的ADB命令及其用法: 连接设备 : adb devices : 列出当前连接的所有Android设备。 adb connect 设备IP地址 : 通过网络连接到指定IP地址的设备。 安

    2024年04月09日
    浏览(10)
  • python-pandas用法大全

    python-pandas用法大全

    问题描述:想要把 DataFrame 最后一列 label 的数据格式从 float 改成 int 原来: 代码: out: 读取时要注意的参数有 sep 等等。 在表头顺序一样的情况下,可以这样无脑连接两个 DataFrame : 有关 np.concat 的可以看:https://www.jb51.net/article/164905.htm 本文主要讲 np.merge() 。 但是如果两个

    2024年02月05日
    浏览(13)
  • MATLAB中sort函数的用法大全

    1.sort的基本用法 MATLAB中的sort函数用于对数组进行排序。最基本的用法是: sortedArray = sort(Array); 这会按照升序对数组进行排序。要按降序排序,你可以使用\\\'descend\\\'选项: sortedArray = sort(Array, \\\'descend\\\'); 如果你的数组是多维的,你可以指定你要排序的维度。例如,要按列排序,你

    2024年04月22日
    浏览(9)
  • php中数据格式判断大全

    1. 判断字符串长度: 2. 判断是否为空字符串: 3. 判断是否为数字: 4. 判断是否为整数: 5. 判断是否为浮点数: 6. 判断是否为布尔值: 7. 判断是否为数组: 8. 判断是否为对象: 9. 判断是否为日期: 10. 判断是否为邮箱地址: 11. 判断是否为URL: 12. 判断是否为IP地址: 13. 判

    2024年02月04日
    浏览(5)
  • Linux_ls查看文件与目录的命令,参数大全

    1.ls        不加任何参数,表示查询当前目录下的文件/文件夹 2.ls        后面加上路径,表示查询该路径下的文件/文件夹 3.ls -a        -a参数,表示查询所有的文件/文件夹,也包括以.开头的隐藏文件  4. ls -l         -l参数,表示查询文件的详细信息 7.ls -l         后

    2024年02月09日
    浏览(10)
  • Spring 中 @Bean 注解用法大全,建议收藏!

    Spring 中 @Bean 注解用法大全,建议收藏!

    将对象存储在 Spring 中,有两种注解类型可以实现: 类注解: @Controller 、 @Service 、 @Repository 、 @Component 、 @Configuration 方法注解: @Bean Spring Boot 基础就不介绍了,推荐看这个实战项目: https://github.com/javastacks/spring-boot-best-practice 如下使用 @Controller 存储Bean代码: 使用获取上

    2024年02月03日
    浏览(15)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包