WHCSRL 技术网

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

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

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

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

 

  1. import pygame
  2. import gongju
  3. import os
  4. pygame.init()
  5. ba = pygame.display.set_mode((713,520))
  6. screen = pygame.image.load('images/shanpo.png')
  7. clock = pygame.time.Clock()
  8. x,y = 300,200
  9. IMAGES = [] # 建立一个列表
  10. for image in os.listdir('images/base_people/'): # 导入os模块,os.listdir用来顺序查看文件夹,会查看所有文件,从上到下
  11. name, extension = os.path.splitext(image) # 拆分,将文件拆分成文件名与后缀 例如 图片.png 拆成了两部分,其实不拆也行
  12. path = os.path.join('images/base_people/',image) # 拼接文件夹,因为我们不只是文件名,还有文件目录,才能成功导入
  13. aa = pygame.image.load(path) # 用pygame的加载来把每一个图片加载进去
  14. IMAGES.append(aa) # 将每一个pygame图片对象加入到列表中
  15. print(len(IMAGES)) # 你自己也可以打印列表看一下
  16. b = 0 # b初始化
  17. while True:
  18. for event in pygame.event.get():
  19. if event.type == pygame.QUIT:
  20. exit()
  21. list_people = IMAGES[b] # 通过while死循环,每一次循环,拿出里面的一个对象
  22. b += 1 # 每次加1,因为我们列表里面有很多的造型
  23. if b >= 8: # 因为我只有8个造型,超过8以后让他接着变成0
  24. print(b)
  25. b = 0
  26. ba.blit(screen, (0, 0))
  27. ba.blit(list_people,(x,y) ) # 绘制从列表里出来的每一个对象
  28. pygame.display.update()
  29. clock.tick(30)

升级效果:按下上键就可以移动了

  1. import pygame
  2. import gongju
  3. import os
  4. pygame.init()
  5. ba = pygame.display.set_mode((713,520))
  6. screen = pygame.image.load('images/shanpo.png')
  7. clock = pygame.time.Clock()
  8. x,y = 600,340
  9. #baseball_people = pygame.image.load('images/baseball.gif')
  10. #baseball_people_rect = baseball_people.get_rect(center=(x,y))
  11. IMAGES = []
  12. for image in os.listdir('images/base_people/'):
  13. name, extension = os.path.splitext(image)
  14. path = os.path.join('images/base_people/',image)
  15. aa = pygame.image.load(path)
  16. IMAGES.append(aa)
  17. print(len(IMAGES))
  18. b = 0
  19. while True:
  20. for event in pygame.event.get():
  21. if event.type == pygame.QUIT:
  22. exit()
  23. if event.type == pygame.KEYDOWN:
  24. if event.key == pygame.K_UP:
  25. for i in range(100):
  26. baseball_people_rect.y -= 1
  27. ba.blit(screen, (0, 0))
  28. ba.blit(baseball_people, baseball_people_rect)
  29. pygame.display.update()
  30. for i in range(100):
  31. baseball_people_rect.y += 1
  32. ba.blit(screen, (0, 0))
  33. ba.blit(baseball_people, baseball_people_rect)
  34. pygame.display.update()
  35. list_people = IMAGES[b]
  36. b += 1
  37. if b >= 8:
  38. print(b)
  39. b = 0
  40. # rotozoom(缩放/旋转对象,旋转角度(0-360),缩放比例),与上面相比多了个缩放的功能
  41. # 不想缩放就写个1
  42. baseball_people = pygame.transform.rotozoom(list_people, 0, 0.5)
  43. baseball_people_rect = baseball_people.get_rect(center=(x, y))
  44. ba.blit(screen, (0, 0))
  45. ba.blit(baseball_people, baseball_people_rect)
  46. pygame.display.update()
  47. clock.tick(30)

推荐阅读