[英]2d array gamemaker2 studio
经验丰富的程序员在玩Gamemaker2 Studio。
尝试使用2D数组在屏幕上绘制一些随机正方形以存储“地图”
步骤1:声明一个二维数组MyMap [25,25]
第2步:在Map [] = 1中设置100个随机位置,此方法有效
当我尝试查找存储在数组中的值时出现崩溃。
其崩溃原因:**执行错误-变量索引[3,14]超出范围[26,14] **
所以看起来它正在尝试读取26个元素,当从我的代码中可以看到,for next循环仅到达20,数组边界为25。
奇怪的是,前两个循环还好吗?
看起来像个错误,我花了很多时间来解决它,任何人都知道发生了什么事?
var tx=0;
var ty=0;
var t=0;
MyMap[25,25]=99; **// Works**
for( t=1; t<100; t+=1 ) **// Works**
{
MyMap[random(20),random(15)]=1
}
for( tx=1; tx<20; tx+=1 )
{
for( ty=1; ty<15; ty+=1 )
{
show_debug_message(string(tx) + ":" + string(ty))
t = MyMap[tx,ty]; /// **<---- Crashes Here**
if t=1 then {draw_rectangle(tx*32,ty*32,tx*32+32,ty*32+32,false) }
}
}
行MyMap[random(20),random(15)]=1
不会初始化整个数组中的值,而是创建一个稀疏数组(其中某些元素不存在)。
这行MyMap[25,25]=99;
应该读:
for( tx=1; tx<20; tx+=1 )
{
for( ty=1; ty<15; ty+=1 )
{
MyMap[tx,ty]=99;
}
}
这会将所有数组值预先初始化为99。填写数组。
然后,您可以随机分配这些。 (由于随机函数重复且随机返回零,您可能会得到少于100的整数。)
您应该在“创建事件”,另一个火灾或受控火灾事件中具有上述代码,并将绘制循环移动到“绘制事件”中。
所有绘图调用都应在Draw事件中。 如果整个块都处于“绘制”状态,它将在每个步骤中随机分配块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.