Ejemplo n.º 1
0
void ConfigMenu::makeMenu(){
	CCMenuItemFont::setFontSize(50);
	CCMenuItemFont::setFontName("Arial");


	//CCMenuItemToggle* music = CCMenuItemToggle::createWithTarget(this, menu_selector(ConfigMenu::musicMenuCallback), 
		//CCMenuItemFont::create("Music OFF"),
		//CCMenuItemFont::create("Music ON"), NULL);
	CCMenuItemToggle* music = CCMenuItemToggle::createWithTarget(this, menu_selector(ConfigMenu::musicMenuCallback),
		CCMenuItemLabel::create(CCLabelBMFont::create("Music OFF", "arial-unicode-26.fnt", 300)), 
		CCMenuItemLabel::create(CCLabelBMFont::create("Music ON", "arial-unicode-26.fnt", 300)), NULL);
	
	CCLabelBMFont* txtShare = CCLabelBMFont::create("Share", "arial-unicode-26.fnt", 300);
	//CCMenuItemFont* share = CCMenuItemFont::create("Share", this, menu_selector(ConfigMenu::shareMenuCallback));
	//CCLabelTTF* d = CCLabelTTF::create("Share", "Arial", 30);
	CCMenuItemLabel* share = CCMenuItemLabel::create(txtShare, this, menu_selector(ConfigMenu::shareMenuCallback));
	music->setPosition(ccp(0,-60));
	share->setPosition(ccp(0, music->getContentSize().height+music->getPositionY()+20));
	share->setScale(2);
	music->setScale(2);
	CCMenu *menu = CCMenu::create(music, share, NULL);
	//menu->setPosition(ccp(400,0));
	menu->setOpacity(kCCMenuHandlerPriority);
	this->addChild(menu);
	if(!CCUserDefault::sharedUserDefault()->getBoolForKey(CONFIG_KEY_HAS_MUSIC)){
		music->setSelectedIndex(1);
	}else{
		music->setSelectedIndex(0);
	}

}
Ejemplo n.º 2
0
bool BossSnakePlay::init() {
    if (!SnakesPlay::init())
        return false;

    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();

    // init the map
    VirtualMap::init();

	BarrierFactory barrierfactory;
	m_barrier = barrierfactory.createBarrier(this,BarrierFactory::BARRIER_TYPE_BOSS);

    // create snakes
	SnakeFactory snakefactory;
	Snake *snake = snakefactory.createSimpleSnake(this,SnakeFactory::SNAKEIMG_TYPE_WHITE,1);
    m_snakes.push_back(snake);
	snake = snakefactory.createBossSnake(this,SnakeFactory::SNAKEIMG_TYPE_BOSS,2);
    m_snakes.push_back(snake);

	// generate food
    FoodFactory *foodfactory = new MultiFoodFactory();
	m_food = foodfactory->createFood(this);
    m_food->generate();

	// create control
	m_controls.push_back(new HumanControl());
    m_controls.push_back(m_food);

    // game control button
    m_stopFlag = false;
    CCMenuItemImage *StopGameItem = CCMenuItemImage::create("buttons/pause.png", "buttons/pause.png");
    CCMenuItemImage *StartGameItem = CCMenuItemImage::create("buttons/play.png", "buttons/play.png");
    CCMenuItemToggle *StopOrStartItem = CCMenuItemToggle::createWithTarget(this,menu_selector(SnakesPlay::StopGameCallback), StopGameItem,StartGameItem, NULL);
    StopOrStartItem->setEnabled(true);
    StopOrStartItem->setScale(0.5);

    CCMenu* itemToggleMenu = CCMenu::create(StopOrStartItem, NULL);
    itemToggleMenu->setPosition(ccp(visibleSize.width-20, 20));
    this->addChild(itemToggleMenu, 1);

    this->schedule(schedule_selector(BossSnakePlay::scheUpdate),m_updateTime);

    return true;
}
KDbool Ch7_GridPathfinding::init ( KDvoid )
{	
	// Superclass initialization and message
	if ( !Recipe::init ( ) )
	{
		return KD_FALSE;
	}

	this->showMessage ( "Tap and hold to draw walls.\nPress 'Find Path' to run the simulation." );

	//Initial variables
	m_tGridSize			= ccp ( 25, 15 );
	m_fNodeSpace		= 16.0f;
	m_tTouchedNode		= ccp ( 0, 0 );
	m_tStartCoord		= ccp ( 2, 2 );
	m_tEndCoord			= ccp ( m_tGridSize.x - 3, m_tGridSize.y - 3 );
	m_bTouchedNodeIsNew = KD_FALSE;
	m_pFoundPath		= new CCArray ( );
	m_bAddMode			= KD_TRUE;
	
	// Seperate grid node
	m_pGridNode = CCNode::create ( );
	m_pGridNode->setPosition ( ccp ( 35, 15 ) );
	this->addChild ( m_pGridNode, 3 ); 

	// Create 2D array (grid)
	m_pGrid = new CCArray ( (KDint) m_tGridSize.x ); 
	for ( KDint x = 0; x < (KDint) m_tGridSize.x; x++ )
	{
		m_pGrid->addObject ( CCArray::createWithCapacity ( (KDint) (KDint) m_tGridSize.y ) );
	}

	// Create AStar nodes and place them in the grid
	for ( KDint x = 0; x < (KDint) m_tGridSize.x; x++ )
	{
		for ( KDint y = 0; y < (KDint) m_tGridSize.y; y++ )
		{
			// Add a node
			AStarNode*	pNode = AStarNode::create ( );
			pNode->setPosition ( ccp ( x * m_fNodeSpace + m_fNodeSpace / 2, y * m_fNodeSpace + m_fNodeSpace / 2 ) );
			( (CCArray*) m_pGrid->objectAtIndex ( x ) )->addObject ( pNode );
		}
	}
	
	// Add neighbor nodes
	for ( KDint x = 0; x < (KDint) m_tGridSize.x; x++ )
	{
		for ( KDint y = 0; y < (KDint) m_tGridSize.y; y++ )
		{			
			// Add a node
			AStarNode*	pNode = (AStarNode*) ( (CCArray*) m_pGrid->objectAtIndex ( x ) )->objectAtIndex ( y );
			
			// Add self as neighbor to neighboring nodes
			this->addNeighbor ( pNode, x - 1, y - 1 );		// Top-Left
			this->addNeighbor ( pNode, x - 1, y     );		// Left
			this->addNeighbor ( pNode, x - 1, y + 1 );		// Bottom-Left
			this->addNeighbor ( pNode, x    , y - 1 );		// Top
			
			this->addNeighbor ( pNode, x    , y + 1 );		// Bottom
			this->addNeighbor ( pNode, x + 1, y - 1 );		// Top-Right
			this->addNeighbor ( pNode, x + 1, y     );		// Right
			this->addNeighbor ( pNode, x + 1, y + 1 );		// Bottom-Right		
		}
	}

	// Add visual represenation of nodes
	this->addGridArt ( );
	
	// Menu items 
	CCMenuItemFont::setFontSize ( 30 );

	CCMenuItemFont*		pFindPathItem = CCMenuItemFont::create ( "Find Path", this, menu_selector ( Ch7_GridPathfinding::findPath ) );
	pFindPathItem->setScale ( 0.65f );
	
	CCMenuItemToggle*	pSwitchModeItem = CCMenuItemToggle::createWithTarget 
	(
		this, 
		menu_selector ( Ch7_GridPathfinding::switchMode ), 
		CCMenuItemFont::create ( "Switch Mode: Remove Wall" ),
		CCMenuItemFont::create ( "Switch Mode: Add Wall" ), 
		KD_NULL 
	);
	pSwitchModeItem->setScale ( 0.65f );
	
	CCMenu*				pMenu = CCMenu::create ( pFindPathItem, pSwitchModeItem, KD_NULL );
	pMenu->alignItemsVertically ( 0 );
	pMenu->setPosition ( ccp ( 350, 290 ) );
	this->addChild ( pMenu, Z_HUD );

	// Add draw layer
	this->addDrawLayer ( );
	
	// Schedule step method
	this->schedule ( schedule_selector ( Ch7_GridPathfinding::step ) );

	return KD_TRUE;
}