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服务器

    使用此代码来运行 python 服务器 import os from http server import SimpleHTTPRequestHandler HTTPServer os chdir c users owner desktop
  • 如何使用 python 从嵌套表结构中识别最终父级?

    我有下表 我的问题是 我如何以编程方式识别最终父级 以下是通过示例解释的规则 the id 5 0的父母是51 0 身份证号51 0没有父母 因此 id5 0的最终父级是51 0 the id 6 0的父母是1 0 身份证号1 0的父母是1
  • pandas python 根据一个或多个其他列的子集更新 A 列的子集

    Edit我修改了下面的部分描述 以澄清 功能 和 组 的含义 修复拼写错误 并包含我尝试过的其他代码 我的熊猫df有 450 万行和 23 列 下表显示了几行df2这是从生成的df 它显示了两组 eeskin and hduquant 和三
  • 插入多行并返回主键时 Sqlalchemy 的奇怪行为

    插入多行并返回主键时 我注意到一些奇怪的事情 如果我在 isert 查询中添加使用参数值 我会得到预期的行为 但是当将值传递给游标时 不会返回任何内容 这可能是一个错误还是我误解了什么 我的sqlachemy版本是0 9 4 下面如何重现错
  • 代码 zip( *sorted( zip(units, error) ) ) 的作用是什么?

    对于我的申请units and errors始终是数值列表 我尝试用谷歌搜索每个部分的作用 并找出了 zip 的第一部分 它似乎 ziped list zip units errors 只需将单位和误差配对即可生成一个列表 如下所示 uni
  • python 类的属性不在 __init__ 中

    我想知道为什么下面的代码有效 usr bin env python3 import sys class Car def init self pass if name main c Car c speed 3 c time 5 print c
  • 使用 pygtk3 将 GUI 窗口添加到 python opencv2 程序

    我已经使用Python和Opencv2完成了一个程序 现在 我想向我的程序添加一个 GUI 窗口 我对 PyGtk3 有一些经验 因此 我修改了代码以采用 PyGtk3 但是 我遇到了错误 因此 我尝试了一个简单的程序来找出实际的错误 我的
  • 熊猫 style.background_gradient 忽略 NaN

    我有以下代码来转储数据帧results到 HTML 表格中 这样的列TIME FRAMES根据seaborn 的颜色图进行着色 import seaborn as sns TIME FRAMES 24h 7d 30d 1y Set CSS
  • Python控制台默认十六进制显示

    我在 Python 控制台中做了很多工作 其中大部分都涉及地址 我更喜欢以十六进制形式查看地址 So if a 0xBADF00D 当我简单地输入Python gt a进入控制台查看其值 我更喜欢 python 回复0xBADF00D代替1
  • 在 PyCharm 中运行命令行命令

    你好 我正在使用Python 但之前从未真正使用过它 我收到一些命令 需要在终端中运行 基本上 python Test py GET feeds 我正在使用 PyCharm 我想知道是否有办法从该 IDE 中运行这些相同的命令 按 Alt
  • 使用主宰器将实时数据发送给客户端

    我尝试使用 Flask 的主宰框架 以便按照 Flask 代码片段将实时信息发送到客户端浏览器http flask pocoo org snippets 80 http flask pocoo org snippets 80 当我尝试为我的
  • Pandas:向量化局部范围操作([i:i+2] 行的最大值和总和)

    我希望在数据帧中的每一行的局部范围内进行计算 同时避免速度缓慢for环形 例如 对于下面数据中的每一行 我想找到未来 3 天内 包括当天 的最高气温以及未来 3 天内的总降雨量 Day Temperature Rain 0 30 4 1 3
  • 如何使用子进程打开新的浏览器选项卡?

    我正在打开一个新的 IE 窗口 subprocess Popen r os environ PROGRAMFILES Internet Explorer IEXPLORE EXE Call URL 当 IE 关闭时这很好 但即使打开它也会生
  • wxPython:更新wx.ListBox列表

    我在 python 程序中有一个 wx ListBox 我不想在 wx Timer 更新时更改其中的列表 我的计时器正在工作 我只是不知道如何更改它显示的列表 这是一个例子 http www daniweb com code snippet
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • 如何使用 Python Pandas 制作 DataFrame 切片并在特定切片中“fillna”?

    问题 让我们从 Kaggle 获取泰坦尼克号数据集 我有包含 Pclass 性别 和 年龄 列的数据框 我需要用特定组的中位数填充 年龄 列中的 NaN 如果是来自一等的女性 我想用一等女性的中位数填写她的年龄 而不是整个年龄列的中位数 问
  • Tensorboard——High-level节点的计算时间与其子节点计算时间的总和不同

    继tutorial https www tensorflow org programmers guide graph viz在 TensorFlow 上 我试图使用张量板来理解运行时统计数据 我发现代表名称范围的高级节点的计算时间不等于其子
  • 为什么 Python exec 中的模块级变量无法访问?

    我正在尝试使用Pythonexec in a project https github com arjungmenon pypage执行嵌入的Python代码 我遇到的问题是在模块级 in an exec声明是难以接近的来自同一模块中定义的
  • Scrapy - 持续从数据库中获取要爬取的url

    我想不断地从数据库中获取要爬行的网址 到目前为止 我成功地从基地获取了 url 但我希望我的蜘蛛继续从该基地读取 因为该表将由另一个线程填充 我有一个管道 一旦爬行 工作 就会从表中删除 url 换句话说 我想使用我的数据库作为队列 我尝试
  • Pymongo 批量插入

    我正在尝试批量插入文档 但批量插入时不会插入超过 84 个文档 给我这个错误 in insert pymongo errors InvalidOperation cannot do an empty bulk insert 是否可以批量插入

随机推荐

  • 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