【发布时间】:2014-05-06 05:08:00
【问题描述】:
我正在为我的游戏创建一个关卡设计师,您可以在用户控件上绘制图块。为了跟踪瓷砖,我做了一个 int[]:
public int[,] Tiles = new int[35, 35];
因为编辑屏幕是 560 像素 x 560 像素,35 个 16x16 块。 Tiles[x, y].Id 将给出 tile 的 id。
Id 将是图块的 id。每当放置一个瓦片时,它都会被记录在一个 void 下:
public void Draw(int x, int y, int bid)
{
//draw code here
Program.form.Tiles[x, y].Id = bid;
}
每当你点击时,就会调用 void:
//In the MouseClick void:
Draw(e.X / 16, e.Y / 16, 1);
0 是一个可用的块 id,但以 1 为例。
每当我去保存它时,(我保存到 .txt 文件)它应该记下 tile 的 id:
for (int x = 0; x < 35; x++)
{
for (int y = 0; y < 35; y++)
{
//Write code here
MessageBox.Show(Tiles[x, y].Id.ToString());
}
}
我只是让它在消息框中显示 Id 以查看,它总是给出“0”,即使您在某个 x、y 磁贴上进行编辑,其 blockid 定义为非 0。 有人知道为什么吗? 谢谢。 顺便说一句,在 STAThread 上面的“程序”类中,我放了:
public Form1 form;
然后:
form = new Form1();
Application.Run(form);
【问题讨论】:
-
除了
Id之外,Tiles的成员还有更多吗?否则,只需保留一个int数组即可。 -
试过了,还是 0 @ja72
-
试过什么?通过编辑问题显示您的代码。
-
试着把它变成一个 int[]。
-
//In the MouseClick void:颇有诗意的评论。