python-3.x 如何在Pygame中制作电池计量器?

zpjtge22  于 2023-11-20  发布在  Python
关注(0)|答案(1)|浏览(147)

我用Python编写了一个手电筒程序,想让电池电量在手电筒打开时发生变化。我做了一个简单的版本,它只会像这样变化:

  1. high = pygame.image.load("battery_high.jpeg")
  2. medium = pygame.image.load("battery_med.jpeg")
  3. low = pygame.image.load("battery_low.jpeg")
  4. battery = 100
  5. while True:
  6. battery -= 0.1;
  7. for event in pygame.event.get():
  8. if event.type == pygame.QUIT:
  9. break
  10. game_display.fill(WHITE)
  11. battery_img = None
  12. if battery > 66:
  13. battery_img = high;
  14. elif battery > 33:
  15. battery_img = medium;
  16. else:
  17. battery_img = low;
  18. display.blit(battery_img, (0, 0));
  19. pygame.display.flip()

字符串
电池更换不是很顺利,如果我有60%的电池,我希望 Jmeter 是60%充满。我怎么做?我认为修复是切断图像,但我不知道如何。

mm5n2pyu

mm5n2pyu1#

你只有3张图片。要么你需要更多的图片,要么你必须在Pygame中绘制比例。这里有一段简单的代码,可以在图片上绘制动态比例。比例只是一个矩形,根据电池电量的变化而改变高度:


的数据

  1. import pygame
  2. pygame.init()
  3. screen = pygame.display.set_mode((300, 200))
  4. clock = pygame.time.Clock()
  5. battery_image_v = pygame.Surface((50, 100))
  6. battery_image_v.fill("darkgray")
  7. pygame.draw.rect(battery_image_v, "black", (18, 3, 14, 94))
  8. scale_image_v = pygame.Surface((10, 90))
  9. battery_image_h = pygame.Surface((100, 50))
  10. battery_image_h.fill("darkgray")
  11. pygame.draw.rect(battery_image_h, "black", (3, 18, 94, 14))
  12. scale_image_h = pygame.Surface((90, 10))
  13. battery = 100
  14. run = True
  15. while run:
  16. clock.tick(100)
  17. for event in pygame.event.get():
  18. if event.type == pygame.QUIT:
  19. run = False
  20. battery -= 1
  21. if battery < 0:
  22. battery = 100
  23. scale_image_v.fill("black")
  24. h = battery * scale_image_v.get_height() // 100
  25. y = scale_image_v.get_height() - h
  26. pygame.draw.rect(scale_image_v, "green", (0, y, 10, h))
  27. scale_image_h.fill("black")
  28. w = battery * scale_image_h.get_width() // 100
  29. pygame.draw.rect(scale_image_h, "green", (0, 0, w, 10))
  30. screen.fill("white")
  31. screen.blit(battery_image_v, battery_image_v.get_rect(center = (100, 100)))
  32. screen.blit(scale_image_v, scale_image_v.get_rect(center = (100, 100)))
  33. screen.blit(battery_image_h, battery_image_h.get_rect(center = (200, 100)))
  34. screen.blit(scale_image_h, scale_image_h.get_rect(center = (200, 100)))
  35. pygame.display.flip()
  36. pygame.quit()
  37. exit()

字符串

展开查看全部

相关问题