通用砖游戏的问题,网格适用于ipad但不适用于iPhone

时间:2014-09-13 04:33:37

标签: ios iphone ipad

我遇到了一个我无法解决的问题。

我在一个6x7的网格上创建了​​一个砖块游戏(41块砖和1个空方块)。下面的代码显示了我如何创建网格,而名为“correct”的图片显示了如何将砖块放置在网格上。

enter image description here (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)。

enter image description here

我错过了什么?

问:有没有办法可以(而且我知道这可能听起来很奇怪),突出显示网格上的方块(没有砖块),以便找出我应该用于砖块的正确尺寸

注意:我注意到的一件事(但我不知道它是否相关)当我在ipad代码上移除i和j前面的值时,砖块在左边相互排列在一起网格底部,只显示一块砖,顶部是砖块。但是,当我对iPhone代码中的砖块做同样的事情时,它们排列在彼此相邻的2块砖块中,其余部分排列在它们下面,有时还有4块砖块(顶部2块,底部2块,形成一个更大的正方形)。 这是为什么?这会导致我遇到的这个问题吗?

0 个答案:

没有答案