pygame-在“滚动”表面上制作鼠标互动元素

时间:2016-02-11 03:35:29

标签: python-3.x scroll pygame interactive pc

好的,所以我们制作的风险式征服游戏的世界地图是由一个鼠标互动的“国家”对象矩阵构成的,这些对象包含自己的值,如名称,所有者和单位数。

现在整个地图的大小适合游戏画面;我们正在考虑使地图可滚动。我可能发现,我们在自己的表面上生成比游戏屏幕更大的地图,然后将地图表面的一部分blit到游戏屏幕的地下,并让玩家输入偏移地图的哪个部分被绘制在给定的时间。

我知道这种类型的滚动工作 - 这不是这个问题的关键 - 问题是使用这种滚动会阻止我们让玩家使用鼠标正确地与地图上的国家互动?

我们已经尝试了一种滚动形式,我们只是偏移地图矩阵的索引来移动国家/地区的位置,但是这给服务器处理攻击命令的问题,因为相同的两个国家可能处于不同的坐标对不同的玩家。我描述的滚动方法允许地图本身对所有玩家保持静止,但是我们如何确定鼠标相对于世界地图的位置而不是它在游戏画面上的位置?

1 个答案:

答案 0 :(得分:1)

您必须将屏幕上的鼠标位置转换为世界坐标。滚动地图时,会生成偏移,您必须使用它进行平移。

如果地图未滚动(地图的(0, 0)位于屏幕的(0, 0)),并且玩家点击(12, 12),您就知道她点击{{1世界。

当此播放器向右滚动地图时(比如说100px),然后在屏幕的(12, 12)处显示地图表面。现在,如果玩家点击(-100, 0),您就可以在地图(12, 12)上计算屏幕的(12, 12)实际为(112, 12)

因此,如果您想确定玩家点击的国家/地区,请始终使用已翻译的坐标(而不是屏幕坐标),并且您描述的问题会消失。