irpas技术客

pygame代码大全(含用法,格式)!!!_SouthGiserr_pygame小游戏代码

未知 5122

目录?

第一节 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)

num1是0-255的整数,代表R(red-红色),数字越大,颜色中红色成分越多

num2是0-255的整数,代表G(green-绿色),数字越大,颜色中绿色成分越多

num3是0-255的整数,代表B(blue-蓝色),数字越大,颜色中蓝色成分越多

7、更新画布

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

二、添加素材 1、添加图片

添加图片两步走:

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

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

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

坐标系

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

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

坐标系图:

?

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.KEYDOWN中KEYDOWN需要大写。

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.KEYUP中KEYUP需要大写。

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.QUIT中QUIT需要大写。

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)

num1是0-255的整数,代表R(red-红色),数字越大,颜色中红色成分越多

num2是0-255的整数,代表G(green-绿色),数字越大,颜色中绿色成分越多

num3是0-255的整数,代表B(blue-蓝色),数字越大,颜色中蓝色成分越多

五、图像拖拽

步骤:

鼠标动作

图形动作

矩形动作

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()

运行效果初始状态截图:

?

?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #pygame小游戏代码 #目录第一节 #pygame基础 #3一pygame框架 #31基本框架 #32导库 #33初始化 #34设置画布大小