美文网首页
Day18——pygame

Day18——pygame

作者: Devil灬 | 来源:发表于2019-01-16 21:16 被阅读0次

    一、程序中导入pygame库

    import pygame
    

    二、初始化pygame, 做准备工作

    pygame.init()
    

    三、创建游戏窗口

    set_mode(窗口大小) ——> 返回一个surface类型的对象
    窗口大小对应的值是一个元组,窗口大小 == ((宽, 高))

    window = pygame.display.set_mode((400, 600))
    

    四、设置窗口标题

    pygame.display.set_caption('游戏')
    

    五、设置窗口背景颜色

    fill(颜色)
    颜色是一个元组,元组有三个int类型的元素,返回是0~255;分别代表R,G,B
    计算机三原色: 红、绿、蓝
    红色 (255, 0, 0)
    绿色 (0, 255, 0)
    蓝色 (0, 0, 255)
    白色 (255, 255, 255)
    黑色 (0, 0, 0)

    window.fill((255, 255, 255))
    

    六、显示图片

    1. 加载图片
      image.load(图片地址) ——> 返回图片对象(surface)
    image = pygame.image.load('图片地址')
    
    1. 将图片添加(渲染)到窗口上
      blit(渲染对象, 坐标)
      坐标: 一个元组,两个元素,分别是x坐标和y坐标
    window.blit(image, (0, 0))
    
    1. 获取图片对象大小
      surface类型有个对象方法: get_size() ——> 返回的是元组
    # 获取窗口大小
    window_width, window_height = window.get_size()
    # 获取图片大小
    image_width, image_height = image.get_size()
    # 添加渲染
    window.blit(image, (window_width - image_width, window_height - image_height))
    
    1. 图片缩放和旋转(形变)
      transform.scale(缩放对象, 目标大小) ——> 返回缩放后的新对象
      transform.rotozoom(旋转缩放对象, 旋转角度, 缩放比例)
    # 缩放
    new_image = pygame.transform.scale(image, (50, 50))
    # 旋转、缩放
    new_image = pygame.transform.rotozoom(image, 45, 0.8)
    # 添加渲染
    window.blit(new_image, (10, 250))
    

    七、显示文字

    1. 创建字体对象
      a. 系统字体
      font.SysFont(字体名, 字体大小) ——> 返回一个字体对象
    font = pygame.font.SysFont('Times', 40)
    

     b.自定义字体
     font.Font(字体文件路径, 字体大小)

     font = pygame.font.Font('字体文件路径', 40)
    
    1. 根据字体创建文字对象
      render(文字, True, 文字颜色) ——> 返回一个文字对象(Surface)
    text = font.render('hello世界!', True, (255, 0, 0))
    
    1. 获取字体对象大小
      同图片
    width, height = text.get_size()
    
    1. 显示文字
      blit(渲染对象, 坐标)
      同图片
     window.blit(text, (400 - width, 600 - height))
    

    八、画图形

    1. 画线
      line(画的地方, 线的颜色, 起点, 终点, 线宽=1)
    pygame.draw.line(window, (0, 255, 0), (10, 10), (100, 100), 4)
    
    1. 连线
      lines(画的地方, 线的颜色, 是否关闭, 点列表, 线宽=1)
    point_list = [(200, 200), (250, 10), (300, 200), (150, 100), (350, 100)]
    pygame.draw.lines(window, (255, 0, 0), True, point_list)
    
    1. 画圆
      circle(画的地方, 线的颜色,圆心,半径, 线宽=0)
    pygame.draw.circle(window, (0, 0, 0), (200, 300), 100, 0)
    
    1. 画多边形
      polygon(画的地方,线的颜色, 点列表,线宽)
    pygame.draw.polygon(window, (255, 0, 0), point_list, 0)
    
    1. 画矩形
      rect(画的地方,线的颜色, 矩形, 线宽)
      矩形(left, top, width, height) ——> 如图


    pygame.draw.rect(window, (100, 20, 50), (200, 470, 100, 50), 2)
    
    1. 画弧线
      arc(画的地方,线的颜色, 矩形, 起始弧度, 终止弧度, 线宽)
    import math
    
    pygame.draw.arc(window, (0, 255, 255), (10, 470, 150, 200), math.pi / 4, math.pi / 4 * 3, 5)
    

    九、保存修改的窗口

    想要对窗口内容进行的修改有效,必须执行以下操作

    pygame.display.flip()
    

    十、游戏循环

    让游戏保持运行状态

    while True:
        # 不断检测游戏过程中是否有事件的产生
        for event in pygame.event.get():
            # 只有当事件产生后才会进入for循环
            if event.type == pygame.QUIT:    # 退出
                exit()  # 或 return
    

    十一、事件

    1. 鼠标事件
      MOUSEBUTTONDOWN —— 鼠标按下
      MOUSEBUTTONUP —— 鼠标弹起
      MOUSEMOTION —— 鼠标移动
      鼠标事件要关注事件发生的位置: event.pos —— 鼠标的坐标,元组

    2. 键盘事件
      KEYDOWN —— 键盘按下
      KEYUP —— 键盘弹起
      键盘事件要关注哪个键被按了:event.key —— 按键对应的字符的编码,数字

    相关文章

      网友评论

          本文标题:Day18——pygame

          本文链接:https://www.haomeiwen.com/subject/xbrvdqtx.html