我正在制作世界 Map 的修订游戏,但我正在努力编写这个 .
每个大陆都是不同的颜色(红色,绿色,深蓝色,黄色,橙色,紫色),背景是浅蓝色 .
当光标悬停在一个大陆上时,它应该对该大陆的白色版本进行blit以表示用户将鼠标悬停在该大陆上 . 当光标在'water'上时,它应该只有世界 Map blitted .
当我运行它时,每个大陆的颜色与GIMP中的颜色稍有变化,然后一旦光标移过它就会在它运行时发生变化 .
这是我的代码:
import pygame
pygame.init()
import time
running = False
display_width = 800
display_height = 600
screen = pygame.display.set_mode((display_width,display_height))
blue = (69,200,209)
screen.fill(blue)
africaw = pygame.image.load("africaw.png")
asiaw = pygame.image.load("asiaw.png")
australiaw = pygame.image.load("australiaw.png")
europew = pygame.image.load("europew.png")
northamericaw = pygame.image.load("northamericaw.png")
southamericaw = pygame.image.load("southamericaw.png")
这些图像是白色的大陆,具有透明背景 .
worldmap = pygame.image.load("worldmap.png")
screen.blit(worldmap,(0,0))
pygame.display.update()
while not running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = True
if event.type == pygame.MOUSEMOTION:
mousemove = pygame.mouse.get_pos()
color = screen.get_at(mousemove)
if color == (209,79,70,255) or color == (255,255,255,255):
screen.blit(africaw,(0,0))
pygame.display.update()
elif color == (130,209,70,255) or color == (255,255,255,255):
screen.blit(asiaw,(0,0))
pygame.display.update()
elif color == (227,134,58,255) or color == (255,255,255,255):
screen.blit(australiaw,(0,0))
pygame.display.update()
elif color == (148,70,209,255) or color == (255,255,255,255):
screen.blit(europew,(0,0))
pygame.display.update()
elif color == (227,216,58,255) or color == (255,255,255,255):
screen.blit(northamericaw,(0,0))
pygame.display.update()
elif color == (58,69,227,255) or color == (255,255,255,255):
screen.blit(southamericaw,(0,0))
pygame.display.update()
elif color != (255,255,255,255):
screen.blit(worldmap,(0,0))
pygame.display.update()
pygame.quit()
另外,如果我将 or color == (new colour rbga)
添加到每个 elif
,当我将鼠标悬停在任何一个大陆上时,非洲也总是会对自身的白色版本进行点击 .
此外,当我在欧洲和亚洲之间移动光标时,它们大多数时间都保持白色 . 我也会做国家,所以这是一个很大的问题 .
1 回答
我建议以不同的方式构建游戏 . 每帧都显示
worldmap
,然后获取worldmap
的活动像素的颜色,查看颜色是否与其中一个大陆相匹配,然后将该大陆的白色图像blit . 我还建议将颜色分配给变量,以便更容易区分 .