在tilemap环境(SFML)中创建视图的问题

时间:2019-04-27 16:02:55

标签: c++ sfml

我的简单2D瓷砖地图游戏遇到问题。我在屏幕上有一个角色,可以在由图块/块组成的世界中向各个方向移动。基本上,我创建了一个数组,其中的数字应该表示不同类型的块,而这些块又表示地面,天空和云彩。创建地图时会有所帮助。

此数组用于上下文:

from tkinter import *

window = Tk()

canvas = Canvas(window, width=300, height=300)
canvas.pack()


def add(image, x, y):
    canvas.create_image(x, y, image=image)


image1 = PhotoImage(file="images/AceHearts.png")
image2 = PhotoImage(file="images/AceClubs.png")
image3 = PhotoImage(file="images/AceDiamonds.png")

canvas.after(1000, add, image1, 50, 50)  # run after 1 sec
canvas.after(2000, add, image2, 70, 50)  # run after 2 sec
canvas.after(3000, add, image3, 90, 50)  # run after 3 sec

window.mainloop()

基本上,我想做的是我想将所有积木沿玩家行走的相反方向移动,以创建视图。现在,我不想使用内置的视图功能,而是要编写自己的视图,这导致了一些问题。

我已尝试使用以下代码作为示例,以查看我的想法是否可行:

int map[10][30] =
{
    {2, 3, 2, 3, 3, 3, 2, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 2},
    {2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2},
    {2, 2, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 2, 2, 2},
    {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
    {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
};

代码天空,地面和云中的对象是RectangleShapes,大小为50 x 50,并用不同的颜色区分。

此代码可用于打印世界,但由于某些原因,我根本不会移动这些块。根据我的逻辑,此代码除了打印出世界之外,还将在每一帧移动它(所有的块)。如果可以完成这项工作,则可以将view_direction向量替换为仅沿一个方向移动世界的当前移动向量,该view_direction向量根据角色的状态而变化(静止,向左移动,向右移动,向上移动,移动下)。知道我在这里做错什么的人,或者对如何创建在这种环境下工作的视图有更好,更有效,更轻松的想法的人。

0 个答案:

没有答案