Python之Pygame学习笔记–1

Python之Pygame学习笔记–1

废话不多说,直接开始干货。

此处我们将以案例的形式讲解 Pygame 的相关知识,本文将绘制圆形,矩形,动图这三个简单的案例。

说实话,个人觉得 pygame 的官方文档真的不堪入目,所以自己整理了一下学习的笔记,在这里以案例的形式进行展示。

文章目录

*
Python之Pygame学习笔记–1
一、安装
二、第一个代码实例
三、绘制一个矩形框
四、绘制矩形框的进阶版本
五、绘制一条直线
六、绘制一条弧线

一、安装

在 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

NavyBlue = 0, 0, 128

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
这个实例只需要强调一下的是:

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

2、颜色可以用RGB进行表示,
具体的描述可以参见一下网站;
https://www.sojson.com/rgb.html

好了,这个就是一个简单的第一个案例,以此种方式进行引入。

三、绘制一个矩形框

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)

    screen.fill(Purple)
    pygame.draw.rect(screen, Blue, pos, width=10)

    pygame.display.update()

代码运行的结果;

Python之Pygame学习笔记--1

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

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

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

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

    screen.fill(color1)

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

    time.sleep(0.2)

    pygame.display.update()

这里不好展示视频,所以我们放几张图片吧,具体的效果可以自己运行代码以后既可以了;
图片1:

Python之Pygame学习笔记--1

图片2;

Python之Pygame学习笔记--1
图片3:
Python之Pygame学习笔记--1
另外,实际所得到的效果是这个矩形框在不停的运动,但是不会跑出这个显示的屏幕了啦。
但是是视频现在不好加,所以,我直接展示了一部分图片。

五、绘制一条直线


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学习笔记--1

在这里,我们再一次详细地介绍一下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学习笔记--1

接下来,我们绘制一个椭圆形的一部分:
正如前一个实例中的注释所说,如果说:这个矩形框的长度和宽度不是相等的,那么,使用这个方法就是会绘制一个放缩以后的椭圆形。
此处仅仅是吧上一个实例中的 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学习笔记--1

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

综上,以上就是我的第一份笔记,后续会进行更新的啦,这是第一份,后续有多少还没想好,但总之会持续更新,直到我把pygame学习完毕。

敬请期待哦。
(^_^)

Original: https://blog.csdn.net/m0_54218263/article/details/116898636
Author: hhh江月
Title: Python之Pygame学习笔记–1

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/781906/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 8000字概括精髓,pandas必知必会50例

    本篇我们继续前面 pandas系列教程的探讨,今天小编会介绍 pandas库当中一些非常基础的方法与函数,希望大家看了之后会有所收获,另外呢,大家要是希望小编…

    Python 2023年8月18日
    055
  • Django+微信公众号开发小项目

    最近搞了点事情,因为web.py对微信公众号开发时不方便扩展和复用,使用Django开发微信公众号。使用celery推送模板消息到用户微信上,最终方便以后重复利用和功能增加。 01…

    Python 2023年8月5日
    033
  • 互联网用户信息处理

    互联网用户信息处理 1.读取单文本中的序列号和上网时间年龄 import pandas as pd import re import os inpath="associa…

    Python 2023年8月8日
    046
  • HTTP性能测试工具siege

    siege是一款Web服务性能压力测试,通过siege的测试,我们可以知道上线的web服务能提供的并发调用能力。主要原理是通过多线程的http请求,将访问的性能数据进行统计。 官方…

    Python 2023年8月4日
    054
  • Python中matplotlib绘图的参数配置

    【小白从小学Python、C、Java】 【Python全国计算机等级考试】 【Python数据分析考试必会题】 ● 标题与摘要 Python中matplotlib绘图的参数配置 …

    Python 2023年9月1日
    059
  • 猿创征文|零基础python学习之旅(简短又漫长)

    自我介绍 兴趣的产生 写在最后 自我介绍 笔者目前即将本科大三开学,学的专业是 经管学院下的物流工程专业(文科偏理工的专业吧),准备考研软件工程,本科中的课程学过高等数学、线性代数…

    Python 2023年8月2日
    051
  • python自己编写一个异常

    我们写程序时,经常碰到大红色的异常。你是不是很好奇那是怎么做到的呢?今天,小编就来教你如何编写:异常类!!! 为了确保你能顺利编写,你需要以下物品: 1.一台电脑 2.python…

    Python 2023年9月18日
    076
  • 分布式机器学习:逻辑回归的并行化实现(PySpark)

    算法的完整实现代码我已经上传到了GitHub仓库:Distributed-ML-PySpark(包括其它分布式机器学习算法),感兴趣的童鞋可以前往查看。 1 梯度计算式导出 我们在…

    Python 2023年10月25日
    057
  • django模型models字段常用参数

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年8月5日
    044
  • pandas -表的横向合并 纵向合并

    《Merge, join, and concatenate》笔记 PS默认情况下,所有合并函数生成文件的方式均是新生成,即不修改原DF/Series数据。 常用 merge() 来…

    Python 2023年8月8日
    077
  • 【关于pytest.main的使用 自动化测试】

    pytest 运行用例的时候,一般用命令行去执行,有些小伙伴不太习惯命令行运行用例,(即pytest 命令行运行)可能是之前深受 unittest 框架的影响,习惯在项目的根目录下…

    Python 2023年9月12日
    039
  • 数据分析与数据挖掘实战案例本地房价预测(716):

    数据分析与数据挖掘实战案例(7/16): 2022 年首届钉钉杯大学生大数据挑战赛练习题目 练习题 A:二手房房价分析与预测 要点: 1、机器学习 2、数据挖掘 3、数据清洗、分析…

    Python 2023年8月2日
    056
  • python中scrapy可以爬取多少数据_如何使用Scrapy爬取网站数据

    编者按:斯克里普斯研究所数据科学家Michael Galarnyk介绍了如何使用Scrapy爬取网站数据。 我刚开始在业界工作时,首先意识到的一件事情是,有时候需要自己收集、整理、…

    Python 2023年10月4日
    038
  • stm32F103RCT6使用FFT运算分析波形详解(非常新手)

    最近学校电赛院队招新,出的招新题就是低频示波器的。之前一直没有弄懂FFT,借着这次机会实现了一下。 FFT原理详解 FFT,就是快速傅里叶变换,这个操作能够将时域信号转化成频域信号…

    Python 2023年6月6日
    076
  • 安科瑞配电室环境监控系统解决方案-Susie 周

    1、概述 配电室综合监控系统包括智能监控系统屏、通讯管理机、UPS电源、视频监控子系统(云台球机、枪机)、环境监测子系统(温度、湿度、水浸、烟感)、控制子系统(灯光、空调、除湿机、…

    Python 2023年10月7日
    068
  • 16.Pandas实现groupBy分组统计

    简单介绍 类似Sql:select city,max(temperature) from city_weather group by city;groupby:先对数据分组,然后在…

    Python 2023年8月17日
    052
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球