我最近在这里发布了一个问题
Randomly generated tunnel walls that don't jump around from one to the next
这几乎说我正在喝醉酒#34;由于缺乏算法,隧道而不是相关隧道。
答案在某种程度上适用于我尝试制作的内容,但我无法弄清楚如何正确地为我的游戏实施算法。
我相信第一步是为这对墙创造抵消。我想要出现的图像(命名为:" Left1"" Right1"" Left2和" Right2" ...." Left41&屏幕两侧的#34;和Right41")将重新产生"为了在外观上产生隧道的错觉,彼此连续略微向左或向右偏移。我试图在回答中使用提供给我的代码来为我的墙壁创建一个偏移量但是在尝试构建时我得到的错误很少。它首先告诉我一个当地的'左派'离开'隐藏实例变量,我相信这是因为它已经在我的函数中被声明为变量?这出现了两次..随之而来的是我有一个错误,指出分配给' UIImageView * __ strong'来自不兼容的类型'浮动'我该如何解决这些问题?或者是我在其他地方做错了什么?
由于语义问题,我不知道如何真正重新安排它,因此我在这方面有点迷失。我可以回答有关该计划的任何问题,以便更容易评估情况。
-(void) TunnelMovement{
CGFloat Left1 = 14;
for( int i = 0; i < 41; i++ ){
CGFloat offset = (CGFloat)arc4random_uniform(2*100) - 100;
Left1 += offset;
Right1 = Left1 + 14;
//...
}
}
这是我在尝试从给出的答案填写空白后完全在我的代码中。不确定我是否放入所有必需品或什么。谢谢。
答案 0 :(得分:0)
[我可以让你快速纠正这条错误信息,但你正试图跑步,你甚至无法行走,你几乎无法爬行。 Stack Overflow是一个编程论坛,但它不是学习或教授编程的地方,人们没有耐心去教授基础知识。]
如果一件东西是完全不同的东西,你就不能把它们的价值分配给另一件东西。在该行:
Right1 = Left1 + 14;
Right1是一个UIImageView而Left1是一个CGFloat,它们是完全不同的东西。 Left1只是一个简单的数字,Right1是一个复杂的对象。
您正在尝试定位UIImageView,因此您需要将Left1 + 14的值分配给UIImageView的一部分,该部分将定位它,也是一个CGFloat。
所以你需要将它分配给界限或框架或中心的x值,例如
Right1.center.x = Left1 + 14;
警告是因为你有两个不同的东西同名,你有UIImageView叫做Left1,但你有一个叫做Left1的CGFloat,你不应该给两个不同的东西 - CGFloat Left1隐藏名为Left1的UIImageView。您应该将其称为Left1X或LeftWallX或其他问题的答案。
这只是错误和警告,你可能还没有准备好继续使用如何绘制迷宫的语义,如果你正在使用这两个。特别是你至少需要知道边界,框架,中心,x,y,CGPoint,CGRect,CGSize是什么,以便完全理解要改变什么值以及改变这些值对于位置的影响。 UIImageViews。
----编辑---对象编程101
当你有一个像UIImageView这样的对象就像有一个房子一样,房子里有一个名字,里面有很多房间,每个房间都有一个名字,每个房间里都有很多东西。你试图在一个房间用新电视取代旧电视。
所以Right1就像一个房子
Right1.center就像一个房子里的房间
Right1.center.x就像是名为Right1的房间中的电视。
Right1 = Left1 + 14;
就像试图将新电视换成房子一样,而不是试图将它换成房子内的房间内的电视。
这个比喻太愚蠢了吗?