python pygame入门教程

作者:安也oi 时间:2023-10-08 11:32:15 

一、安装

在 cmd 命令中输入: pip install pygame

即可安装成功了

二、第一个代码实例

代码快里面有注释,想必大家都可以看懂的。


import pygame
import sys
import pygame.locals

pygame.init()
# 初始化

screen = pygame.display.set_mode((500, 600))
# 设置屏幕的大小

pygame.display.set_caption("First Demo")
# 设置屏幕的名称

Seashell = 255, 245, 238
# 设置 RGB 颜色

NavyBlue = 0, 0, 128
# 设置 RGB 颜色

while True:
   for event in pygame.event.get():
       if event.type == pygame.locals.QUIT or event.type == pygame.locals.KEYDOWN:
           # 如果点击关闭按钮,或者按下任意键,那么退出程序
           sys.exit()
       else:
           pass
   screen.fill(Seashell)
   position = (250, 300)
   pygame.draw.circle(screen, color=NavyBlue, center=position, radius=100,  width=50)
   pygame.display.update()

运行结果

python pygame入门教程

这个实例只需要强调一下的是:

1、QUIT表示按下关闭的按钮,KEYDOWN是按下任意一个按键,这两个都是pygame内部自己定义好的常量。

2、颜色可以用RGB进行表示

三、绘制一个矩形框


import pygame
import pygame.locals
import sys

pygame.init()
screen = pygame.display.set_mode((600, 500))
pygame.display.set_caption("Drawing Rectangles")
# 设置名称
Blue = 0, 0, 255
Purple = 160, 32, 240
while True:
   for event in pygame.event.get():
       if event.type == pygame.locals.QUIT or event.type == pygame.locals.KEYDOWN:
           # 还是如果说点击了关闭的按键,或者是按下了任意键,那么就可以关闭程序了
           sys.exit()
   pos = (300, 250, 100, 100)
   # 这里的 pos 不仅设置了位置,而且设置了长度以及宽度
   screen.fill(Purple)
   pygame.draw.rect(screen, Blue, pos, width=10)
   # width 是线条的宽度,screen 表示指定使用哪一个屏幕进行显示
   pygame.display.update()

代码运行的结果;

python pygame入门教程

四、绘制矩形框的进阶版本


import pygame
import pygame.locals
import sys
import time

pygame.init()
screen = pygame.display.set_mode((600, 500))
pygame.display.set_caption("Drawing Moving Rectangle")

color1 = 139, 0, 139
color2 = 104, 131, 139

px = 200
py = 300
# 初始化的位置应该放在外面,否则会一直在一个地方绘制图形了

vx = 10
vy = 20
# 初始化速度也应该放在外面,否则会一直以恒定的速度运动

while True:
   for event in pygame.event.get():
       if event.type in (pygame.locals.QUIT, pygame.locals.KEYDOWN):
           # 如果是按下了任意键或者是点击了关闭按钮,那么退出程序
           sys.exit()

# vx = 10
   # vy = 20

# px = 200
   # py = 300

px += vx
   py += vy
   if px <= 0 or px + 100 >= 600:
       vx = - vx
   # else:
   #     px += vx

if py <= 0 or py + 100 >= 500:
       vy = - vy
   # else:
   #     py += vy

screen.fill(color1)

pygame.draw.rect(screen, color2, (px, py, 100, 100))

time.sleep(0.2)

pygame.display.update()

五、绘制一条直线


# 绘制线条

import pygame
import pygame.locals
import sys
import time

color1 = 0, 80, 0

color2 = 100, 255, 200

pygame.init()
# 初始化

screen = pygame.display.set_mode((600, 500))
# 设置显示屏幕

pygame.display.set_caption("Drawing Lines")
# 设置显示框的标题的名称

while True:
   for event in pygame.event.get():
       if event.type == pygame.locals.QUIT or event.type == pygame.locals.KEYDOWN:
           sys.exit()
           # 与前面一样,如果说按下任意键或者是按下关闭的按钮,那么我们就退出程序

screen.fill(color1)

pygame.draw.line(screen, color2, (150, 150), (450, 450), width=10)

pygame.display.update()

运行代码的结果展示;

python pygame入门教程

在这里,我们再一次详细地介绍一下line里面的各个参数的意义:


   pygame.draw.line(screen, color2, (150, 150), (450, 450), width=10)

1、第一个参数 : 设置用于显示的屏幕是谁

2、第二个参数 : 设置直线段的颜色

3、第三个阐述 : 设置起点,也就是开始的位置

4、第四个参数 : 设置终点,也就是停止的位置

5、第五个参数 : 设置线条的宽度或者说是粗细的程度

最后再说一句,别忘记了加上一个

pygame.display.update()

用来更新画面

六、绘制一条弧线

首先,我们绘制一个圆的一部分,也就是真正的圆弧形:


import math
import pygame
import pygame.locals
import sys
import time

color1 = 144, 238, 144
color2 = 0, 0, 139

pygame.init()
pygame.display.set_caption("Drawing Arcs")
screen = pygame.display.set_mode((600, 500))

while True:
   for event in pygame.event.get():
       if event.type in (pygame.locals.QUIT, pygame.locals.KEYDOWN):
           sys.exit()

screen.fill(color1)

ang1 = math.radians(45)
   # 设置起始角位置
   ang2 = math.radians(315)
   # 设置结束的角位置

# 设置矩形框
   """
   元组中;
   第一个参数,矩形框的左上角的横坐标
   第二个参数,矩形框的右上角的纵坐标
   第三个参数,矩形框的长度
   即就是:相对于 x 轴平行的方向的长度
   第四个参数,矩形框的宽度
   即就是:相对于 y 轴平行的方向的长度

另外,如果矩形框的长度和宽度不相等的话,绘制出来的弧线不是圆的一部分,
   而是椭圆的一部分
   """
   rect1 = 100, 50, 400, 400
   # 第一个矩形框----画园的一部分
   rect2 = 200, 200, 200, 100
   # 第二个矩形框----画椭园的一部分

pygame.draw.arc(screen, color2, rect1, ang1, ang2, width=10)
   # 参数的含 * 释
   """
   第一个参数:屏幕
   第二个参数:颜色
   第三个参数:开始的角度
   第四个参数:结束的角度
   第五个参数:线条的宽度
   """

pygame.display.update()

python pygame入门教程

接下来,我们绘制一个椭圆形的一部分:

正如前一个实例中的注释所说,如果说:这个矩形框的长度和宽度不是相等的,那么,使用这个方法就是会绘制一个放 缩以后的椭圆形。

此处仅仅是吧上一个实例中的 rect1 换用为了 rect2 ,其他部分没有任何的变化;


import math
import pygame
import pygame.locals
import sys
import time

color1 = 144, 238, 144
color2 = 0, 0, 139

pygame.init()
pygame.display.set_caption("Drawing Arcs")
screen = pygame.display.set_mode((600, 500))

while True:
   for event in pygame.event.get():
       if event.type in (pygame.locals.QUIT, pygame.locals.KEYDOWN):
           sys.exit()

screen.fill(color1)

ang1 = math.radians(45)
   # 设置起始角位置
   ang2 = math.radians(315)
   # 设置结束的角位置

# 设置矩形框
   """
   元组中;
   第一个参数,矩形框的左上角的横坐标
   第二个参数,矩形框的右上角的纵坐标
   第三个参数,矩形框的长度
   即就是:相对于 x 轴平行的方向的长度
   第四个参数,矩形框的宽度
   即就是:相对于 y 轴平行的方向的长度

另外,如果矩形框的长度和宽度不相等的话,绘制出来的弧线不是圆的一部分,
   而是椭圆的一部分
   """
   rect1 = 100, 50, 400, 400
   # 第一个矩形框----画园的一部分
   rect2 = 200, 200, 200, 100
   # 第二个矩形框----画椭园的一部分

pygame.draw.arc(screen, color2, rect2, ang1, ang2, width=10)
   # 参数的含 * 释
   """
   第一个参数:屏幕
   第二个参数:颜色
   第三个参数:开始的角度
   第四个参数:结束的角度
   第五个参数:线条的宽度
   """

pygame.display.update()

运行代码的结果如下图所示;

python pygame入门教程

我们可以看到,这里确实是把竖直方向的宽度进行了压缩,使得原本的那个圆形变为了一个椭圆,同时,我们也把圆弧形,变为了一个椭圆弧形。

综上,以上就是我的第一份笔记,后续会进行更新的啦,这是第一份,后续有多少还没想好,但总之会持续更新,直到我把pygame学习完毕。后续还会去看看有没有机会学习页游,手游等游戏得制作,加油!

来源:https://juejin.cn/post/6966426725030821902

标签:python,pygame
0
投稿

猜你喜欢

  • Python中random模块用法实例分析

    2023-01-02 19:40:25
  • 用Python实现服务器中只重载被修改的进程的方法

    2022-06-21 05:11:38
  • gRPC超时拦截器实现示例

    2024-04-27 15:30:54
  • python中查看.db文件中表格的名字及表格中的字段操作

    2022-03-17 22:00:29
  • phpcms中的评论样式修改方法

    2024-05-02 17:17:23
  • 如何实现一个python函数装饰器(Decorator)

    2023-12-02 19:38:37
  • Django 接收Post请求数据,并保存到数据库的实现方法

    2024-01-13 08:18:56
  • 如何恢复/修复MS SQL数据库的MDF文件

    2007-10-30 13:52:00
  • js放大缩小容器:仿动画

    2008-02-15 11:34:00
  • Python使用线程来接收串口数据的示例

    2022-01-21 11:32:38
  • MySQL做读写分离提高性能缓解数据库压力

    2024-01-27 14:36:19
  • Pytes正确的配置使用日志功能

    2023-07-18 05:51:17
  • numpy存取数据(tofile/fromfile)的实现

    2021-12-12 02:06:24
  • js取得html iframe中的元素和变量值

    2024-06-07 15:26:17
  • 十个节省时间的MySQL命令小结

    2024-01-13 07:18:14
  • AspJpeg 2.0组件使用教程(GIF篇)

    2008-12-16 19:37:00
  • Python中for后接else的语法使用

    2023-07-08 15:28:47
  • Win8.1下安装Python3.6提示0x80240017错误的解决方法

    2021-12-24 08:36:51
  • Go 语言下基于Redis分布式锁的实现方式

    2024-04-25 13:17:24
  • 用Python进行websocket接口测试

    2022-03-02 09:44:22
  • asp之家 网络编程 m.aspxhome.com