我遇到了一个我无法解决的问题。
我在一个6x7的网格上创建了一个砖块游戏(41块砖和1个空方块)。下面的代码显示了我如何创建网格,而名为“correct”的图片显示了如何将砖块放置在网格上。
(init文件,添加砖块)
CCSpriteBatchNode *SpriteBatchNode;
[[CCSpriteFrameCache sharedSpriteFrameCache]
addSpriteFramesWithFile:@"bricks_iPad.plist"];
SpriteBatchNode =
[CCSpriteBatchNode batchNodeWithFile:@"bricks_iPad.png"];
[self addChild:SpriteBatchNode z:1 tag:kSSheet];
for(int i =0; i< GRID_WIDTH ; i++) {
for(int j =0; j< GRID_HEIGHT ; j++) {
Bricks * b = [[Bricks alloc]initWithGame:self];
grid[i][j] = b;
[b release];
}
}
(放置砖块)
int BlankX = blankPosition.x;
int BlankY = blankPosition.y;
CCLOG(@"BlankX %d", BlankX);
CCLOG(@"BlankY %d", BlankY);
//empty spot in the bottom right corner of the grid
switch (level){
case 1:
blankPosition = CGPointMake(5, 0);
break;
case 10:
blankPosition = CGPointMake(BlankX, BlankY);
break;
case 20:
blankPosition = CGPointMake(BlankX, BlankY);
break;
case 30:
blankPosition = CGPointMake(BlankX, BlankY);
break;
case 40:
blankPosition = CGPointMake(BlankX, BlankY);
break;
case 50:
blankPosition = CGPointMake(BlankX, BlankY);
break;
case 60:
blankPosition = CGPointMake(BlankX, BlankY);
break;
case 70:
blankPosition = CGPointMake(BlankX, BlankY);
break;
case 80:
blankPosition = CGPointMake(BlankX, BlankY);
break;
}
for(int i =0; i< GRID_WIDTH ; i++)
{
for(int j =0; j< GRID_HEIGHT ; j++)
{
CGPoint orgPosition = CGPointMake(i,j);
if( blankPosition.x == orgPosition.x && blankPosition.y == orgPosition.y ){
Bricks * d = grid[i][j];
d.bricksType = 25; //give the blank location a unique value to prevent it to be matched with the rest of the bricks
continue;
}
Bricks * leftB = nil;
Bricks *leftmostB= nil;
Bricks * topB= nil;
Bricks *topmostB= nil;
int prohibitedLeft = -1, prohibitedTop = -1;
if(i>=2)
{
leftB = (Bricks *)grid[i-1][j];
leftmostB = (Bricks *)grid[i-2][j];
}
if(j>=2)
{
topB = (Bricks *)grid[i][j-1];
topmostB = (Bricks *)grid[i][j-2];
}
if(leftB && leftmostB && leftB.bricksType == leftmostB.bricksType)
{
prohibitedLeft = leftB.bricksType;
}
if(topB && topmostB && topB.bricksType == topmostB.bricksType)
{
prohibitedTop = topB.bricksType;
}
[grid[i][j] placeInGrid:ccp(100*i + GRID_OFFSETIPHONE.x,101*j + GRID_OFFSETIPHONE.y) pt:prohibitedTop pl:prohibitedLeft amount:AmountOfBricks];
}
}
当我在iPad模拟器上尝试时,一切正常,但是当我在iPhone模拟器上尝试相同的代码时,砖块的结果与图片“错误”显示的方式类似。 I. e。到处都是。 我试过几个值(砖块之间的空间)和砖块上的几个尺寸,但没有任何作用。 (适用于ipad的砖块尺寸为100x103,值为100 * I和101 * j)。
我错过了什么?
问:有没有办法可以(而且我知道这可能听起来很奇怪),突出显示网格上的方块(没有砖块),以便找出我应该用于砖块的正确尺寸注意:我注意到的一件事(但我不知道它是否相关)当我在ipad代码上移除i和j前面的值时,砖块在左边相互排列在一起网格底部,只显示一块砖,顶部是砖块。但是,当我对iPhone代码中的砖块做同样的事情时,它们排列在彼此相邻的2块砖块中,其余部分排列在它们下面,有时还有4块砖块(顶部2块,底部2块,形成一个更大的正方形)。 这是为什么?这会导致我遇到的这个问题吗?