예제 #1
0
파일: game.cpp 프로젝트: felixiao/Demos
void CGame::Render()
{
    // for example, clear to black (the order of components is ABGR)
    Iw2DSurfaceClear(0x00ecdeff);
	Iw2DSetColour(0xffffffff);
	std::string s;

	if(_currentLevel==0)
		s.append("Lobby");
	else
	{	
		s.append("Level ");
		std::ostringstream ss;
		ss << _currentLevel;
		s.append(ss.str());
	}

	IwGxPrintSetScale(2);
	IwGxPrintString(630, 10, (char*)s.c_str());
    
	currentMap->Render(_Character->m_CollisionBox);
	_Character->Render(currentMap->m_Position);
	_UI->Render();
	if(_firstLaunch)
		Iw2DDrawImage(_imageTut[0],CIwSVec2(300,300));
	if(_currentLevel==1&&_firstLaunchLevel1)
		Iw2DDrawImage(_imageTut[1],CIwSVec2(300,300));
	if(_enterDoor)
		Iw2DDrawImage(_imageTut[2],CIwSVec2(300,300));
	if(_mazeFinish)
		Iw2DDrawImage(_imageTut[3],CIwSVec2(300,300));
    // show the surface
    Iw2DSurfaceShow();
}
예제 #2
0
void DrawOnRed()
{
	int w = Iw2DGetSurfaceWidth();
	int h = Iw2DGetSurfaceHeight();
	Iw2DSurfaceClear(0xFF0000FF);
	Iw2DDrawImage(image1, CIwSVec2(w / 2 - image1->GetWidth() / 2, h / 2 - image1->GetHeight() / 2));
}
예제 #3
0
void DrawOnBlue()
{
	int w = Iw2DGetSurfaceWidth();
	int h = Iw2DGetSurfaceHeight();
	Iw2DSurfaceClear(0xFFFF0000);
	Iw2DDrawImage(image2, CIwSVec2(w / 2 - image2->GetWidth() / 2, h / 2 - image2->GetHeight() / 2));
}
예제 #4
0
int main()
{
	Iw2DInit();
	CIw2DImage* g_AirplayLogo = Iw2DCreateImage("largeAirplayLogo.bmp");
	while (1)
	{
		int64 start = s3eTimerGetMs();
		if	(s3eDeviceCheckQuitRequest())
			break;
		// Clear the screen
		Iw2DSurfaceClear(0xffffffff);
		CIwSVec2 topLeft = CIwSVec2((int16)(Iw2DGetSurfaceWidth() / 2 - g_AirplayLogo->GetWidth() / 2), 
			(int16)(Iw2DGetSurfaceHeight() / 2 - g_AirplayLogo->GetHeight() / 2));
		CIwSVec2 size = CIwSVec2((int16)g_AirplayLogo->GetWidth(), (int16)g_AirplayLogo->GetHeight());
		Iw2DDrawImage(g_AirplayLogo, topLeft, size);
		Iw2DSurfaceShow();

		// Attempt frame rate
		while ((s3eTimerGetMs() - start) < MS_PER_FRAME)
		{
			int32 yield = (int32) (MS_PER_FRAME - (s3eTimerGetMs() - start));
			if (yield<0)
				break;
			s3eDeviceYield(yield);
		}
	}
	delete g_AirplayLogo;
	Iw2DTerminate();
	return 0;
}
예제 #5
0
int main()
{
	Iw2DInit();

	TweenTest* tests = new TweenTest();

	while (!s3eDeviceCheckQuitRequest())
    {
		tests->Update(FRAME_TIME);

		Iw2DSurfaceClear(0xff000000);

		//tests->Render();

		Iw2DSurfaceShow();
		
		s3eDeviceYield(0);
	}

	delete tests;

	Iw2DTerminate();

	return 0;
}
예제 #6
0
void CGame::Render()
{
    // game render goes here

    // for example, clear to black (the order of components is ABGR)
    Iw2DSurfaceClear(0xff000000);

	Iw2DDrawImage(m_ImgBG, CIwSVec2(0,0));
	Iw2DDrawImage(m_ImgKey, CIwSVec2(m_Position.x, m_Position.y));

    // show the surface
    Iw2DSurfaceShow();
}
예제 #7
0
//-----------------------------------------------------------------------------
// Main global function
//-----------------------------------------------------------------------------
int main()
{
#ifdef EXAMPLE_DEBUG_ONLY
    // Test for Debug only examples
#ifndef IW_DEBUG
    DisplayMessage("This example is designed to run from a Debug build. Please build the example in Debug mode and run it again.");
    return 0;
#endif
#endif

    Iw2DInit();

    // Example main loop
    ExampleInit();
    // Set screen clear colour

    while (1)
    {
        s3eDeviceYield(0);
        s3eKeyboardUpdate();
        s3ePointerUpdate();

        int64 start = s3eTimerGetMs();

        bool result = ExampleUpdate();
        if  (
            (result == false) ||
            (s3eKeyboardGetState(s3eKeyEsc) & S3E_KEY_STATE_DOWN) ||
            (s3eKeyboardGetState(s3eKeyAbsBSK) & S3E_KEY_STATE_DOWN) ||
            (s3eDeviceCheckQuitRequest())
            )
            break;

        // Clear the screen
        Iw2DSurfaceClear(0xffffffff);
        RenderSoftkeys();
        ExampleRender();

        // Attempt frame rate
        while ((s3eTimerGetMs() - start) < MS_PER_FRAME)
        {
            int32 yield = (int32) (MS_PER_FRAME - (s3eTimerGetMs() - start));
            if (yield<0)
                break;
            s3eDeviceYield(yield);
        }
    }
    ExampleShutDown();
    Iw2DTerminate();
    return 0;
}
예제 #8
0
파일: main.cpp 프로젝트: tmowyang/words
int main()
{
	// Initialise the 2D graphics system
	Iw2DInit();

	// Set up input systems
	g_pInput = new Input();

	// Create an image from a PNG file
	CIw2DImage* image = Iw2DCreateImage("textures/letter_A.png");
	CIwFVec2    image_position = CIwFVec2::g_Zero;

	// Loop forever, until the user or the OS performs some action to quit the app
	while (!s3eDeviceCheckQuitRequest())
	{
		// Update input system
		g_pInput->Update();

		// Clear the drawing surface
		Iw2DSurfaceClear(0xff000000);

		// Draw an image
		CIwFVec2 sz = CIwFVec2(50, 50);
		Iw2DDrawImage(image, image_position, sz);

		// Check for user tapping screen
		if (!g_pInput->m_Touched && g_pInput->m_PrevTouched)
		{
			// Move image to touched position
			image_position.x = (float)g_pInput->m_X - 25;
			image_position.y = (float)g_pInput->m_Y - 25;

			// Reset input
			g_pInput->Reset();
		}

		// Show the drawing surface
		Iw2DSurfaceShow();

		// Yield to the OS
		s3eDeviceYield(0);
	}

	// Clean-up
	delete image;
	delete g_pInput;
	Iw2DTerminate();

	return 0;
}
예제 #9
0
void CGame::Render()
{
    // game render goes here

    // for example, clear to black (the order of components is ABGR)
    Iw2DSurfaceClear(0xff000000);

    // draw a red square
    Iw2DSetColour(0xff0000ff);
    
    // note conversion to pixel coordinates
    Iw2DFillRect(CIwSVec2((iwsfixed)m_Position.x, (iwsfixed)m_Position.y) - m_Size/IW_FIXED(2), m_Size);

    // show the surface
    Iw2DSurfaceShow();
}
예제 #10
0
// Main entry point for the application
int main()
{
	// Initialise Iw2D
	Iw2DInit();

	// Get surface width and height
	int surface_width = Iw2DGetSurfaceWidth();
	int surface_height = Iw2DGetSurfaceHeight();

	// Rotation angle of rectangle
	float angle = 0;
	
	// Wait for a quit request from the host OS
	while (!s3eDeviceCheckQuitRequest())
	{
		// Clear background to blue
		Iw2DSurfaceClear(0xff8080);

		// Set up a transform
		CIwFMat2D mat;
		mat.SetRot(angle);
		mat.ScaleRot(2.0f);
		mat.SetTrans(CIwFVec2((float)surface_width / 2, (float)surface_height / 2));
		Iw2DSetTransformMatrix(mat);
		angle += 0.01f;

		// Render filled rectangle
		Iw2DSetColour(0xff00ffff);
		Iw2DFillRect(CIwFVec2(-50.0f, -100.0f), CIwFVec2(100.0f, 200.0f));

		// Render filled arc
		Iw2DSetColour(0xffff00ff);
		Iw2DFillArc(CIwFVec2(0, 0), CIwFVec2(100.0f, 100.0f), 0, 1.8 * PI);
		
		// Flip the surface buffer to screen
		Iw2DSurfaceShow();

		// Sleep to allow the OS to process events etc.
		s3eDeviceYield(0);
	}
	
	// Shut down Iw2D
	Iw2DTerminate();
	
	return 0;
}
예제 #11
0
void DrawMap()
{
	Iw2DSurfaceClear(0x11550030);
	for(int i=0;i<10;i++)
	{
		for(int j=0;j<10;j++)
		{
			switch(Map[i][j])
			{
			case 0: Iw2DDrawImage(grass,CIwFVec2((i-j+9)*16,(i+j)*8)); break;
			case 1: Iw2DDrawImage(three,CIwFVec2((i-j+9)*16,(i+j)*8)); break;
			case 2: Iw2DDrawImage(grass,CIwFVec2((i-j+9)*16,(i+j)*8));
					Iw2DDrawImage(man,CIwFVec2((i-j+9)*16,(i+j)*8));
					break;
			}
		}
	}
	Iw2DSurfaceShow();
}
예제 #12
0
int main()
{

    Iw2DInit();
    game = new Game();
	game->Initialize();
	game->NewGame();
	int currentUpdate = GetUpdateFrame();
    int nextUpdate = currentUpdate;
	s3ePointerRegister(S3E_POINTER_BUTTON_EVENT, (s3eCallback) MouseEventCallback, NULL);
    while(!s3eDeviceCheckQuitRequest())
    {
		 while(!s3eDeviceCheckQuitRequest())
        {
            nextUpdate = GetUpdateFrame();
            if( nextUpdate != currentUpdate )
                break;
            s3eDeviceYield(1);
        }

		// execute update steps
        int frames = nextUpdate - currentUpdate;
        frames = MIN(MAX_UPDATES, frames);
        while(frames--)
        {
            game->Update();
        }

		Iw2DSurfaceClear(0xffffffff);
		game->Render();
		Iw2DSurfaceShow();
        s3ePointerUpdate();
        s3eKeyboardUpdate();
        s3eDeviceYield();
    }

    delete game;

    Iw2DTerminate();

    return 0;
}
예제 #13
0
// Main entry point for the application
int main()
{

    AppDelegate* app = new AppDelegate;
    cocos2d::CCApplication::sharedApplication()->Run();
	Iw2DInit();

	while (!s3eDeviceCheckQuitRequest())
	{
		Iw2DSurfaceClear(0xff000000);

		// Show the drawing surface
		Iw2DSurfaceShow();

		// Yield to the OS
		s3eDeviceYield(0);
	}	
		
	Iw2DTerminate();
	delete app;
	return 0;
}
예제 #14
0
// Main entry point for the application
int main()
{
    //Initialise graphics system(s)
	Iw2DInit();

	//Create resources
	g_pResources = new Resources();

	//Create scene manager
	g_pSceneManager = new SceneManager();

	// Set up input systems
	g_Input = new Input();

	//Init the main menu
	MainMenu* main_menu = new MainMenu();
	main_menu->SetName("mainmenu");
	main_menu->Init();
	g_pSceneManager->Add(main_menu);

	// Init the field
	Field* field = new Field();
	field->SetName("field");
	// Creates random puzzle
	Puzzle *p = new Puzzle(7, 7, 7);
	p->generateRandom(1);
	field->Init(p);
	g_pSceneManager->Add(field);

	//Init the howToPlay
	HowToPlay* howToPlay = new HowToPlay();
	howToPlay->SetName("howtoplay");
	howToPlay->Init();
	g_pSceneManager->Add(howToPlay);

	// Switch to the main menu
	g_pSceneManager->SwitchTo(main_menu);

	// Initialize variables for Frame Rate control
	uint64 frame_start_time = 0;
	int yield = 0;

    // Loop forever, until the user or the OS performs some action to quit the app
    while (!s3eDeviceCheckQuitRequest())
    {
		// Record start time of frame.
		frame_start_time = s3eTimerGetMs();

        //Update the input systems
		g_Input->Update();

		//Update scene manager
		g_pSceneManager->Update(FRAME_TIME);

		// Clear screen
		Iw2DSurfaceClear(0xff000000);

		//Render scene manager
		g_pSceneManager->Render();

		// Show the drawing surface
		Iw2DSurfaceShow();

        // Calculate time to sleep for having a fixed frame rate.
		yield = (int)(FRAME_TIME_MS - (s3eTimerGetMs() - frame_start_time));
		if (yield < 0)
			yield = 0;
		// Sleep to allow the OS to process events etc.
        s3eDeviceYield(yield);
    }

    //Terminate modules being used
	delete g_Input;
	delete g_pSceneManager;
	delete g_pResources;
	Iw2DTerminate();
    
    // Return
    return 0;
}
예제 #15
0
int main()
{
	Iw2DInit();

	image1 = Iw2DCreateImage("image1.png");
	image2 = Iw2DCreateImage("image2.png");

	while (!s3eDeviceCheckQuitRequest())
	{
		// Transition #1
		// Fade in from black
		Iw2DSurfaceClear(0xff000000);
		Transitions2D::CaptureStartScreen();
		DrawOnRed();
		Transitions2D::CaptureEndScreen();
		Transitions2D::Fade();

		s3eDeviceYield(1000);
		if (s3eDeviceCheckQuitRequest()) break;
		
		// Transition #2
		// Cross fade from red image to blue image
		DrawOnRed();
		Transitions2D::CaptureStartScreen();
		DrawOnBlue();
		Transitions2D::CaptureEndScreen();
		Transitions2D::Fade();
		
		s3eDeviceYield(1000);
		if (s3eDeviceCheckQuitRequest()) break;
		
		// Transition #3
		// Slide left
		DrawOnBlue();
		Transitions2D::CaptureStartScreen();
		DrawOnRed();
		Transitions2D::CaptureEndScreen();
		Transitions2D::SlideLeft();

		s3eDeviceYield(1000);
		if (s3eDeviceCheckQuitRequest()) break;
		
		// Transition #4
		// Slide right
		DrawOnRed();
		Transitions2D::CaptureStartScreen();
		DrawOnBlue();
		Transitions2D::CaptureEndScreen();
		Transitions2D::SlideRight();

		s3eDeviceYield(1000);
		if (s3eDeviceCheckQuitRequest()) break;

		// Transition #5
		// Slide up
		DrawOnBlue();
		Transitions2D::CaptureStartScreen();
		DrawOnRed();
		Transitions2D::CaptureEndScreen();
		Transitions2D::SlideUp();

		s3eDeviceYield(1000);
		if (s3eDeviceCheckQuitRequest()) break;

		// Transition #6
		// Slide down
		DrawOnRed();
		Transitions2D::CaptureStartScreen();
		DrawOnBlue();
		Transitions2D::CaptureEndScreen();
		Transitions2D::SlideDown();
		
		s3eDeviceYield(1000);
		if (s3eDeviceCheckQuitRequest()) break;

		// Transition #7
		// Fade out to black
		DrawOnBlue();
		Transitions2D::CaptureStartScreen();
		Iw2DSurfaceClear(0xff000000);
		Transitions2D::CaptureEndScreen();
		Transitions2D::Fade();

		s3eDeviceYield(1000);
	}

	delete image1;
	delete image2;

	Iw2DTerminate();
}
예제 #16
0
int main(){
    
    //Init the 2D gfx system
    Iw2DInit();
    

    Input * g_pInput = new Input();

    
    ResourceManager * g_ResManager = new ResourceManager();
    Physics * g_Physics = new Physics(*g_ResManager);
    Animator * g_Animator = new Animator(*g_ResManager);
    SpaceShip * spaceship = new SpaceShip(100, 100, -PI/2);
    
    Enemy * enemy = new Enemy(400, 100, 0);
    
    
    spaceship->name = "spaceship";
    g_ResManager->addEntity(*spaceship);
    g_ResManager->addEntity(*enemy);
    
    int16 counter = 0;
    int16 speed = 5;

    //Loop forever, until OS interupt
    while(!s3eDeviceCheckQuitRequest()){
        
        //Clear the drawing surface
        Iw2DSurfaceClear(0xff222222);
        
        g_pInput->update();
        
        spaceship->vec.x = 0;
        spaceship->vec.y = 0;
        if(g_pInput->isKeyDown(s3eKeyRight)){
            spaceship->vec.x += speed;
        }
        if(g_pInput->isKeyDown(s3eKeyLeft)){
            spaceship->vec.x -= speed;
        }
        if(g_pInput->isKeyDown(s3eKeyUp)){
            spaceship->vec.y -= speed;
        }
        if(g_pInput->isKeyDown(s3eKeyDown)){
            spaceship->vec.y += speed;
        }

        
        if(g_pInput->isKeyDown(s3eKeySpace)){
            if(++counter % 2 == 0){
                Bullet * bullet = new Bullet(spaceship->pos.x +spaceship->size.x  + 15,
                                             spaceship->pos.y + 0.5*spaceship->size.y - 2, -PI/2);
                bullet->vec.x = 8;
                bullet->name = "bullet";
                g_ResManager->addEntity(*bullet);
            }
        }
        
        
        g_Physics->update();
        g_Animator->update();
               //Show drawing surface
        Iw2DSurfaceShow();
        
        //Yield to the OS
        s3eDeviceYield(0);
        
    }
    
    
    delete g_ResManager;
    delete g_pInput;
    delete g_Physics;
    delete g_Animator;
    
    Iw2DTerminate();
    
    return 0;
    
    
}
예제 #17
0
int main()
{
    // Initialise the 2D graphics system
    Iw2DInit();

    // Create an image from a PNG file
    CIw2DImage* image = Iw2DCreateImage("textures/Tiles.png");
		
	//Avatar bits
	AnimationData testData;
	testData.animationName = "Up";
	testData.animationPosition = 0;
	testData.frameHeight = 64;
	testData.frameWidth = 32;
	testData.numberOfFrames = 4;

	AnimationData testData2;
	testData2.animationName = "Right";
	testData2.animationPosition = 64;
	testData2.frameHeight = 64;
	testData2.frameWidth = 32;
	testData2.numberOfFrames = 4;

	Animation* animation = new Animation("textures/AvatarTest.png",testData);
	Animation* animation2 = new Animation("textures/AvatarTest.png",testData2);

	s3eFile* file = s3eFileOpen("tilemaps/tilemapdemo.json", "rb");
	int len = s3eFileGetSize(file);
	char* rawTileJSON = new char[len];
	if (file != NULL)
	{
		if (s3eFileRead(rawTileJSON, len, 1, file) != 1)
		{
			s3eFileGetError();
			s3eDebugOutputString(s3eFileGetErrorString());
		}
		s3eFileClose(file);
	}
	else
	{
		s3eFileGetError();
		s3eDebugOutputString(s3eFileGetErrorString());
	}

	cJSON *root = cJSON_Parse(rawTileJSON);
	int gridHeight = cJSON_GetObjectItem(root,"height")->valueint;
	int gridWidth = cJSON_GetObjectItem(root,"width")->valueint;
	int tileWidth = cJSON_GetObjectItem(root,"tileheight")->valueint;
	int tileHeight = cJSON_GetObjectItem(root,"tilewidth")->valueint;
	cJSON *layers = cJSON_GetObjectItem(root,"layers");

	cJSON *tileData;
	int i;
	for (i = 0; i<cJSON_GetArraySize(layers); i++)
	{
		cJSON *layer = cJSON_GetArrayItem(layers,i);
		tileData = cJSON_GetObjectItem(layer,"data");
	}



    // Loop forever, until the user or the OS performs some action to quit the app
    while (!s3eDeviceCheckQuitRequest())
    {
        // Clear the drawing surface
        Iw2DSurfaceClear(0xff000000);

		int x,y,tileIndex,tileType;
		for( y = 0; y < gridHeight; y++)
		{
			for(x = 0; x < gridWidth; x++)
			{
				tileIndex = (y * gridWidth) + x;
				tileType = cJSON_GetArrayItem(tileData,tileIndex)->valueint -1;
				// Draw an image
				Iw2DDrawImageRegion(image, CIwFVec2(x*tileWidth,y*tileHeight),CIwFVec2(tileWidth,tileHeight),CIwFVec2(tileType*tileWidth,0),CIwFVec2(tileWidth,tileHeight));
			}
		}
		animation->render(50,50);
		animation2->render(150,200);
        // Show the drawing surface
        Iw2DSurfaceShow();
		
        // Yield to the OS
        s3eDeviceYield(0);
    }

	cJSON_Delete(root);

    // Clean-up
	delete rawTileJSON;
    delete image;
	delete animation;
	delete animation2;
    Iw2DTerminate();

    return 0;
}