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

这篇博客展示了如何利用Pygame库创建一个简单的2D游戏,包括角色造型的切换和角色上移的移动效果。作者通过遍历图片列表实现了角色造型的循环显示,并在用户按下上键时,让角色向上移动并回弹,提供了基本的游戏交互体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

 

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值