目录

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

运行效果初始状态截图:

pygame代码大全(含用法,格式)!!!相关推荐

  1. python代码大全和用法用量_python零基础入门命令方式汇总大全,快速恶补你的Python基础...

    原标题:python零基础入门命令方式汇总大全,快速恶补你的Python基础 无意中浏览到这篇来自大牛的分享,总结的很全面,我重新排版下放在这里,希望能帮助到大家.在此十分感谢原作者! 在开始之前还是 ...

  2. python代码大全和用法用量_Python numpy.stack()用法及代码示例

    numpy.stack()函数用于沿新轴连接相同尺寸数组的序列.axis参数指定结果轴尺寸中新轴的索引.例如,如果axis = 0,它将是第一个尺寸:如果axis = -1,它将是最后的尺寸. 用法: ...

  3. python代码大全和用法用量_Python生成器的使用方法和示例代码

    本文是<Effect Python 编写高质量Python代码的59个有效方法>的学习笔记.主要记录生成器的使用方法和示例代码. 返回队列的函数 如果函数要产生一系列结果,那么最简单的做法 ...

  4. 爱心代码大全---含十余款特效源码【情人节表白代码】

    写在前面 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:人工智能学习网站

  5. 视频播放器html代码大全

    视频播放器html代码大全 1.avi格式  代码片断如下: < object id ="video" width ="400" height =&quo ...

  6. 在线播放器代码大全!

    在线播放器代码大全 1.avi格式 <object id="video" width="400" height="200" borde ...

  7. 二进制颜色代码大全(含图)——转

    (转自:http://blog.csdn.net/shakespeare001/article/details/7816022) 二进制颜色代码大全,可供大家开发时参考: FFFFFF #DDDDDD ...

  8. 二进制颜色代码大全(含图)透明度与十六进制代码转换

    原文地址:http://blog.csdn.net/shakespeare001/article/details/7816022 http://blog.csdn.net/sky1203850702/ ...

  9. python基础代码事例-python基础代码大全

    [实例简介] python代码大全,适用于基础python学习者,里面的代码基本上是基础学习者必经过程. Python学习入门很快,但学习之路任重道远 [实例截图] [核心代码] python代码大全 ...

最新文章

  1. 企业级LNMP架构搭建实例(基于Centos6.x)
  2. 基于Debian9.3安装OpenVAS9.0(kali源)
  3. SystemCenter2012SP1实践(31)P2V迁移故障一则
  4. [WPF疑难]ErrorTemplate显示与隐藏问题
  5. 第七章 PX4-Pixhawk-Mavlink解析
  6. SAP Spartacus index.html里的meta标签
  7. HashMap 为什么会导致 CPU 100%?文章看不懂?来看这个视频吧!——面试突击 006 期...
  8. [转] 面试70问经典回答
  9. 计算机分屏解决方案,一机多屏显示技术解决方案
  10. 回车键的ASCII值
  11. matlab 取矩阵上三角元素,MATLAB triu():提取上三角矩阵
  12. 2020德勤面试开始了吗_刚去四大(德勤)面试,我只说了三个字,就拿到了offer!...
  13. 砍价永远差一刀?拼多多法庭上回复:小数点后有6位···
  14. 音频节奏检测(Onset Detection)
  15. VS2010制作安装程序
  16. 第四节:逻辑控制【java】
  17. 公司想注册电子邮箱账号,需要注意些什么?
  18. vue php聊天室,实例详解vue组件父子间通信之聊天室
  19. html5 选择金额样式,[JavaScript] 数字金额大写转换 v2
  20. 一名SM是怎么炼成的(之一锻炼领导力)

热门文章

  1. sci计算机二作,sci论文有没有区分一作二作
  2. 官方授权正版 Surfer 中文网站 专业 2D/3D 地理绘图软件
  3. 死磕源码系列【springboot之ConditionEvaluationReport记录报告和日志条件评估详情源码解析】
  4. Dart —— 基础数据类型 Number String Boolean List Map Set Rune Symbol
  5. RocketMQ消息刷盘
  6. T440p黑苹果 BIOS设置
  7. 实验一 网络扫描与网络侦察
  8. 2022R2移动式压力容器充装(山东省)考试题库模拟考试平台操作
  9. css使div元素水平并垂直的方法(4种)
  10. 数据结构java版txt,图解数据结构:使用Java