我自己找了很久的角色造型切换效果,角色移动效果,有见过,都是很复杂,所以我自己做了一个简单的效果
注意,角色背景的图片自己随便找找就行了,主要的是做这个的方式
这个是基本效果,有个升级移动效果,按下上键就可以跳
import pygame
import gongju
import os
pygame.init()
ba = pygame.display.set_mode((713,520))
screen = pygame.image.load('images/shanpo.png')
clock = pygame.time.Clock()
x,y = 300,200
IMAGES = [] # 建立一个列表
for image in os.listdir('images/base_people/'): # 导入os模块,os.listdir用来顺序查看文件夹,会查看所有文件,从上到下
name, extension = os.path.splitext(image) # 拆分,将文件拆分成文件名与后缀 例如 图片.png 拆成了两部分,其实不拆也行
path = os.path.join('images/base_people/',image) # 拼接文件夹,因为我们不只是文件名,还有文件目录,才能成功导入
aa = pygame.image.load(path) # 用pygame的加载来把每一个图片加载进去
IMAGES.append(aa) # 将每一个pygame图片对象加入到列表中
print(len(IMAGES)) # 你自己也可以打印列表看一下
b = 0 # b初始化
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
list_people = IMAGES[b] # 通过while死循环,每一次循环,拿出里面的一个对象
b += 1 # 每次加1,因为我们列表里面有很多的造型
if b >= 8: # 因为我只有8个造型,超过8以后让他接着变成0
print(b)
b = 0
ba.blit(screen, (0, 0))
ba.blit(list_people,(x,y) ) # 绘制从列表里出来的每一个对象
pygame.display.update()
clock.tick(30)
升级效果:按下上键就可以移动了
import pygame
import gongju
import os
pygame.init()
ba = pygame.display.set_mode((713,520))
screen = pygame.image.load('images/shanpo.png')
clock = pygame.time.Clock()
x,y = 600,340
#baseball_people = pygame.image.load('images/baseball.gif')
#baseball_people_rect = baseball_people.get_rect(center=(x,y))
IMAGES = []
for image in os.listdir('images/base_people/'):
name, extension = os.path.splitext(image)
path = os.path.join('images/base_people/',image)
aa = pygame.image.load(path)
IMAGES.append(aa)
print(len(IMAGES))
b = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
for i in range(100):
baseball_people_rect.y -= 1
ba.blit(screen, (0, 0))
ba.blit(baseball_people, baseball_people_rect)
pygame.display.update()
for i in range(100):
baseball_people_rect.y += 1
ba.blit(screen, (0, 0))
ba.blit(baseball_people, baseball_people_rect)
pygame.display.update()
list_people = IMAGES[b]
b += 1
if b >= 8:
print(b)
b = 0
# rotozoom(缩放/旋转对象,旋转角度(0-360),缩放比例),与上面相比多了个缩放的功能
# 不想缩放就写个1
baseball_people = pygame.transform.rotozoom(list_people, 0, 0.5)
baseball_people_rect = baseball_people.get_rect(center=(x, y))
ba.blit(screen, (0, 0))
ba.blit(baseball_people, baseball_people_rect)
pygame.display.update()
clock.tick(30)