[日更挑战-第十三弹]python-pygame初识
2020-05-28 本文已影响0人
小明阿婆
也是突然间心血来潮,想着捣鼓捣鼓 pygame 这个模块。今天呢,就是找了一个入门级别的小程序来解读,虽然说是入门级别,但解读还是费了挺大功夫的,下面的代码是从 wanghuizhao 大神的博客搬运过来,备注呢,是我的解读。
使用工具:pygame
环境准备:
- 搭建python开发环境
- 在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()
效果展示
那么本次的分享就到这里了,喜欢的话麻烦点赞关注一下;不喜欢的话可以去看下小编的其他文章,肯定有喜欢的;都不喜欢的话可以点个关注,万一以后有喜欢的呢(๑•̀ㅂ•́)و✧