Пример #1
0
void AGOSEngine_Feeble::inventoryDown(WindowBlock *window) {
	_marks = 0;
	checkDown(window);
	animate(4, 9, 23, 0, 0, 0);
	while (_currentBoxNum == 0x7FFC && getBitFlag(89)) {
		checkDown(window);
		delay(1);
	}
	waitForMark(2);
	checkDown(window);
	sendSync(924);
	waitForMark(1);
	checkDown(window);
}
Пример #2
0
void            Map::setBonus()
{
    checkRight();
    checkLeft();
    checkUp();
    checkDown();
}
Пример #3
0
void testNavigate(){
    
    int check, nextX, nextY;
    initDir(); //start by getting the initial direction
    solution = createStack();
    push(solution, current); // add the starting square to the stack
    
    while (current->val != 'F'){  // the maze sloving loop
        printf("current position: (%d, %d)\ncurrent direction: %c\n",current->x, current->y,dir);
        switch(dir){
            case 'n':
                check = checkUp();
                nextX = current->x;
                nextY = current->y - 1;
                break;
            case 's':
                check = checkDown();
                nextX = current->x;
                nextY = current->y + 1;
                break;
            case 'e':
                check = checkRight();
                nextX = current->x + 1;
                nextY = current->y;
                break;
            case 'w':
                check = checkLeft(); 
                nextX = current->x - 1;
                nextY = current->y;
                break;
        } 
        if (check == 1){ // if you can move, the next space is not a wall
            printf("the square ahead is not a wall!\n");
            if (maze[nextX][nextY]->wasHere == 1){ //we have been there already
                printf("we have been here before!\n");
                if (otherOptions(nextX, nextY) == 1){ // there are other options
                    printf("we have other options, lets turn\n");
                    changeDir();
                    printf("new direction: %c\n",dir);
                } else { // no other options will need to go back to where we have been
                    printf("we have no other options we must go this way\n");
                    pop(solution); // pop from stack
                    current->deadEnd = 1;
                    current = maze[nextX][nextY]; // move
                }
            } else {
                printf("we have not been here before, lets go!\n");
                current = maze[nextX][nextY]; // move
                current-> wasHere = 1;
                push(solution, current); // add to stack
            }
        } else {
            printf("the square ahead is a wall, we must change directions\n");
            changeDir();
            printf("new direction: %c\n",dir);
        }
        char c = getchar();
    }
}
Пример #4
0
//判断上下左右
void RootEngine::checkFourSides(StarModel* model)
{
    if (checkedBlocks->containsObject(model)) {
        return;
    }else {
        checkedBlocks->addObject(model);
    }
    checkUp(model);
    checkDown(model);
    checkLeft(model);
    checkRight(model);
}
Пример #5
0
void navigate(){
    
    int check, nextX, nextY;
    initDir(); //start by getting the initial direction
    solution = createStack();
    push(solution, current); // add the starting square to the stack
    
    while (current->val != 'F'){  // the maze sloving loop
        switch(dir){
            case 'n':
                check = checkUp();
                nextX = current->x;
                nextY = current->y - 1;
                break;
            case 's':
                check = checkDown();
                nextX = current->x;
                nextY = current->y + 1;
                break;
            case 'e':
                check = checkRight();
                nextX = current->x + 1;
                nextY = current->y;
                break;
            case 'w':
                check = checkLeft(); 
                nextX = current->x - 1;
                nextY = current->y;
                break;
        }
        
        if (check == 1){ // if you can move, the next space is not a wall
            if (maze[nextX][nextY]->wasHere == 1){ //we have been there already
                if (otherOptions(nextX, nextY) == 1){ // there are other options
                    changeDir();
                } else { // no other options will need to go back to where we have been
                    pop(solution); // pop from stack
                    current->deadEnd = 1;
                    current = maze[nextX][nextY]; // move
                }
            } else {
                current = maze[nextX][nextY]; // move
                current-> wasHere = 1;
                push(solution, current); // add to stack
            }
        } else {
            changeDir();
        }
    }
}
Пример #6
0
void HelloWorld::update( float dt)
{
	float mapSpeed=2.5f;
	float playerV=1.0f;
	auto map=this->getChildByTag(102);
	Player * player=(Player *)this->getChildByTag(101);
	map->setPositionX(map->getPositionX()-mapSpeed);
	if (map->getPositionX()<=-640*9)
	{
		map->setPositionX(0);
		player->setPosition(Vec2(48,768));
		return;
	}
	checkDown();
	if (m_pPlayer->getDirection()==DIRECTION_UP)
	{
		if (m_pPlayer->getPlayerSpeed()-playerV>=0)
		{
			m_pPlayer->setPlayerSpeed(m_pPlayer->getPlayerSpeed()-playerV);
			m_pPlayer->setPositionY(m_pPlayer->getPositionY()+m_pPlayer->getPlayerSpeed());
		}
		else
		{
			m_pPlayer->setPlayerSpeed(0);
			m_pPlayer->setDirection(DIRECTION_DOWN);
		}
	}
	else if (m_pPlayer->getDirection()==DIRECTION_DOWN)
	{
		
		m_pPlayer->setPlayerSpeed(m_pPlayer->getPlayerSpeed()+playerV);
		m_pPlayer->setPositionY(m_pPlayer->getPositionY()-m_pPlayer->getPlayerSpeed());
	}
	checkDie();
	
}
Пример #7
0
int checkScrollDirection(int prevX, int prevY, int x, int y)
{
        int badmove = 1;
        moveRight = 0, moveLeft = 0, moveDown = 0, moveUp = 0;
        
        /* Check the 8 possible move combinations to ensure correct bounds checking
            If the move is possible call the corresponding direction checks that update scrolling values
            If move is not possible we return badmove and the x and y values are fixed*/
        if(prevX < x && prevY < y) /* move right and down */
        {
            if (screenRight < MAP_WIDTH - 1 && screenBottom < MAP_HEIGHT - 1)
            {
                checkRight();
                checkDown();
            }
            else
            {
                return badmove;
            }
        }
        else if(prevX < x && prevY > y) /* move right and up */
        {
            if (screenRight < MAP_WIDTH - 1 && screenTop > 0)
            {
                checkRight();
                checkUp();
            }
            else
            {
                return badmove;
            }
        }
        else if(prevX > x && prevY < y) /* move left and down */
        {
            if(screenLeft > 0 && screenBottom < MAP_HEIGHT - 1)
            {
                checkLeft();
                checkDown();
            }
            else
            {
                return badmove;
            }
        }
        else if(prevX > x && prevY > y) /* move left and up */
        {
             if (screenTop > 0 && screenLeft > 0)
             {
                 checkLeft();
                 checkUp();
             }
             else
             {
                 return badmove;
             }
        }
        else if(prevX < x) /* move right */
        {
            if (screenRight < MAP_WIDTH - 1)
            {
                checkRight();
            }
            else
            {
                return badmove;
            }
        }
        else if(prevX > x) //moveLeft
        {
           if (screenLeft > 0)
           {
               checkLeft();
           }
           else
           {
               return badmove;
           }
        }
        else if(prevY < y) //moveDown
        {
            if (screenBottom < MAP_HEIGHT - 1)
            {
                checkDown();
            }
            else
            {
                return badmove;
            }
        }
        else if(prevY > y) //moveUp
        {
          if (screenTop > 0)
          {
                checkUp();
          }
          else
          {
                return badmove;
          }
        }
       
       /* copy necessary map rows and/or columns to the background buffer */
        if (moveLeft)
		{
			CopyColumnToBackground(screenLeft, nextColumn, mapTop, mapBottom, starmapscrn_Map, bg0map, MAP_COLUMNS);
		}
		if (moveRight)
		{
			CopyColumnToBackground(screenRight, nextColumn, mapTop, mapBottom, starmapscrn_Map, bg0map, MAP_COLUMNS);
		}
        if (moveUp)
		{
			CopyRowToBackground(screenTop, nextRow, mapLeft, mapRight, starmapscrn_Map, bg0map, MAP_COLUMNS);
		}
		if (moveDown)
		{
			CopyRowToBackground(screenBottom, nextRow, mapLeft, mapRight, starmapscrn_Map, bg0map, MAP_COLUMNS);
		}
		return 0;
}
Пример #8
0
void FloorGenerator::assignDown(bool room)
{
	int temp = rand() % 8;
	int posX = start.front().getX();
	int posY = start.front().getY();

	const int ONEU = 0, TWOV = 1, TWOUL= 2, TWOUR = 3, THREEU = 4, THREEL = 5, THREER = 6, FOUR = 7;

	switch(temp)
	{
	case ONEU:
		{
			bool down, left, right;

			if(posX+2 > LIMIT-1)
				down = true;
			else
				down = !checkDown2(posX+2, posY);

			if(posY-1 < 0)
				left = true;
			else
				left = !checkLeft2(posX+1, posY-1);

			if(posY+1 > LIMIT-1)
				right = true;
			else
				right = !checkRight2(posX+1, posY+1);

			if(down && left && right)
			{
				if(room)
					pushRoom(posX+1, posY, roomoneU, room);
				else
					pushCor(posX+1, posY, oneU, room);
			}else
				assignDown(room);
			break;
		}
	case TWOV:
		{
			if(posX + 2 > LIMIT-1)
			{
				assignDown(room);
				break;
			}else
			{
				bool down, left, right;

				if(posX+2 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+2, posY);

				if(posY-1 < 0)
					left = true;
				else
					left = !checkLeft2(posX+1, posY-1);

				if(posY+1 > LIMIT-1)
					right = true;
				else
					right = !checkRight2(posX+1, posY+1);

				if(down && left && right)
				{
					if(room)
						pushRoom(posX+1, posY, roomtwoV, room);
					else
						pushCor(posX+1, posY, twoV, room);
					break;
				}else
					assignDown(room);
			}
			break;
		}
	case TWOUL:
		{
			if(posY-1 < 0)
			{
				assignDown(room);
				break;
			}else
			{
				bool down, left, right;
				if(posX+2 > LIMIT-1)
					down = true;
				else
					down = !checkDown2(posX+2, posY);

				if(posY-1 < 0)
					left = false;
				else
					left = checkLeft(posX+1, posY-1);

				if(posY+1 > LIMIT-1)
					right = true;
				else
					right = !checkRight2(posX+1, posY+1);

				if(down && left && right)
				{
					if(room)
						pushRoom(posX+1, posY, roomtwoUL, room);
					else
						pushCor(posX+1, posY, twoUL, room);

				}else
					assignDown(room);
			}
			break;
		}
	case TWOUR:
		{
			if(posY+1 > LIMIT-1)
			{
				assignDown(room);
				break;
			}else
			{
				bool down, left, right;

				if(posX+2 > LIMIT-1)
					down = true;
				else
					down = !checkDown2(posX+2, posY);

				if(posY-1 < 0)
					left = true;
				else
					left = !checkLeft2(posX+1, posY-1);

				if(posY+1 > LIMIT-1)
					right = false;
				else
					right = checkRight(posX+1, posY+1);

				if(down && left && right)
				{
					if(room)
						pushRoom(posX+1, posY, roomtwoUR, room);
					else
						pushCor(posX+1, posY, twoUR, room);
				}else
					assignDown(room);
			}
			break;
		}
	case THREEU:
		{
			if(posY-1 < 0)
			{
				assignDown(room);
				break;
			}else if(posY+1 > LIMIT-1)
			{
				assignDown(room);
				break;
			}else
			{
				bool down, left, right;
				if(posX+2 > LIMIT-1)
					down = true;
				else
					down = !checkDown2(posX+2, posY);

				if(posY-1 < 0)
					left = false;
				else
					left = checkLeft(posX+1, posY-1);

				if(posY+1 > LIMIT-1)
					right = false;
				else
					right = checkRight(posX+1, posY+1);

				if(down && left && right)
				{
					if(room)
						pushRoom(posX+1, posY, roomthreeU, room);
					else
						pushCor(posX+1, posY, threeU, room);

				}else
					assignDown(room);

			}
			break;
		}
	case THREEL:
		{
			if(posY-1 < 0)
			{
				assignDown(room);
				break;
			}else if(posX+2 > LIMIT-1)
			{
				assignDown(room);
				break;
			}else
			{
				bool down, left, right;

				if(posX+2 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+2, posY);

				if(posY-1 < 0)
					left = false;
				else
					left = checkLeft(posX+1, posY-1);

				if(posY+1 > LIMIT-1)
					right = true;
				else
					right = !checkRight2(posX+1, posY+1);

				if(down && left && right)
				{
					if(room)
						pushRoom(posX+1, posY, roomthreeL, room);
					else
						pushCor(posX+1, posY, threeL, room);
				}else
					assignDown(room);
			}
			break;
		}
	case THREER:
		{
			if(posY+1 > LIMIT-1)
			{
				assignDown(room);
				break;
			}else if(posX+2 > LIMIT-1)
			{
				assignDown(room);
				break;
			}else
			{
				bool down, left, right;

				if(posX+2 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+2, posY);

				if(posY-1 < 0)
					left = true;
				else
					left = !checkLeft2(posX+1, posY-1);

				if(posY+1 > LIMIT-1)
					right = false;
				else
					right = checkRight(posX+1, posY+1);

				if(down && left && right)
				{
					if(room)
						pushRoom(posX+1, posY, roomthreeR, room);
					else
						pushCor(posX+1, posY, threeR, room);
				}else
					assignDown(room);
			}
			break;
		}
	case FOUR:
		{
			if(posY+1 > LIMIT-1)
			{
				assignDown(room);
				break;
			}else if(posY-1 < 0)
			{
				assignDown(room);
				break;
			}else if(posX+2 > LIMIT-1)
			{
				assignDown(room);
				break;
			}else
			{
				bool down, left, right;
				if(posX+2 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+2, posY);

				if(posY-1 < 0)
					left = false;
				else
					left = checkLeft(posX+1, posY-1);

				if(posY+1 > LIMIT-1)
					right = false;
				else
					right = checkRight(posX+1, posY+1);

				if(down && left && right)
				{
					if(room)
						pushRoom(posX+1, posY, roomfour, room);
					else
						pushCor(posX+1, posY, four, room);
				}else
					assignDown(room);
			}
			break;
		}
	}//end switch

}
Пример #9
0
void FloorGenerator::assignRight(bool room)
{
	int temp = rand() % 8;
	int posX = start.front().getX();
	int posY = start.front().getY();

	const int ONEL = 0, TWOH = 1, TWOUL= 2, TWODL = 3, THREEU = 4, THREED = 5, THREEL = 6, FOUR = 7;

	switch(temp)
	{
	case ONEL:
		{
			bool up, down, right;

			if(posX-1 < 0)
				up = true;
			else
				up = !checkUp2(posX-1, posY+1);
			if(posX+1 > LIMIT-1)
				down = true;
			else
				down = !checkDown2(posX+1, posY+1);
			if(posY+2 > LIMIT-1)
				right = true;
			else
				right = !checkRight2(posX, posY+2);

			if(up && down && right)
			{
				if(room)
					pushRoom(posX, posY+1, roomoneL, room);
				else
					pushCor(posX, posY+1, oneL, room);
			}else
				assignRight(room);

			break;
		}
	case TWOH:
		{
			if(posY+2 > LIMIT-1)
			{
				assignRight(room);
				break;
			}else
			{
				bool up, down, right;

				if(posX-1 < 0)
					up = true;
				else
					up = !checkUp2(posX-1, posY+1);
				if(posX+1 > LIMIT-1)
					down = true;
				else
					down = !checkDown2(posX+1, posY+1);
				if(posY+2 > LIMIT-1)
					right = false;
				else
					right = checkRight(posX, posY+2);

				if(up && down && right)
				{
					if(room)
						pushRoom(posX, posY+1, roomtwoH, room);
					else
						pushCor(posX, posY+1, twoH, room);
				}else
					assignRight(room);
			}
			break;
		}
	case TWOUL:
		{
			if(posX-1 < 0)
			{
				assignRight(room);
				break;
			}else
			{
				bool up, down, right;

				if(posX-1 < 0)
					up = false;
				else
					up = checkUp(posX-1, posY+1);
				if(posX+1 > LIMIT-1)
					down = true;
				else
					down = !checkDown2(posX+1, posY+1);
				if(posY+2 > LIMIT-1)
					right = true;
				else
					right = !checkRight2(posX, posY+2);

				if(up && down && right)
				{
					if(room)
						pushRoom(posX, posY+1, roomtwoUL, room);
					else
						pushCor(posX, posY+1, twoUL, room);
				}else
					assignRight(room);
			}
			break;
		}
	case TWODL:
		{
			if(posX+1 > LIMIT-1)
			{
				assignRight(room);
				break;
			}else
			{
				bool up, down, right;

				if(posX-1 < 0)
					up = true;
				else
					up = !checkUp2(posX-1, posY+1);
				if(posX+1 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+1, posY+1);
				if(posY+2 > LIMIT-1)
					right = true;
				else
					right = !checkRight2(posX, posY+2);

				if(up && down && right)
				{
					if(room)
						pushRoom(posX, posY+1, roomtwoDL, room);
					else
						pushCor(posX, posY+1, twoDL, room);
				}else
					assignRight(room);
			}
			break;
		}
	case THREEU:
		{
			if(posX-1 < 0)
			{
				assignRight(room);
				break;
			}else if(posY+2 > LIMIT-1)
			{
				assignRight(room);
				break;
			}else
			{
				bool up, down, right;

				if(posX-1 < 0)
					up = false;
				else
					up = checkUp(posX-1, posY+1);
				if(posX+1 > LIMIT-1)
					down = true;
				else
					down = !checkDown2(posX+1, posY+1);
				if(posY+2 > LIMIT-1)
					right = false;
				else
					right = checkRight(posX, posY+2);

				if(up && down && right)
				{
					if(room)
						pushRoom(posX, posY+1, roomthreeU, room);
					else
						pushCor(posX, posY+1, threeU, room);
				}else
					assignRight(room);
			}
			break;
		}
	case THREED:
		{
			if(posX+1 > LIMIT-1)
			{
				assignRight(room);
				break;
			}else if(posY+2 > LIMIT-1)
			{
				assignRight(room);
				break;
			}else
			{
				bool up, down, right;

				if(posX-1 < 0)
					up = true;
				else
					up = !checkUp2(posX-1, posY+1);
				if(posX+1 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+1, posY+1);
				if(posY+2 > LIMIT-1)
					right = false;
				else
					right = checkRight(posX, posY+2);

				if(up && down && right)
				{
					if(room)
						pushRoom(posX, posY+1, roomthreeD, room);
					else
						pushCor(posX, posY+1, threeD, room);
				}else
					assignRight(room);
			}
			break;
		}
	case THREEL:
		{
			if(posX+1 > LIMIT-1)
			{
				assignRight(room);
				break;
			}else if(posX-1 < 0)
			{
				assignRight(room);
				break;
			}else
			{
				bool up, down, right;

				if(posX-1 < 0)
					up = false;
				else
					up = checkUp(posX-1, posY+1);
				if(posX+1 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+1, posY+1);
				if(posY+2 > LIMIT-1)
					right = true;
				else
					right = !checkRight2(posX, posY+2);

				if(up && down && right)
				{
					if(room)
						pushRoom(posX, posY+1, roomthreeL, room);
					else
						pushCor(posX, posY+1, threeL, room);
				}else
					assignRight(room);
			}
			break;
		}
	case FOUR:
		{
			if(posX + 1 > LIMIT-1)
			{
				assignRight(room);
				break;
			}else if(posX -1 < 0)
			{
				assignRight(room);
				break;
			}else if(posY+2 > LIMIT-1)
			{
				assignRight(room);
				break;
			}else
			{
				bool up, down, right;

				if(posX-1 < 0)
					up = false;
				else
					up = checkUp(posX-1, posY+1);
				if(posX+1 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+1, posY+1);
				if(posY+2 > LIMIT-1)
					right = false;
				else
					right = checkRight(posX, posY+2);

				if(up && down && right)
				{
					if(room)
						pushRoom(posX, posY+1, roomfour, room);
					else
						pushCor(posX, posY+1, four, room);
				}else
					assignRight(room);
			}
			break;
		}
	}
}
Пример #10
0
void FloorGenerator::assignLeft(bool room)
{
	int temp = rand() % 8;
	int posX = start.front().getX();
	int posY = start.front().getY();

	const int ONER = 0, TWOH = 1, TWOUR= 2, TWODR = 3, THREEU = 4, THREED = 5, THREER = 6, FOUR = 7;

	switch(temp)
	{
	case ONER:
		{
			bool up, down, left;

			if(posX-1 < 0)
				up = true;
			else
				up = !checkUp2(posX-1, posY-1);
			if(posX+1 > LIMIT-1)
				down = true;
			else
				down = !checkDown2(posX+1, posY-1);
			if(posY-2 < 0)
				left = true;
			else
				left = !checkLeft2(posX, posY-2);

			if(up && down && left)
			{
				if(room)
					pushRoom(posX, posY-1, roomoneR, room);
				else
					pushCor(posX, posY-1, oneR, room);
			}else
				assignLeft(room);
			break;
		}
	case TWOH:
		{
			if(posY-2 < 0)
			{
				assignLeft(room);
				break;
			}else
			{
				bool up, down, left;

				if(posX-1 < 0)
					up = true;
				else
					up = !checkUp2(posX-1, posY-1);
				if(posX+1 > LIMIT-1)
					down = true;
				else
					down = !checkDown2(posX+1, posY-1);
				if(posY-2 < 0)
					left = false;
				else
					left = checkLeft(posX, posY-2);

				if(up && down && left)
				{
					if(room)
						pushRoom(posX, posY-1, roomtwoH, room);
					else
						pushCor(posX, posY-1, twoH, room);
				}else
					assignLeft(room);
			}
			break;
		}
	case TWOUR:
		{
			if(posX-1 < 0)
			{
				assignLeft(room);
				break;
			}else
			{
				bool up, down, left;

				if(posX-1 < 0)
					up = false;
				else
					up = checkUp(posX-1, posY-1);
				if(posX+1 > LIMIT-1)
					down = true;
				else
					down = !checkDown2(posX+1, posY-1);
				if(posY-2 < 0)
					left = true;
				else
					left = !checkLeft2(posX, posY-2);

				if(up && down && left)
				{
					if(room)
						pushRoom(posX, posY-1, roomtwoUR, room);
					else
						pushCor(posX, posY-1, twoUR, room);
				}else
					assignLeft(room);
			}
			break;
		}
	case TWODR:
		{
			if(posX+1 > LIMIT-1)
			{
				assignLeft(room);
				break;
			}else
			{
				bool up, down, left;

				if(posX-1 < 0)
					up = true;
				else
					up = !checkUp2(posX-1, posY-1);
				if(posX+1 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+1, posY-1);
				if(posY-2 < 0)
					left = true;
				else
					left = !checkLeft2(posX, posY-2);

				if(up && down && left)
				{
					if(room)
						pushRoom(posX, posY-1, roomtwoDR, room);
					else
						pushCor(posX, posY-1, twoDR, room);
				}else
					assignLeft(room);
			}
			break;
		}
	case THREEU:
		{
			if(posX-1 < 0)
			{
				assignLeft(room);
				break;
			}else if(posY-2 < 0)
			{
				assignLeft(room);
				break;
			}else
			{
				bool up, down, left;

				if(posX-1 < 0)
					up = false;
				else
					up = checkUp(posX-1, posY-1);
				if(posX+1 > LIMIT-1)
					down = true;
				else
					down = !checkDown2(posX+1, posY-1);
				if(posY-2 < 0)
					left = false;
				else
					left = checkLeft(posX, posY-2);

				if(up && down && left)
				{
					if(room)
						pushRoom(posX, posY-1, roomthreeU, room);
					else
						pushCor(posX, posY-1, threeU, room);
				}else
					assignLeft(room);
			}
			break;
		}
	case THREED:
		{
			if(posX+1 > LIMIT-1)
			{
				assignLeft(room);
				break;
			}else if(posY-2 < 0)
			{
				assignLeft(room);
				break;
			}else
			{
				bool up, down, left;

				if(posX-1 < 0)
					up = true;
				else
					up = !checkUp2(posX-1, posY-1);
				if(posX+1 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+1, posY-1);
				if(posY-2 < 0)
					left = false;
				else
					left = checkLeft(posX, posY-2);

				if(up && down && left)
				{
					if(room)
						pushRoom(posX, posY-1, roomthreeD, room);
					else
						pushCor(posX, posY-1, threeD, room);
				}else
					assignLeft(room);
			}

			break;
		}
	case THREER:
		{
			if(posX+1 > LIMIT-1)
			{
				assignLeft(room);
				break;
			}else if(posX-1 < 0)
			{
				assignLeft(room);
				break;
			}else
			{
				bool up, down, left;

				if(posX-1 < 0)
					up = false;
				else
					up = checkUp(posX-1, posY-1);
				if(posX+1 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+1, posY-1);
				if(posY-2 < 0)
					left = true;
				else
					left = !checkLeft2(posX, posY-2);

				if(up && down && left)
				{
					if(room)
						pushRoom(posX, posY-1, roomthreeR, room);
					else
						pushCor(posX, posY-1, threeR, room);
				}else
					assignLeft(room);
			}
			break;
		}
	case FOUR:
		{
			if(posX+1 > LIMIT-1)
			{
				assignLeft(room);
				break;
			}else if(posX-1 < 0)
			{
				assignLeft(room);
				break;
			}else if(posY-2 < 0)
			{
				assignLeft(room);
				break;
			}else
			{
				bool up, down, left;

				if(posX-1 < 0)
					up = false;
				else
					up = checkUp(posX-1, posY-1);
				if(posX+1 > LIMIT-1)
					down = false;
				else
					down = checkDown(posX+1, posY-1);
				if(posY-2 < 0)
					left = false;
				else
					left = checkLeft(posX, posY-2);

				if(up && down && left)
				{
					if(room)
						pushRoom(posX, posY-1, roomfour, room);
					else
						pushCor(posX, posY-1, four, room);
				}else
					assignLeft(room);
			}
			break;
		}
	}
}