Python之pygame角色造型切换效果,人物移动效果
我自己找了很久的角色造型切换效果,角色移动效果,有见过,都是很复杂,所以我自己做了一个简单的效果
注意,角色背景的图片自己随便找找就行了,主要的是做这个的方式
这个是基本效果,有个升级移动效果,按下上键就可以跳
- 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)
推荐阅读