Pygame - 像素碰撞地图

4

我正在使用pygame创建一款游戏,需要一个地图,让用户可以通过点击选择国家。

有人能帮帮我吗?


3
顶尖提示:试着去做,如果你想要解决某个具体的问题再回来。这听起来有点像你希望有人为你完成它。 - Thomas K
1
我建议你从这本书开始学习:http://inventwithpython.com/chapters/ - John
你的地图是位图图像吗?国家有不同的颜色吗? - phkahler
这是一个PNG图像,我可以制作不同的颜色。 - Mateus
我已经尝试过了,这就是为什么我在寻求帮助。我创建了每个国家的图像,然后尝试了像素完美碰撞,但是要么选择所有国家,要么一个也不选。另一个想法是创建一个“隐形”图像,这样当点击时,我可以检查被点击的颜色并知道国家,但我不知道如何从点击中获取颜色。 - Mateus
2个回答

4
除非你已经找到了解决方法,否则我看没有简单的方法可以做到这一点 - 当然,你需要先有一个世界地图 - 这个维基百科上的地图似乎是一个不错的起点: http://upload.wikimedia.org/wikipedia/commons/0/03/BlankMap-World6.svg --啊,我从你的评论中看到你已经画好了地图-- 如果你只需要获取点击位置的颜色,那么更容易 - 使用鼠标事件获取点击坐标:
e = pygame.event.poll()
if e == pygame.MOUSEBUTTONDOWN:
    pos = e.pos
    # where "screen" is your variable holding the screen surface color = screen.get_at((pos))

2
有点老了,但我想分享我的想法,你可以设置第二个图像(未绘制),与另一个相同大小的图像进行查找,这意味着你不需要让国家具有实心颜色。 - Hugoagogo

0
如果每个国家都有不同的颜色,而你知道它们,你可以使用以下代码进行检测:
import pygame
pygame.init()
screen = pygame.display.set_mode([100,100])
print(screen.get_at([50,50]))#returns tuple with color values
pygame.quit()

希望这能帮助解决你的问题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接