你好,我是悦创。前面我们开始的为期 30天的更新挑战第一篇,接下来我们是第二篇。第一篇的课程视频,也已经在微信公众号里面了。有兴趣的可以关注公众号:AI悦创。上一篇的链接:https://mp.weixin.qq.com/s/Fth21WgO6f89dzNLSBZUoA
目录
- 载入图片、调整大小
- 图片显示规则
- 足球反弹
1. 载入图片、调整大小
案例 1:新建文件,准备好两个图片文件(可自行下载喜欢的图片,这两个图片完整文件名已经改为 football.png 和 background.jpg ),三个文件放同一文件夹内。然后编码进行图片载入和调整大小。
为了,方便后续的阅读,退出处理部分已经写成函数 quit() 写成函数部分,我在零基础一对一部分已经讲解过了,如果有需要学 Python 零基础一对一的人欢迎联系报名,长期招收。
import pygame
import sys
pygame.init()
size = width, height = 600, 400
screen = pygame.display.set_mode(size)
pygame.display.set_caption('我的游戏')
def quit():
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
football = pygame.image.load('football.png')
football = pygame.transform.smoothscale(football, (60, 60))
while True:
quit()
screen.blit(football, (100, 100))
pygame.display.update()
代码解析:
- pygame 中的图像相关函数在 image 里,载入使用
load() 。 - 载入时填写图片完整名称,载入时的图片数据被视为一个表面(surface),这个面可以改变坐标和大小。
- 显示图片时,使用创建的屏幕来显示(PS:我们的东西肯定是放在屏幕上面来显示的)所以这里用了 screen,显示函数是
blit() ,它有两个参数,分别是要显示的面和这坐标。
2. 图片显示规则
- 在 pygame 中采用屏幕左上角为坐标原点,向下为 y 正方向,向右为 x 正方向。
bg = pygame.image.load('background.jpg')
bg = pygame.transform.smoothscale(bg, (600, 400))
screen.blit(bg, (0, 0))
为了,防止小白不理解,不知到代码放在哪里,下面放上代码图片:
注意:
载入背景图片后,设定为窗口一样的大小,然后将坐标设为 (0, 0) ,此时正好铺满背景。
3. 足球反弹
案例 2: 让足球在球场中运动,碰到边界就反弹,在原理的代码上做如下的修改。
我来提示一下:
我们知道图片显示的位置依靠坐标来定决定,那么坐标变化就意味着图片的运动。
图片坐标要变化,写定的数值显然是不可以的,所以用变量来表示坐标和对应的速度。
碰到边界实际上就是坐标超出了屏幕的大小了,需要注意图片上下左右的坐标,要考虑图片的尺寸。
这里我就直接放在完整代码:
import pygame, sys
pygame.init()
size = width, height = 600,400
screen = pygame.display.set_mode(size)
pygame.display.set_caption("我的世界")
football = pygame.image.load(r'football.png')
football = pygame.transform.smoothscale(football, (width//6, height//4))
background = pygame.image.load(r'background.jpg').convert_alpha()
background = pygame.transform.smoothscale(background, (width, height))
pygame.display.set_icon(football)
ball_rect = football.get_rect()
speed = [1,1]
bgcolor = pygame.Color('black')
fclock = pygame.time.Clock()
fps = 300
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bgcolor)
screen.blit(background, (0, 0))
ball_rect = ball_rect.move(speed[0], speed[1])
if ball_rect.top < 0 or ball_rect.bottom >height:
speed[1] = -speed[1]
if ball_rect.left < 0 or ball_rect.right > width:
speed[0] = -speed[0]
screen.blit(football, ball_rect)
pygame.display.update()
fclock.tick(fps)
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。QQ、微信在线,随时响应!V:Jiabcdefh
|