Python之pygame角色造型切换效果,人物移动效果

我自己找了很久的角色造型切换效果,角色移动效果,有见过,都是很复杂,所以我自己做了一个简单的效果

注意,角色背景的图片自己随便找找就行了,主要的是做这个的方式

Python之pygame角色造型切换效果,人物移动效果_第1张图片

这个是基本效果,有个升级移动效果,按下上键就可以跳

 

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)

你可能感兴趣的:(pygame,pygame,python)