Pygame(三)画圆

2023-10-27

Pygame(三)画圆

作业代码

  1. 画一个矩形:要求,左上角在(100,100), 宽为200, 高为60,边框颜色为蓝色
    作业代码:
def homework01():
    '''画一个矩形'''
    '''
    要求:
    1  画一个矩形:要求,左上角在(100,100), 宽为200, 高为60,边框颜色为蓝色
    '''
    pygame.init()
    screen = pygame.display.set_mode((800, 600))
    rect = pygame.Rect(100,100, 200, 60)
    pygame.draw.rect(screen, (0, 0, 255), rect, 1)
    pygame.display.update()
    while 1:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
    pygame.quit()
  1. 用矩形画一个10层的高楼
    要求:
  2. 层高:50
  3. 层宽:逐层递减,最宽(1层)200, 每层减8
  4. 颜色:灰色(190, 190, 190)

作业代码

def homework02():
    '''画一个矩形'''
    '''   
      要求:用矩形画一个10层的高楼
      1. 层高:50
      2. 层宽:逐层递减,最宽(1层)200, 每层减8
      3. 颜色:灰色(190, 190, 190)
    '''
    pygame.init()
    screen = pygame.display.set_mode((800, 600))

    for i in range(10):
        rect = pygame.Rect(300+4*i, 500-50*i, 200-8 * i, 50)
        pygame.draw.rect(screen, (190, 190, 190), rect, 1)
    pygame.display.update()
    while 1:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
    pygame.quit()

作业2效果图

前情提要

第二课思维导图

本课提要

image.png

内容详解

画圆

pygame.draw.circle(Surface, color, pos, radius, width=0)

参数说明:

  • Surface : 同上节课,一个Surface类型对象, 一般screen
  • color: 线的颜色
  • pos:圆心坐标
  • radius: 半径
  • width:线宽
    说明:
    1. 当设置为0或者不设置时,画出来的是实心的圆
    2. 线宽是算在半径之内的,即当半径是5的时候,如果设置width = 5,画出来的是一个实心圆

示例代码

def drawcircle():
    '''函数说明'''
    '''
    画一个圆心在中心,半径=高一半的红色圆
    '''
    pygame.init()
    screen = pygame.display.set_mode((800, 600))
    print(dir(pygame.Surface))
    x = screen.get_width()/2
    y = screen.get_height()/2
    radius = screen.get_height()/2
    pygame.draw.circle(screen, (255,0,0), (x,y), radius, width = 1)
    pygame.display.update()
    while 1:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
    pygame.quit()

要点说明:
这里用到了两个Surface对象的方法函数,一个是get_width(),一个是get_height()
顾名思议
get_width:获取的是屏幕的宽度
get_height:获取的是屏幕的高度
要想同时获取宽度与高度,可以用get_size()来实现,返回的是一个二元组

示例2:奥运五环

def draw_a5():
    '''函数说明'''
    '''
    画奥云五环
    画法说明:
    圆环内圈半径为单位1,外圈半径为1.2;相邻圆环圆心水平距bai离为2.6;两排圆环圆心垂直距离为1.1
    颜色第一行为蓝 黑 红
    第二行为 黄 绿 
    '''
    pygame.init()
    screen = pygame.display.set_mode((800, 600))
    screen.fill((255,255,255)) # 背景色设置为白色
    # 画第一个圆,颜色蓝色:(0,0,255)
    pos = x1, y1=  275, 200  # 圆心
    r = 50  # 半径
    c = (0, 0, 255)  # 蓝色
    pygame.draw.circle(screen, c, pos, r + 10, width = 10)

    # 画第二个圆, 圆心在第一个圆往右2.5半径
    pos = x2, y2 = x1 + 2.6 * r, y1
    c = (0,0,0)  # 黑色
    pygame.draw.circle(screen, c, pos, r + 10, width = 10)

    # 画第三个圆, 圆心再次往右2.5半径
    pos =x3, y3 = x2 + 2.6 * r, y1
    c = (255, 0, 0)  # 红色
    pygame.draw.circle(screen, c, pos, r + 10, width=10)

    # 第四个圆, 圆心在第一与第二个圆圆心中间向下
    pos = x1 + 1.3 * r, y1 + 1.1 * r
    c = (255, 255, 0)
    pygame.draw.circle(screen, c, pos, r + 10, width=10)

    # 第五个圆,圆心在第二与第三个圆的中间向下
    pos = x2 + 1.3 * r,y1 + 1.1 * r
    c = (0, 255, 0)
    pygame.draw.circle(screen, c, pos, r + 10, width=10)

    pygame.display.update()
    while 1:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
    pygame.quit()

注意:

  1. 因为线宽是算在半径内的.因此,画一个内圆是50, 外圆是60,所以实际画的时候要画半径为60的圆.
  2. 背景色默认为黑色,会影响第二个圆环的显示,所以将背景色设置为白色,用到了screen.fill()方法.参数为RGB元组

五环效果图

后记:

  1. 矩形与圆是两个基本的图形.因此,我们要熟练掌握使用方法.
    2.无论是画矩形,还是画圆,还是后面的其他图形,画出来的东西会返回一个矩形对象.以用来后续的操作.比如移动什么的.

练习:

  1. 画一个边长为100的正方形,线宽为1, 颜色为蓝色.再画一个内切圆,实心红色
  2. 画一个半径为200的圆,再画一个内接正方形
    备注:计算根号2取1.41
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pygame(三)画圆 的相关文章

  • 如何在多进程系统中实现锁定?

    我们正在并行运行许多詹金斯项目 我们使用 python 并且选择使用 pyenv 管理虚拟环境 不幸的是 pyenv 有一个众所周知的竞争条件 https github com yyuu pyenv issues 174 为了解决这个问题
  • Python 切片对象和 __getitem__

    python 中是否有内部的东西来处理传递给的参数 getitem 不同 并自动转换start stop step构造成切片 这是我的意思的演示 class ExampleClass object def getitem self args
  • 如何使用 Python 3 绕过 HTTP Error 403: Forbidden with urllib.request

    您好 不是每次都这样 但有时在尝试访问 LSE 代码时 我会收到每一个烦人的 HTTP 错误 403 禁止消息 任何人都知道我如何仅使用标准 python 模块来克服这个问题 遗憾的是没有漂亮的汤 import urllib request
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • 如何返回 cost, grad 作为 scipy 的 fmin_cg 函数的元组

    我怎样才能使 scipy 的fmin cg使用一个返回的函数cost and gradient作为元组 问题是有f对于成本和fprime对于梯度 我可能必须执行两次操作 非常昂贵 grad and cost被计算 此外 在它们之间共享变量可
  • 在Python中从大文件中搜索单词列表

    我是新蟒蛇 我有一个单词列表和一个非常大的文件 我想删除文件中包含单词列表中的单词的行 单词列表按排序给出 并且可以在初始化期间输入 我正在努力寻找解决这个问题的最佳方法 我现在正在进行线性搜索 这花费了太多时间 有什么建议么 您可以使用i
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • Python Tkinter 模块不显示输出

    我正在尝试学习 Python 并尝试使用 Python 中的 GUI 并遇到了这个 Tkinter 模块 我的代码运行 但运行时窗口没有出现 我的代码如下 from Tkinter import to create a root windo
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

    我在 Windows 7 机器上使用 Python 2 7 Anaconda 安装进行数据分析和科学计算 当新的库发布时 例如新版本的 pandas patsy 等 您建议我如何测试新版本与现有代码的兼容性 是否可以在同一台机器上安装两个
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 使用另一个数据帧在数据帧中创建子列

    我对 python 和 pandas 很陌生 在这里 我有一个以下数据框 did features offset word JAPE feature manual feature 0 200 0 aa 200 200 0 200 11 bf
  • 使用 PIL 在 Tkinter 中显示动画 GIF

    我正在尝试制作一个程序来使用 Tkinter 显示动画 GIF 这是我最初使用的代码 from future import division Just because division doesn t work right in 2 7 4
  • 无法通过 Python 子进程进行 SSH

    我需要通过堡垒 ssh 进入机器 因此 该命令相当长 ssh i
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • rpy2 无法加载外部库

    希望有人能帮忙解决这个问题 R版本 2 14 1rpy2版本 2 2 5蟒蛇版本 2 7 3 一直在尝试在 python 脚本中使用 rpy2 加载 R venneuler 包 该包以 rJava 作为依赖项 venneuler 和 rJa
  • 定义在文本小部件中双击时选择哪些字符

    在 Windows 上 双击文本小部件中的单词也将选择连接的标点符号 有什么方法可以定义您想要选择的角色吗 tcl wordchars该变量的值是一个正则表达式 可以设置它来控制什么被视为 单词 字符 例如 通过双击 Tk 中的文本来选择单

随机推荐

  • django1.10 静态文件配置

    settings配置 网站引用静态文件时都会加上该地址 如 http www xxx com static css mini css STATIC URL static 静态文件根目录 执行命令 python manage py colle
  • PostgreSQL 服务启动不了问题

    配置了postgresql数据的配置文件 pg hba conf后 重记一下服务 结果启动不了 提 示错误 root instance 609xznso run systemctl start postgresql 11 Job for p
  • C++11 function、bind、可变参数模板

    在设计回调函数的时候 无可避免地会接触到可回调对象 在C 11中 提供了std function和 std bind两个方法来对可回调对象进行统一和封装 C 语言中有几种可调用对象 函数 函数指针 lambda表达式 bind创建的对象以及
  • Hibernate的加载方式——GET与LOAD的对比

    在Hibernate框架中 最常用到的加载方式就非Get和Load莫属了 然而Get和Load在加载方式上边还有很多的不同 下面让我们来分析一下他们的不同之处 区别 从返回的结果上来看 get load在检索到数据的时候 会返回对象 代理对
  • firefox火狐书签windows和ubuntu无法同步问题

    装了ubuntu后发现firefox的书签没法同步 最终发现问题的原因 firefox有个全球服务和本地服务 ubuntu下的firefox默认是全球服务的 而windows下的firefox默认是本地服务的 这样相当于两个系统下默认的存储
  • 【生信】初探基因定位和全基因组关联分析

    初探QTL和GWAS 文章目录 初探QTL和GWAS 实验目的 实验内容 实验题目 第一题 玉米MAGIC群体的QTL分析 第二题 TASSEL自带数据集的关联分析 实验过程 玉米MAGIC群体的QTL分析 包含的数据 绘制LOD曲线 株高
  • PyTorch训练深度卷积生成对抗网络DCGAN

    文章目录 DCGAN介绍 代码 结果 参考 DCGAN介绍 将CNN和GAN结合起来 把监督学习和无监督学习结合起来 具体解释可以参见 深度卷积对抗生成网络 DCGAN DCGAN的生成器结构 图片来源 https arxiv org ab
  • PCA(主成分分析方法)

    目录 1 降维问题 2 向量与基变换 2 1 内积与投影 2 2 基 2 3 基变换的矩阵 3 协方差矩阵及优化目标 3 1 方差 3 2 协方差 3 3 协方差矩阵 3 4 协方差矩阵对角化 4 算法与实例 4 1 PCA算法 4 2 实
  • postgres数据库进行备份和恢复

    参考 http blog chinaunix net uid 354915 id 3504632 html root localhost postgres 9 3 5 pg dump help pg dump dumps a databas
  • (九)Mybatis下划线驼峰处理的几种方法

    这篇文章主要讲述Mybatis下划线驼峰处理的几种方法 对大家的学习或者工作具有一定的参考学习价值 需要的朋友们下面随着小编来一起学习学习吧 目录 1 可以通过写别名 2 开启驼峰命名 3 自定义javabean的封装规则 首先先说明一下为
  • Anaconda镜像源整理与使用

    本文复制于 Anaconda镜像源整理与使用 天道酬勤 花开半夏 只为方便查找与防止原文被删除 请前往原文查看 Anaconda镜像源整理与使用 常用镜像源Conda源Pypi源 镜像源使用指令解决CondaHTTPError HTTP 0
  • var js=function(){}和function js(){}的区别

    在Javascript中 函数及变量的声明都将被提升到函数的最顶部 也就是说我们可以先使用后声明 但函数表达式和变量表达式只是将函数或者变量的声明提升到函数顶部 函数表达式和变量的初始化将不被提升 var js function 这种叫做函
  • KL散度原理和实现

    KL散度计算 KL散度 Kullback Leibler Divergence 一般用于度量两个概率分布函数之间的相似程度 离散求和 连续求积分 KL P Q
  • Java-IO字节流与字符流

    IO流的常用流 输入流 输入字节流和输入字符流 将硬盘的文件输出到Java内存 输出流 输出字节流和输出字符流 从内存写到磁盘中 缓冲 缓冲的字面意思是减缓冲击力比如 看视频比较卡 暂停缓存一会 1 字节输入流 FileInputStrea
  • 附件预览实现

    kkFileView演示首页kkFileView 在线文件预览
  • 【基础汇总】——python数据分析必备三大工具

    目录 前言 一 numpy 1 数组创建 2 数组运算 3 矩阵运算 二 pandas 1 数据结构 2 数据处理 2 1 数据结构与描述性统计 2 2 切片访问与缺失处理 2 3 多表合并 三 matplotlib 1 matplotli
  • 3D建模前景是不是很不错?虽然如此,但也需正视每一个行业

    其实所有行业都是一样的 没有什么容易的 只不过游戏建模这一行是偏向于技术的 一个好的建模师月薪10k 是很常见的 但这个需要有自己刻苦学习 不断积累沉淀的成果 不可能报个培训班学习6个月就能拿到的 希望一出来就月入过万的 这个几乎是不可能的
  • 前端初学3

    hr标签的扩展及部分特殊符号的表示 文章目录 hr标签的扩展及部分特殊符号的表示 hr标签的扩展 一 hr的颜色变化 二 hr的宽度变化 三 hr的位置 特殊符号 一 标签显示 二 首行缩进 三 其他特殊符号 总结 hr标签的扩展 hr标签
  • 计算机cpu和内存不足,电脑内存不足的解决方法

    电脑内存不足的解决方法 内存是计算机中重要的部件之一 它是与CPU进行沟通的桥梁 计算机中所有程序的运行都是在内存中进行的 因此内存的性能对计算机的影响非常大 下面是jy135小编收集整理的电脑内存不足的解决方法 欢迎阅读 步骤一 右击计算
  • Pygame(三)画圆

    Pygame 三 画圆 作业代码 画一个矩形 要求 左上角在 100 100 宽为200 高为60 边框颜色为蓝色 作业代码 def homework01 画一个矩形 要求 1 画一个矩形 要求 左上角在 100 100 宽为200 高为6