[日更挑战-第十三弹]python-pygame初识

2020-05-28  本文已影响0人  小明阿婆



也是突然间心血来潮,想着捣鼓捣鼓 pygame 这个模块。今天呢,就是找了一个入门级别的小程序来解读,虽然说是入门级别,但解读还是费了挺大功夫的,下面的代码是从 wanghuizhao 大神的博客搬运过来,备注呢,是我的解读。

使用工具:pygame



环境准备:


  1. 搭建python开发环境
  2. 在cmd下,执行下面的命令
pip install pygame

源码讲解环节


好的,下面就是喜闻乐见的源码讲解环节了(´◔౪◔)

import pygame
from pygame.locals import *
from sys import exit

# pygame参数初始化
pygame.init()

# 生成窗口以及窗口标题  参数:长宽,0为不显示特性,32为色深
screen = pygame.display.set_mode((640, 480), 0, 32)
pygame.display.set_caption("Little Case")

# 加载并转换图片
# convert()可以将图片转换为surface对象,但现在pygame默认自动转换
# 而convert_alpha()则是在上者的基础上保留度了图像的Alpha通道信息,即透明部分
highway = pygame.image.load("highway.jpg").convert()
car = pygame.image.load("car.png").convert_alpha()

# 初始坐标
x = 0
y = 300
# car的数值
z = 1

# 加载以及渲染字体
# 从系统字体库创建一个 Font对象, "arial"为name   16为size
# 这里也可以使用一个ttf字体文件的地址,但调用的方法就应该换成pygame.font.Font()
my_font = pygame.font.SysFont("arial", 16)

# 参数一:显示的内容
# 参数二:是否开启抗锯齿,就是说True的话字体会比较平滑,不过相应的速度有一点点影响
# 参数三:字体颜色
# 参数四:字体背景颜色(可选)
text_surface = my_font.render(("%d car" % (z)), True, (0, 0, 255))

# 创建帧率对象
clock = pygame.time.Clock()


# 主循环
while True:
    # 帧率越小,画面越卡
    clock.tick(120)


    # 如果监听到点击右上角的退出,则退出
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.display.quit()
            exit()

    # 矩形颜色坐标等,就是右上角框住car的矩形
    rc = (0, 250, 0)
    rp = (560, 0)
    rs = (639, 60)

    # 每次x前进0.2  但这里会触发一个警告,x为float,python会警告需要int的形式,并说明以后可能会不支持float
    # x += 0.2

    # 可以引入clock对象,控制帧率
    x += 2

    # 如果x>640+小车的长度
    if x > 640 + car.get_width():
        # x归为负小车的长度
        x = -car.get_width()
        # 车辆+1
        z += 1
        # 刷新字体对象
        text_surface = my_font.render(("%d cars" % z), True, (0, 0, 255))

    # 运用blit函数,参入对象与左上的坐标
    screen.blit(highway, (0, 0))
    screen.blit(text_surface, (620 - text_surface.get_width(), text_surface.get_height()))
    screen.blit(car, (x, y))
    # draw.rect为画矩形  参数为对象,颜色,左上角坐标和右下角坐标,宽度
    pygame.draw.rect(screen, rc, Rect(rp, rs), 1)  # Rect(左上角的坐标,右下角的坐标)

    # 画布刷新
    pygame.display.update()


效果展示




那么本次的分享就到这里了,喜欢的话麻烦点赞关注一下;不喜欢的话可以去看下小编的其他文章,肯定有喜欢的;都不喜欢的话可以点个关注,万一以后有喜欢的呢(๑•̀ㅂ•́)و✧


上一篇下一篇

猜你喜欢

热点阅读