请选择 进入手机版 | 继续访问电脑版

Pygame(三)画圆

[复制链接]
林雨宣 发表于 2021-1-2 12:12:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
Pygame(三)画圆

作业代码


  • 画一个矩形:要求,左上角在(100,100), 宽为200, 高为60,边框颜色为蓝色
    作业代码:
  1. 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()
复制代码

  • 用矩形画一个10层的高楼
    要求:
  • 层高:50
  • 层宽:逐层递减,最宽(1层)200, 每层减8
  • 颜色:灰色(190, 190, 190)
作业代码
  1. 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()
复制代码

前情提要


本课提要


内容详解

画圆

  1. pygame.draw.circle(Surface, color, pos, radius, width=0)
复制代码
参数说明:


  • Surface : 同上节课,一个Surface范例对象, 一般screen
  • color: 线的颜色
  • pos:圆心坐标
  • radius: 半径
  • width:线宽
    说明:

    • 当设置为0大概不设置时,画出来的是实心的圆
    • 线宽是算在半径之内的,即当半径是5的时候,如果设置width = 5,画出来的是一个实心圆

示例代码
  1. 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:奥运五环
  1. 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()
复制代码
注意:

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

跋文:


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


  • 画一个边长为100的正方形,线宽为1, 颜色为蓝色.再画一个内切圆,实心赤色
  • 画一个半径为200的圆,再画一个内接正方形
    备注:盘算根号2取1.41

来源:https://blog.csdn.net/weixin_41810846/article/details/112071924
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )