美文网首页
day12-pygame

day12-pygame

作者: d4lx | 来源:发表于2018-09-04 20:00 被阅读0次

    1、安装pygame并初步使用pygame

    a、在pyfile ---setting---project ----点“+”号,搜索pygame。
    b、在控制台输入"pip install pygame"
    步骤:

    import pygame
    # 1 、初始化游戏模块
    pygame.init()
    # 2、 创建窗口
    """
    set_mode(窗口大小)
    窗口大小:是一个元祖,并且元祖中需要两个值分别表示宽度和高度(单位是像素)
    
    """
    window = pygame.display.set_mode((1000,600))
    
    # 给窗口填充颜色
    """
    fill(颜色)
    颜色:计算机三原色(红绿蓝),每个颜色对应的值的范围是0-255,可以通过改变三原色的值可以调配出不同的颜色。
    颜色值:是一个元祖,元祖中三个元素,分别代表红绿蓝(rgb)
    (255,0,0)---红色
    (0,255,0)---绿色
    (0,0,255)---蓝色
    (0,0,0)----黑色
    (255,255,255)---白色
    """
    window.fill((255,255,0))
    
    """
    显示图片
    image.load(图片路径):获取本地的一张图片,返回图片对象
    
    """
    # a.获取图片,创建图片对象
    image = pygame.image.load('./files/01.jpg')
    
    """
    getsize():获取大小,返回值是一个元祖,有两个元素,分别是宽和高;
    
    """
    image_width,image_height = image.get_size()
    
    # b.渲染图片(将图片画在纸上)
    """
    blit(渲染对象,位置)
    位置:坐标(x,y),值的类型是元祖,元祖有两个元素分别对应x坐标和y坐标
    """
    window.blit(image,(1000-image_width,600-image_height))
    # c.展示内容(将纸贴在画框上)
    pygame.display.flip()
    
    

    02-形变

    例子:

    import pygame
    pygame.init()
    window = pygame.display.set_mode((1000,600))
    window.fill((255,255,255))
    
    #加载
    image = pygame.image.load('./files/01.jpg')
    
    """
    形变:
    a、缩放
    transform.scale(缩放对象,目标大小):将制定的对象缩放到指定的大小,会返回缩放后的对象。
    """
    new_image = pygame.transform.scale(image,(200,100))
    
    """
    b、旋转缩放(指定缩放比例)
    rotozoom(surface,angle,scale)
    surface:旋转缩放对象
    angle:旋转的角度(0-360)
    scale:缩放比例
    
    """
    new_image = pygame.transform.rotozoom(image,45,0.5)
    
    """
    c.旋转
    
    """
    new_image = pygame.transform.rotate(image,90)
    
    # 渲染图片
    window.blit(new_image,(0,0))
    # 展示
    pygame.display.flip()
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
    

    03-显示文字

    import pygame
    pygame.init()
    window = pygame.display.set_mode((400,600))
    window.fill((255,255,255))
    
    # 显示文字
    # 1、创建字体对象
    """
    a、创建系统字体
    SysFont(name, size, bold=False, italic=False, constructor=None)
    name:字体名
    size:字体大小
    bold:是否加粗
    italic:是否倾斜
    
    b、创建自定义的字体对象
    Font(字体文件路径,字体大小)
    字体文件路径:ttf文件
    
    """
    # 创建系统字体
    # font = pygame.font.SysFont('Times', 30)
    
    # 创建自定义字体
    font = pygame.font.Font('./files/aa.ttf', 30)
    
    
    # 2\根据字体取创建文字对象
    """
    render(self, text, antialias, color, background=None):
    text:需要显示的文字(字符串)
    anialias:是否平滑(布尔值)
    color:颜色
    background:
    
    """
    text = font.render('你好!hello pygame', True, (0,0,255),(255,255,0))
    
    # 3\渲染文字
    window.blit(text, (0,0))
    
    
    #4 \ 展示
    pygame.display.flip()
    
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
    

    04-显示图形

    import pygame
    from math import pi
    pygame.init()
    window = pygame.display.set_mode((600,400))
    window.fill((255,255,255))
    
    """
    1\画直线
    def line(surface, color, start_pos,end_pos,width=1)
    surface:画在哪儿
    color:线的颜色
    start_pos:起点
    end_pos:终点
    width:线宽
    """
    pygame.draw.line(window,(255,0,0),(50,100),(200,100))
    # 画一条垂直线
    pygame.draw.line(window,(0,255,0),(50,100),(50,300),)
    
    """
    2,画线段(折线)
    lines(Surface, color, closed, pointlist, width=1)
    surface:画在哪儿
    color:线的颜色
    closed:是否闭合
    pointlist:点对应的列表
    
    
    
    """
    pygame.draw.lines(window,(0,0,255),True,[(100,200),(150,120),(140,300)])
    
    """
    3、画圆
    circle(Surface, color, pos, radius, width=0):
    surface:画在哪儿
    color:颜色
    pos:圆心坐标
    radius:半径
    width:线宽,0--填充
    """
    pygame.draw.circle(window, (255,255,0), (300,200), 100 , 2)
    
    """
    4.画矩形
    rect(Surface, color, Rect, width=0)
    surface:画在哪儿
    color:颜色
    rect:范围(元祖,元祖中有四个元素,分别是x,y,width,height)
    """
    pygame.draw.rect(window,(0,255,0),(0,0,50,100))
    
    """
    5、画多边形
    
    """
    pygame.draw.polygon(window,(124,12,12),[(29,100),(23,159),(232,380),(234,100)])
    
    """
    6、画椭圆
    ellipse(Surface, color, Rect, width=0)
    """
    pygame.draw.ellipse(window,(23,43,45),(300,300,20,100))
    
    """
    7、画弧线
    arc(Surface, color, Rect, start_angle, stop_angle, width=1)
    start_angle:0-2pi
    
    """
    pygame.draw.arc(window,(112,89,23),(30,30,80,69),pi/2,pi)
    
    
    
    # 展示内容
    pygame.display.flip()
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
    

    05-事件

    通过实例来说明:

    import pygame
    from random import randint
    
    pygame.init()
    window = pygame.display.set_mode((600,600))
    window.fill((255,255,255))
    
    while True:
        #所有的事件处理的入口就是这个for循环
        #for循环中的代码只有游戏事件发生后才会执行
        """
        事件的type:——————决定发生的是什么事情
        鼠标事件:
        QUIT :关闭按钮被点击事件
        
        
        MOUSEBUTTONDOWN:鼠标按下事件。
        MOUSEBUTTONUP:鼠标弹起
        MOUSEBUTTON:鼠标移动
        
        
        键盘事件:
        KEYDOWN:键盘按下
        KEYUP:键盘弹起
        """
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                print('点击关闭按钮')
                exit()
            elif event.type == pygame.MOUSEBUTTONDOWN:
                print(event.pos)
                print('鼠标按下')
                pygame.draw.circle(window,(randint(0,255),randint(0,255),randint(0,255),randint(0,255)),event.pos,randint(20,50))
    
                pygame.display.flip()
            elif event.type == pygame.MOUSEBUTTONUP:
                print('鼠标弹起')
            elif event.type == pygame.MOUSEMOTION:
                print('鼠标移动')
                image = pygame.image.load('./files/01.jpg')
                new_image = pygame.transform.scale(image,(50,50))
                window.blit(new_image,event.pos)
                pygame.display.flip()
    
            elif event.type == pygame.KEYDOWN:
    
                print('键盘按下',event.key)
            elif event.type == pygame.KEYUP:
                print('键盘弹起')
    

    06-动画原理

    import pygame
    pygame.init()
    window = pygame.display.set_mode((600,600))
    window.fill((255,255,255))
    pygame.display.flip()
    
    x = 100
    y = 100
    y_speed = 1
    # 游戏循环
    while True:
        # 将之前屏幕上的内容给覆盖
        window.fill((255,255,255))
    
        # # 不断的画圆
        # pygame.draw.circle(window,(255,0,0),(x,y),50)
        # pygame.display.update()
        # # 改变y值让圆在垂直方向移动
        # y += 1
        pygame.draw.circle(window,(0,255,0),(x,y),40)
        pygame.display.update()
        y += y_speed
    
        # 边界检测:
        if y >= 600 - 20:
            y = 600 - 20
            y_speed = -2
        elif y < 50:
            y = 50
            y_speed = 2
    
        # 事件监测:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
    

    07-按住图片不放,拖动实例

    import pygame
    pygame.init()
    window = pygame.display.set_mode((600,600))
    window.fill((255,255,255))
    pygame.display.flip()
    
    image = pygame.image.load('./files/01.jpg')
    image = pygame.transform.rotozoom(image,0,0.2)
    
    window.blit(image,(100,100))
    # 获取图片的宽度和高度
    image_w,image_h = image.get_size()
    
    pygame.display.flip()
    
    
    
    flag = False
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
    
            if event.type == pygame.MOUSEBUTTONDOWN:
                flag = True
            if event.type == pygame.MOUSEBUTTONUP:
                flag = False
            # 鼠标移动事件
            # 鼠标在移动并且flag是True
            if event.type == pygame.MOUSEMOTION and flag:
                window.fill((255,255,255))
                # 在鼠标移动的位置渲染图片
                center_x,center_y = event.pos
                window.blit(image,(center_x-image_w/2,center_y-image_h/2))
                pygame.display.update()
    

    相关文章

      网友评论

          本文标题:day12-pygame

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