Ejemplo n.º 1
0
void drawFrog() {
	if(frog.x < 0) {
		frog.x = 0;
	} else if(frog.x > 146) {
		frog.x = 146;
	} else if(frog.y < 0){
		frog.y = 0;
	} else if(frog.y > 226) {
		frog.y = 226;
	}
	//drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog1);

	drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog1);
		flipPage();

	drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog2);
		flipPage();

	drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog3);
		flipPage();

	drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog4);
		flipPage();

	drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog1);
		flipPage();
}
Ejemplo n.º 2
0
void drawOther() {

	redcar1.y += 2;
	yellowcar1.y += 2;
	bluecar1.y += 2;
	flower1.y += 2;
	tree1.y += 2;
	flower2.y += 2;
	tree2.y += 2;

	delay(1);
 
	drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog1);

	drawImage4(redcar1.x, redcar1.y, REDCAR_WIDTH, REDCAR_HEIGHT, redcar);
	drawImage4(yellowcar1.x, yellowcar1.y, YELLOWCAR_WIDTH, YELLOWCAR_HEIGHT, yellowcar);
	drawImage4(bluecar1.x, bluecar1.y, BLUECAR_WIDTH, BLUECAR_HEIGHT, bluecar);
	drawImage4(flower1.x, flower1.y, FLOWER_WIDTH, FLOWER_HEIGHT, flower);
	drawImage4(tree1.x, tree1.y, TREE_WIDTH, TREE_HEIGHT, tree);
	drawImage4(flower2.x, flower2.y, FLOWER_WIDTH, FLOWER_HEIGHT, flower);
	drawImage4(tree2.x, tree2.y, TREE_WIDTH, TREE_HEIGHT, tree);

	flipPage();

}
Ejemplo n.º 3
0
Archivo: main.c Proyecto: cglong/Pacman
int main() {
	REG_DISPCNT = MODE4 | BG2_ENABLE;
	initialize();
	while (1) {
		waitForVblank();
		flipPage();
		clear();
		update();
		draw();
	}
}
Ejemplo n.º 4
0
static void loseLife() {
	numOfLives--;
	if (numOfLives >= 0) {
		drawString4(95, 75, "LIVES   -1", PALETTE[1]);
		flipPage();
		delay(20);
		loadAvatar();
	} else {
		lose();
	}
}
Ejemplo n.º 5
0
int simTick() {
	if (KEY_DOWN_NOW(BUTTON_SELECT)) {
	  	while (KEY_DOWN_NOW(BUTTON_SELECT)) {
	  	}
	  	return 0;
	}
	drawScreen();
	waitForVBlank();
	flipPage();
	return 1;
}
Ejemplo n.º 6
0
int main() {
	setMode(MODE_4 | BG2_ENABLE);
	startGame();
	while(1) {
		if (KEY_DOWN_NOW(KEY_START) && state == 0) {			
			state = 1;
			numOfLives = 3;
			loadAvatar();
			fillPalette(GPalette_palette, 0, GPALETTE_PALETTE_SIZE);
			PALETTE[200] = BLACK;
			PALETTE[201] = WHITE;
			PALETTE[202] = RED;
			PALETTE[203] = GREEN;
			PALETTE[204] = BLUE;
			
			for (int i = 0; i < 5; i++) {
				homeFlags[i] = 0;
			}
		}
		if (state == 1) {
			drawBG();
			char liveStr[7];
		if (numOfLives >= 0) {
			sprintf(liveStr, "%d", numOfLives);
			drawString4(10, 147, "LIVES LEFT:  ", PALETTE[1]);
			drawString4(80, 147, liveStr, PALETTE[1]);
		}
			drawTrucks();
			drawCars();
			drawCrocodiles();
			drawWoods();
			drawFrog();
			collision();
			reset();
			delay(2);
			waitForVblank();
			flipPage();
		}
		if (state == 2) {
			while (1) {
				if (KEY_DOWN_NOW(KEY_START)) {
					state = 0;
					break;
				}
			}
		}
	}
	return 0;
}
Ejemplo n.º 7
0
void TopLevel::setupMenuBar()
{
  // File menu
  KStdAction::open( this, SLOT( faxOpen() ), actionCollection() );
  actRecent =  KStdAction::openRecent( this, SLOT( faxOpen( const KURL & ) ),
          actionCollection() );
  actSave = KStdAction::save( this, SLOT( faxSave() ), actionCollection() );
  actSaveAs = KStdAction::saveAs( this, SLOT( faxSaveAs() ),
          actionCollection() );
  actPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
  KStdAction::quit( this, SLOT( close() ), actionCollection() );
  actAdd = new KAction( i18n( "A&dd..." ), "filenew", KShortcut(), this,
      SLOT( faxAdd() ), actionCollection(), "file_add_fax" );

  actRecent->setMaxItems( 5 );

  // View Menu
  actSize = KStdAction::actualSize( this, SLOT( actualSize() ),
      actionCollection() );
  actZoomIn = KStdAction::zoomIn( this, SLOT( zoomin() ), actionCollection() );
  actZoomOut = KStdAction::zoomOut( this, SLOT( zoomout() ),
      actionCollection() );

  actRotate = new KAction( i18n( "&Rotate Page" ), "rotate", KShortcut(), this,
      SLOT( rotatePage() ), actionCollection(), "view_rotate" );
  actMirror = new KAction( i18n( "Mirror Page" ), KShortcut(), this,
      SLOT( mirrorPage() ), actionCollection(), "view_mirror" );
  actFlip = new KAction( i18n( "&Flip Page" ), KShortcut(), this,
      SLOT( flipPage() ), actionCollection(), "view_flip" );

  // Go menu
  actNext = KStdAction::next( this, SLOT( nextPage() ), actionCollection() );
  actPrev = KStdAction::prior( this, SLOT( prevPage() ), actionCollection() );
  actFirst = KStdAction::firstPage( this, SLOT( firstPage() ),
      actionCollection() );
  actLast = KStdAction::lastPage( this, SLOT( lastPage() ),
      actionCollection() );

  // Settings menu
  KStdAction::preferences( this, SLOT( faxoptions() ), actionCollection() );
}
Ejemplo n.º 8
0
int main()
{
    //create obj
    //X
    megaman megamanX;
    megamanX.r = 62;
    megamanX.c = 30;
    megamanX.mapX = megamanX.c;
    megamanX.mapY = megamanX.r;
    megamanX.inAir = 0;
    megamanX.lives = 20;
    //blast
    Blast blast;;
    blast.r = 0;
    blast.c = megamanX.c;
    blast.fired = 0;
    blast.speed = 8;
    //drlight
    Drlight drlight;
    drlight.r = 0;
    drlight.c = 0;
    //minion
    Minion minion;
    minion.r = 0;
    minion.c = 0;
    minion.lives = 5;
    //turret
    Turret turret;
    turret.r = 0;
    turret.c = 0;
    turret.lives = 10;
    //bullet
    Bullet bullet;
    bullet.r = 0;
    bullet.c = 0;

    //worldMap ground set up
    WorldMap worldmap[1688];
    for(int x=0; x<535; x++) {
        worldmap[x].y = 94;
    }
    for(int x=545; x<905; x++) {
        worldmap[x].y = 74;
    }
    for(int x=921; x<1688; x++) {
        worldmap[x].y = 84;
    }

// 	1. Set up REG_DISPCNT
// Enable objects (sprites) (by setting bit 10) and set the sprite dimension type (given to you by nin10kit)
// 2. Copy the palette given to into the sprite palette (SPRITEPAL)
// 3 Copy the sprite tile graphics to character block 5
// 4. For each of the 128 sprites set its attribute 0 to hide them (ATTR0_HIDE)
// 5. When you want to use a sprite pick a OamEntry.
// a. Modify its attribute 0 with its x and or this with the palette type (from nin10kit) and shape (nin10kit)
// b. Modify its attribute 1 with its y and size (nin10kit)
// c. Modify its attribute 2 with the sprite id (nin10kit)
    REG_DISPCTL = MODE4 | BG2_ENABLE | OBJ_ENABLE | X_DIMENSION_TYPE;

    DMA[3].src = X_palette;
    DMA[3].dst = SPRITEPAL;
    DMA[3].cnt = DMA_ON | X_PALETTE_SIZE;

    DMA[3].src = X;
    DMA[3].dst = SPRITEDATA;
    DMA[3].cnt = DMA_ON | X_SIZE;
    //copy
    OamEntry shadow[128];
    //make all sprites transparent
    for(int i=0; i<128; i++) {
        shadow[i].attr0 = ATTR0_HIDE;
    }

    //helper
    //((SPRITEMEM[0].attr0 &~ 0x00FF)|(20))
    //((SPRITEMEM[1].attr0 &~ 0x01FF)|(0))
    int state=0;
    int hold=0;
    while(1) {
        if(gameState==0) {
            DMA[3].src = title_palette;
            DMA[3].dst = PALETTE;
            DMA[3].cnt = DMA_ON | TITLE_PALETTE_SIZE;
            stage_stop();
            megaman_play();
        }
        while(gameState==0) {
            drawImage4(0,0,240,160,title);
            if(KEY_DOWN_NOW(BUTTON_A) || KEY_DOWN_NOW(BUTTON_START)) {
                gameState=1;
                megaman_stop();
                break;
            }
            waitForVblank();
            flipPage();
        }

        if(gameState==1) {
            //setup stage palette
            DMA[3].src = stage_palette;
            DMA[3].dst = PALETTE;
            DMA[3].cnt = DMA_ON | STAGE_PALETTE_SIZE;

            //music
            stage_play();
        }
        while(gameState==1) {

            if(KEY_DOWN_NOW(BUTTON_SELECT)) {
                for(int i=0; i<128; i++) {
                    shadow[i].attr0 = ATTR0_HIDE;
                }
                hurting=0;
                minionSpawn=0;
                turretSpawn=0;
                turretFired=0;
                megamanX.r = 62;
                megamanX.c = 30;
                megamanX.mapX = megamanX.c;
                megamanX.mapY = megamanX.r;
                megamanX.inAir = 0;
                megamanX.lives = 20;
                started=0;
                telCount=0;
                gameState=0;
            }
            //conversation
            if(started==0) {
                drawStage(30,STAGE_WIDTH,STAGE_HEIGHT,stage);
                switch (state) {
                case 0:
                    drawHollowRect4(100,0,59,239,0);
                    drawRect4(102,2,56,236,140);
                    char buffer[50];
                    sprintf(buffer, "X:");
                    drawString4(105,5,buffer,0);
                    sprintf(buffer, "What happened here?");
                    drawString4(120,5,buffer,0);
                    if(KEY_DOWN_NOW(BUTTON_A) && hold==0) {
                        state=1;
                        hold=1;
                    }
                    break;
                case 1:
                    drawHollowRect4(100,0,59,239,0);
                    drawRect4(102,2,56,236,140);
                    char buffer2[50];
                    sprintf(buffer2, "X:");
                    drawString4(105,5,buffer2,0);
                    sprintf(buffer2, "The highway is destroyed!");
                    drawString4(120,5,buffer2,0);
                    if(KEY_DOWN_NOW(BUTTON_A) && hold==0) {
                        state=2;
                        hold=1;
                    }
                    break;
                case 2:
                    drawHollowRect4(100,0,59,239,0);
                    drawRect4(102,2,56,236,140);
                    char buffer3[50];
                    sprintf(buffer3, "X:");
                    drawString4(105,5,buffer3,0);
                    sprintf(buffer3, "I need to turn in my CS2110 homework!");
                    drawString4(120,5,buffer3,0);
                    if(KEY_DOWN_NOW(BUTTON_A) && hold==0) {
                        state=3;
                        hold=1;
                    }
                    break;
                case 3:
                    drawHollowRect4(100,0,59,239,0);
                    drawRect4(102,2,56,236,140);
                    char buffer4[50];
                    sprintf(buffer4, "Press Right to walk, Up to jump,");
                    drawString4(105,5,buffer4,0);
                    char buffer5[50];
                    sprintf(buffer5, "B to dash, A to fire.");
                    drawString4(120,5,buffer5,0);
                    if(KEY_DOWN_NOW(BUTTON_A) && hold==0) {
                        started=1;
                        state=0;
                        hold=1;
                    }
                    break;
                }
                if(!KEY_DOWN_NOW(BUTTON_A)) {
                    hold=0;
                }
            }
            //teleports
            if(started==1) {
                drawStage(30,STAGE_WIDTH,STAGE_HEIGHT,stage);
                if(telCount<80) {
                    drawRect4(telCount,megamanX.c-1+14,30,6,149);
                    drawRect4(telCount+1,megamanX.c+14,26,2,0);
                    telCount+=8;
                }
                else if(telCount>=80 && telCount<=120) {
                    shadow[2].attr0 = megamanX.r | X_PALETTE_TYPE | X_SPRITE_SHAPE;
                    shadow[2].attr1 = megamanX.c | X_SPRITE_SIZE;
                    shadow[2].attr2 = CHARGES_ID;
                    telCount+=8;
                }
                else {
                    shadow[2].attr0 = ATTR0_HIDE;
                    //draw megaman
                    shadow[0].attr0 = megamanX.r | X_PALETTE_TYPE | X_SPRITE_SHAPE;
                    shadow[0].attr1 = megamanX.c | X_SPRITE_SIZE;
                    shadow[0].attr2 = X_ID;
                    started=2;
                    telCount=0;
                }
            }
            //in Game
            if(started==2) {
                //update background
                moveScreen(megamanX.mapX);
                //status check
                if(!borderCheck(megamanX.r, megamanX.c)) {
                    megamanX.lives-=1;
                    hurting=1;
                }
                if(!checkHealth(&megamanX)) {
                    //need delay here
                    // for(int i=0; i<160;i++) {
                    // 	hurt(&megamanX, shadow);
                    // }
                    for(int i=0; i<128; i++) {
                        shadow[i].attr0 = ATTR0_HIDE;
                    }
                    refreshBlast(&megamanX, &blast, shadow, 1);
                    hurting=0;
                    minionSpawn=0;
                    turretSpawn=0;
                    turretFired=0;
                    started=0;
                    gameState=3;
                }

                //buttons
                if(KEY_DOWN_NOW(BUTTON_A) && hurting==0) {
                    if(charge<102)
                        charge++;
                    if(charge>20) {
                        drawCharges(&megamanX, shadow);
                    }
                }
                if(!KEY_DOWN_NOW(BUTTON_A) && charge<=20 && charge>0 && hurting==0) {
                    blast.fired = 1;
                    blast.r = megamanX.r;
                    charge = 0;
                    blastType = 0;
                }
                else if(!KEY_DOWN_NOW(BUTTON_A) && charge<=100 && charge>20 && hurting==0) {
                    blast.fired = 1;
                    blast.r = megamanX.r;
                    charge = 0;
                    blastType = 1;
                    shadow[2].attr0 = ATTR0_HIDE;
                    chargesDelay = 0;
                }
                else if(!KEY_DOWN_NOW(BUTTON_A) && charge<=102 && charge>100 && hurting==0) {
                    blast.fired = 1;
                    blast.r = megamanX.r;
                    charge = 0;
                    blastType = 2;
                    shadow[2].attr0 = ATTR0_HIDE;
                    chargesDelay = 0;
                }
                if((KEY_DOWN_NOW(BUTTON_B) || (KEY_DOWN_NOW(BUTTON_B) && KEY_DOWN_NOW(BUTTON_RIGHT)))
                        && stopMove==0 && hurting==0) {
                    dash(&megamanX, shadow);
                    moving = 2;
                }
                if(KEY_DOWN_NOW(BUTTON_RIGHT) && !KEY_DOWN_NOW(BUTTON_UP) &&
                        !KEY_DOWN_NOW(BUTTON_LEFT) && !KEY_DOWN_NOW(BUTTON_B) &&
                        megamanX.inAir==0 && hurting==0) {
                    stopMove = 0;
                    dashCounter = 0;
                    megamanX.mapX++;
                    walk(&megamanX, shadow);
                    moving = 1;
                }
                if(KEY_DOWN_NOW(BUTTON_LEFT) && !KEY_DOWN_NOW(BUTTON_UP) &&
                        !KEY_DOWN_NOW(BUTTON_RIGHT) && !KEY_DOWN_NOW(BUTTON_B) &&
                        megamanX.inAir==0 && hurting==0) {
                    stopMove = 0;
                    dashCounter = 0;
                    if(megamanX.mapX-25>0)
                        megamanX.mapX--;
                    walk(&megamanX, shadow);
                    moving = -1;
                }
                if(KEY_DOWN_NOW(BUTTON_RIGHT) && KEY_DOWN_NOW(BUTTON_UP)
                        && megamanX.inAir==0 && hurting==0) {
                    megamanX.inAir = 1;
                    jumpForward = 1;
                    moving = 1;
                }
                if(KEY_DOWN_NOW(BUTTON_UP) && megamanX.inAir==0 && hurting==0) {
                    megamanX.inAir = 1;
                    moving = 0;
                }
                //default position
                if(!KEY_DOWN_NOW(BUTTON_START) && !KEY_DOWN_NOW(BUTTON_SELECT) &&
                        !KEY_DOWN_NOW(BUTTON_B) &&
                        !KEY_DOWN_NOW(BUTTON_R) && !KEY_DOWN_NOW(BUTTON_L) &&
                        !KEY_DOWN_NOW(BUTTON_LEFT) && !KEY_DOWN_NOW(BUTTON_RIGHT) &&
                        !KEY_DOWN_NOW(BUTTON_DOWN) && !KEY_DOWN_NOW(BUTTON_UP) &&
                        megamanX.inAir==0 && hurting==0) {
                    stopMove = 0;
                    jumpCounter = 0;
                    dashCounter = 0;
                    shadow[0].attr2 = X_ID;
                    moving = 0;
                }
                //draw blast
                drawBlast(&blast, &megamanX, shadow);
                //gap check when walking
                if(((megamanX.mapX>=535 && megamanX.mapX<=545)
                        || (megamanX.mapX>=905 && megamanX.mapX<=921))) {
                    if(megamanX.inAir==0) {
                        megamanX.inAir=1;
                        falling=1;
                        jumpCounter=4;
                    }
                }
                if(megamanX.inAir==1) {
                    jump(&megamanX, shadow);
                }
                if(falling==1) {
                    groundCheck(&megamanX, worldmap);
                }
                geoCheck(&megamanX);

                drawLives(&megamanX);
                //restore
                if(hurtTime<=0) {
                    restore(shadow);
                }

                blastCollision(&megamanX, &blast, &minion, &turret,shadow);
                if(explosionDelay==0) {
                    shadow[2].attr0 = ATTR0_HIDE;
                    explosionDelay=12;
                }
                else {
                    explosionDelay--;
                }

                //player collision
                if(hurting==0) {
                    playerCollision(&megamanX, &minion, &turret, &bullet, shadow);
                }
                //check hurt is second priority
                if(hurting==1) {
                    hurt(&megamanX, shadow);
                }

                // for testing
                // char string[50];
                // char string2[50];
                // sprintf(string, "world x: %d, y: %d", megamanX.mapX, worldmap[megamanX.mapX].y-32);
                // sprintf(string2, "I am x: %d, y: %d", megamanX.mapX, megamanX.r);
                // drawString4(10,0,string,5);
                // drawString4(20,0,string2,5);

                //Enemy
                if(((megamanX.mapX>=50 && megamanX.mapX<=250) || (megamanX.mapX>=922 && megamanX.mapX<=1122)
                        || (megamanX.mapX>=1200 && megamanX.mapX<=1300)) && minionSpawn==0) {	//more condition here to spawn in area
                    minionSpawn = 1;
                    minion.lives=5;
                    minion.c = megamanX.mapX%240+240;
                    if(megamanX.mapX>=50 && megamanX.mapX<=250) {
                        minion.r = 67;	//it's short
                    }
                    else {
                        minion.r = 57;
                    }
                }
                if(minionSpawn==1) {
                    drawMinion(&minion, shadow);
                    if(!borderCheck(minion.r,minion.c)) {
                        minionSpawn=0;
                        shadow[3].attr0 = ATTR0_HIDE;
                    }
                    if(moving!=0 && hurting==0) {
                        minion.c-=moving;
                    }
                }
                //turret
                if(((megamanX.mapX>=300 && megamanX.mapX<=650)
                        || (megamanX.mapX>=950 && megamanX.mapX<=1050)) && turretSpawn==0) {
                    turretSpawn = 1;
                    turret.lives = 10;
                    turret.c = megamanX.mapX%240+240;
                    if(megamanX.mapX>=300 && megamanX.mapX<=650) {
                        turret.r = 36;	//it's short
                    }
                    else {
                        turret.r = 46;
                    }
                }

                if(turretSpawn==1) {
                    drawTurret(&turret, shadow);
                    if(!borderCheck(turret.r,turret.c)) {
                        turretSpawn=0;
                        shadow[4].attr0 = ATTR0_HIDE;
                    }
                    else if(turretFired==0) {
                        bullet.c = turret.c-10;
                        if(megamanX.mapX>=300 && megamanX.mapX<=650) {
                            bullet.r = 45;	//it's short
                        }
                        else {
                            bullet.r = 55;
                        }
                    }
                    if(moving!=0 && hurting==0) {
                        bullet.c-=moving;
                    }

                }
                //fire
                if(turretFired==1) {
                    bulletAnimate(&bullet, shadow);
                }
                if(!borderCheck(bullet.r,bullet.c)) {
                    turretFired=0;
                    shadow[5].attr0 = ATTR0_HIDE;
                }
                else if(turretSpawn==1) {
                    if(bulletDelay<=0) {
                        turretFired=1;
                        bulletDelay=100;
                    }
                    else {
                        bulletDelay--;
                    }
                }
                if(moving!=0 && hurting==0) {
                    turret.c-=moving;
                }


                //spawn drlight when reach end
                if(megamanX.mapX>=STAGE_WIDTH-270) {	//more condition here to spawn in area
                    started=3;
                }
            }

            if(started==3) {
                for(int i=0; i<128; i++) {
                    shadow[i].attr0 = ATTR0_HIDE;
                }
                drawStage(STAGE_WIDTH-270,STAGE_WIDTH,STAGE_HEIGHT,stage);
                shadow[0].attr0 = 52 | X_PALETTE_TYPE | X_SPRITE_SHAPE;
                shadow[0].attr1 = 30 | X_SPRITE_SIZE;
                shadow[0].attr2 = X_ID;
                drlight.c = megamanX.c+160;
                drlight.r = megamanX.r;
                shadow[6].attr0 = drlight.r | X_PALETTE_TYPE | X_SPRITE_SHAPE;
                shadow[6].attr1 = drlight.c | X_SPRITE_SIZE;
                shadow[6].attr2 = DRLIGHT_ID;
                switch (state) {
                case 0:
                    drawHollowRect4(100,0,59,239,0);
                    drawRect4(102,2,56,236,140);
                    char buffer[50];
                    sprintf(buffer, "X:");
                    drawString4(105,5,buffer,0);
                    sprintf(buffer, "Professor!");
                    drawString4(120,5,buffer,0);
                    if(KEY_DOWN_NOW(BUTTON_A) && hold==0) {
                        state=1;
                        hold=1;
                    }
                    break;
                case 1:
                    drawHollowRect4(100,0,59,239,0);
                    drawRect4(102,2,56,236,140);
                    char buffer2[50];
                    sprintf(buffer2, "Professor Light:");
                    drawString4(105,5,buffer2,0);
                    sprintf(buffer2, "Finally, you have come.");
                    drawString4(120,5,buffer2,0);
                    if(KEY_DOWN_NOW(BUTTON_A) && hold==0) {
                        state=2;
                        hold=1;
                    }
                    break;
                case 2:
                    drawHollowRect4(100,0,59,239,0);
                    drawRect4(102,2,56,236,140);
                    char buffer3[50];
                    sprintf(buffer3, "X:");
                    drawString4(105,5,buffer3,0);
                    sprintf(buffer3, "Here's my assignment");
                    drawString4(120,5,buffer3,0);
                    if(KEY_DOWN_NOW(BUTTON_A) && hold==0) {
                        state=3;
                        hold=1;
                    }
                    break;
                case 3:
                    drawHollowRect4(100,0,59,239,0);
                    drawRect4(102,2,56,236,140);
                    char buffer4[50];
                    sprintf(buffer4, "Professor Light:");
                    drawString4(105,5,buffer4,0);
                    char buffer5[50];
                    sprintf(buffer5, "Goodjob X.");
                    drawString4(120,5,buffer5,0);
                    if(KEY_DOWN_NOW(BUTTON_A) && hold==0) {
                        started=4;
                        state=0;
                        hold=1;
                        break;
                    }
                    break;
                }
                if(!KEY_DOWN_NOW(BUTTON_A)) {
                    hold=0;
                }
            }

            if(started==4) {
                drawStage(STAGE_WIDTH-270,STAGE_WIDTH,STAGE_HEIGHT,stage);
                if(telCount<40) {
                    //hide megaman
                    shadow[0].attr0 = ATTR0_HIDE;
                    shadow[2].attr0 = megamanX.r | X_PALETTE_TYPE | X_SPRITE_SHAPE;
                    shadow[2].attr1 = megamanX.c | X_SPRITE_SIZE;
                    shadow[2].attr2 = CHARGES_ID;
                    telCount+=8;
                }
                else if(telCount>=40 && telCount<=120) {
                    shadow[2].attr0 = ATTR0_HIDE;
                    drawRect4(121-telCount,megamanX.c-1+14,30,6,149);
                    drawRect4(121-telCount+1,megamanX.c+14,26,2,0);
                    telCount+=8;
                }
                else {
                    for(int i=0; i<128; i++) {
                        shadow[i].attr0 = ATTR0_HIDE;
                    }
                    megamanX.r = 62;
                    megamanX.c = 30;
                    megamanX.mapX = megamanX.c;
                    megamanX.mapY = megamanX.r;
                    megamanX.inAir = 0;
                    megamanX.lives = 20;
                    started=0;
                    telCount=0;
                    gameState=2;
                }
            }

            waitForVblank();
            flipPage();
            //update spritememory
            DMA[3].src = shadow;
            DMA[3].dst = SPRITEMEM;
            DMA[3].cnt = 128 * 4 | DMA_ON;
        }

        if(gameState==2) {
            stage_stop();
            DMA[3].src = win_palette;
            DMA[3].dst = PALETTE;
            DMA[3].cnt = DMA_ON | WIN_PALETTE_SIZE;
        }
        while(gameState==2) {
            drawImage4(0,0,240,160,win);
            if(KEY_DOWN_NOW(BUTTON_A) || KEY_DOWN_NOW(BUTTON_START) || KEY_DOWN_NOW(BUTTON_SELECT)) {
                gameState=0;
                break;
            }
            waitForVblank();
            flipPage();
        }

        if(gameState==3) {
            stage_stop();
            DMA[3].src = lost_palette;
            DMA[3].dst = PALETTE;
            DMA[3].cnt = DMA_ON | LOST_PALETTE_SIZE;
        }
        while(gameState==3) {
            drawImage4(0,0,240,160,lost);
            if(KEY_DOWN_NOW(BUTTON_A) || KEY_DOWN_NOW(BUTTON_START)) {
                hurting=0;
                megamanX.r = 62;
                megamanX.c = 30;
                megamanX.mapX = megamanX.c;
                megamanX.mapY = megamanX.r;
                megamanX.inAir = 0;
                megamanX.lives = 20;
                started=0;
                telCount=0;
                gameState=1;
                break;
            }
            if(KEY_DOWN_NOW(BUTTON_SELECT)) {
                megamanX.r = 62;
                megamanX.c = 30;
                megamanX.mapX = megamanX.c;
                megamanX.mapY = megamanX.r;
                megamanX.inAir = 0;
                megamanX.lives = 20;
                started=0;
                telCount=0;
                gameState=0;
                break;
            }
            waitForVblank();
            flipPage();
        }
    }
}
Ejemplo n.º 9
0
int main(void) {
    LinkedList List;
    u16 * ship = NULL;
    GBA_STATE state = GBA_STARTING;
    int i;
    int sze = 3;
    int time = 0;
    int rate = 10;
    int tlRow = 1;
    int tlCol = 2;
    int H = 21;
    int W = 32;
    int row = 80 - H;
    int col = 240 - W;
    LLNode * here;
    ship = (u16 *) malloc(H * W);
    fillPatch(ship,(u16 *) ShipBitmap, tlRow, tlCol, H, W);
    for(i = 0; i < 4; i++) colorIndex[i] = findbestColor(COLOR(12 + 4*i, 0, 0), StarrySkyPal);
    load_palette((u16 *) StarrySkyPal);
    List = emptyList();
    setup();
    while (1) {
        waitForScan();
        flipPage();
        switch (state) {
            case GBA_STARTING:
                copy_full_screen((u16 *) Start_ScreenBitmap);
                if (check_key(BUTTON_NDX_START) == KEY_RELEASED) {
                    state = GBA_RUNNING;
                } 
                break;
            case GBA_RUNNING:
                if(KEY_DOWN_NOW(BUTTON_DOWN)&&(row<(SCREEN_HEIGHT - H))) row++;
                if(KEY_DOWN_NOW(BUTTON_UP)&&(row > 0)) row--;
                if(KEY_DOWN_NOW(BUTTON_RIGHT)&&(col < SCREEN_WIDTH - W)) col++;
                if(KEY_DOWN_NOW(BUTTON_LEFT)&&(col>0)) col--;
                if (time % rate == 0) {
                    /*random size for the Astroids*/
                    addAstroid(&List, sze + (rand() % 4));
                }
                time++;
                update(&List);
                copy_full_screen((u16 *) StarrySkyBitmap);
                getPatch(ship, row, col, H, W);
                display(List);
                here = List.head;
                /*Collision Detection*/
                while(here){
                    if((here->data->row > (row - here->data->side)) && 
                       (here->data->row < (row + H)) && (here->data->col == col + 10)){
                        state = GBA_STARTING;
                        break;
                    }
                    here = here->next;
                }
                break;
        }
    }
    delete(&List);
    free(ship);
    return 0;
}
Ejemplo n.º 10
0
int main(void) {


	for (int i = 0; i < SCREEN_PALETTE_SIZE; i++) {
		PALETTE[i] = screen_palette[i];
	}

	for (int j = 129; j < PLAYSCREEN_PALETTE_SIZE; j++) {
		PALETTE[j] = playscreen_palette[j];
	}

	REG_DISPCTL = MODE4 | BG2_ENABLE ;

	int state = START;

	while(1) {
		switch(state) {

			case START:
				setPalette(screen_palette, SCREEN_PALETTE_SIZE);
				drawImage4(0, 0, HOMESCREEN_WIDTH, HOMESCREEN_HEIGHT, homescreen);
				// drawString4(90, 100, "HELLO!", PALETTE[100]);
				life = 3;

				frog.x = 146;
				frog.y = 120;
				redcar1.x = 127;
				redcar1.y = 190;
				yellowcar1.x = 108;
				yellowcar1.y = 60;
				bluecar1.x = 90;
				bluecar1.y = 140;
				flower1.x = 60;
				flower1.y = 0;
				tree1.x = 46;
				tree1.y = 150;
				flower2.x = 32;
				flower2.y = 60;
				tree2.x = 18;
				tree2.y = 210;


				if(KEY_DOWN_NOW(BUTTON_START)) {
					state = PLAY;
						// for (int i = 0; i < PLAYSCREEN_PALETTE_SIZE; i++) {
						// 	PALETTE[i] = playscreen_palette[i];
						// }
					
					setPalette(playscreen_palette, PLAYSCREEN_PALETTE_SIZE);
					drawImage4(0, 0, BACKGROUND_WIDTH, BACKGROUND_HEIGHT, background);
					//drawImage4(100, 100, FROG1_WIDTH, FROG1_HEIGHT, frog1);
					//drawImage4(30, 30, FLOWER_WIDTH, FLOWER_HEIGHT, flower);
					flipPage();

				}
				break;


			case PLAY:
				state = play();	

				break;

			case GAMEWIN:
				setPalette(screen_palette,SCREEN_PALETTE_SIZE);
				drawImage4(0, 0, WINSCREEN_WIDTH, WINSCREEN_HEIGHT, winscreen);

				if(KEY_DOWN_NOW(BUTTON_SELECT)) {
					state = START;
				}

				break;

			case GAMELOSE:
				setPalette(screen_palette,SCREEN_PALETTE_SIZE);
				drawImage4(0, 0, GAMEOVER_WIDTH, GAMEOVER_HEIGHT, gameover);

				if(KEY_DOWN_NOW(BUTTON_SELECT)) {
					state = START;
				}
				
				break;
		}
		waitForVblank();
		flipPage();
	}

	return(0);
}
Ejemplo n.º 11
0
int play() {

	drawFrog();

	while(1) {

		drawImage4(0, 0, BACKGROUND_WIDTH, BACKGROUND_HEIGHT, background);
		// if(life < 61 && life >= 45) {
		// 	lifeCount = 3;
		// } else if (life < 45 && life >= 30){
		// 	lifeCount = 2;
		// } else if (life < 30 && life > 10) {
		// 	lifeCount = 1;
		// } 
		char str[15];
		drawString4 (4, 8, "Your life: ", PALETTE[11]);
		sprintf (str, "%d", life);

		drawString4 (4, 70, str, PALETTE[11]);


		if(KEY_DOWN_NOW(BUTTON_RIGHT)) {
			frog.y = frog.y + 1;
			
			drawFrog();

			flipPage();


		} else if (KEY_DOWN_NOW(BUTTON_LEFT)) {

			frog.y = frog.y - 1;
			drawFrog();
			flipPage();


		} else if (KEY_DOWN_NOW(BUTTON_UP)) {

			frog.x = frog.x - 1;

			// drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog1);
			// drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog2);
			// drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog3);
			// drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog4);
			// drawImage4(frog.x, frog.y, FROG1_WIDTH, FROG1_HEIGHT, frog1);
			drawFrog();

			flipPage();

		} else if (KEY_DOWN_NOW(BUTTON_DOWN)) {

			frog.x = frog.x + 1;
			drawFrog();
			flipPage();

		} 

		if (KEY_DOWN_NOW(BUTTON_SELECT)) {

			return START;
		}

		waitForVblank();

				if ((frog.x == 0)) {
			return GAMEWIN;
		}
		drawOther();

		
		redcar1.x %= 160;
		yellowcar1.x %= 160;
		bluecar1.x %= 160;
		flower1.x %= 160;
		tree1.x %= 160;
		flower2.x %= 160;
		tree2.x %= 160;


		redcar1.y %= 240;
		yellowcar1.y %= 240;
		bluecar1.y %= 240;
		flower1.y %= 240;
		tree1.y %= 240;
		flower2.y %= 240;
		tree2.y %= 240;;

		if(((((frog.x >= redcar1.x - 7)&&(frog.x <= redcar1.x +7)) && ((frog.y >= redcar1.y-7) && (frog.y <= redcar1.y + 7)))) ||
			((((frog.x >= yellowcar1.x - 7)&&(frog.x <= yellowcar1.x +7)) && ((frog.y >= yellowcar1.y-7) && (frog.y <= yellowcar1.y + 7)))) ||
			((((frog.x >= bluecar1.x - 7)&&(frog.x <= bluecar1.x +7)) && ((frog.y >= bluecar1.y-7) && (frog.y <= bluecar1.y + 7)))) ||
			((((frog.x >= flower1.x - 7)&&(frog.x <= flower1.x +7)) && ((frog.y >= flower1.y-7) && (frog.y <= flower1.y + 7)))) ||
			((((frog.x >= tree1.x - 7)&&(frog.x <= tree1.x +7)) && ((frog.y >= tree1.y-7) && (frog.y <= tree1.y + 7)))) ||
			((((frog.x >= flower2.x - 7)&&(frog.x <= flower2.x +7)) && ((frog.y >= flower2.y-7) && (frog.y <= flower2.y + 7)))) ||
			((((frog.x >= tree2.x - 7)&&(frog.x <= tree2.x +7)) && ((frog.y >= tree2.y-7) && (frog.y <= tree2.y + 7))))) {

			frog.x = 146;
			frog.y = 120;
			drawFrog();

			life -= 1;

			if (life == 0) {
				return GAMELOSE;
			}
			if (frog.x == 0) {
				return GAMEWIN;
			}

		}

	}
	return 0;
}
Ejemplo n.º 12
0
static int gotHome(int isSafe) {
	if (homeFlags[0] == 0 && frog.y >= 10 && frog.y <= 30 && frog.x >= 10 && frog.x <= 25) {
		drawString4(95, 75, "YOU ARE SAVE NOW!", PALETTE[1]);
		flipPage();
		homeFlags[0] = 1;
		loadAvatar();
		isSafe = 1;
		delay(20);
	}
	if (homeFlags[0]) {
		drawImage4(18, 15, 14, 14, frog.imgU1);
	}
	if (homeFlags[1] == 0 && frog.y >= 10 && frog.y <= 30 && frog.x >= 60 && frog.x <= 70) {
		drawString4(95, 75, "YOU ARE SAVE NOW!", PALETTE[1]);
		flipPage();
		homeFlags[1] = 1;
		loadAvatar();
		isSafe = 1;
		delay(20);
	}
	if (homeFlags[1]) {
		drawImage4(66, 15, 14, 14, frog.imgU1);
	}
	if (homeFlags[2] == 0 && frog.y >= 10 && frog.y <= 30 && frog.x >= 108 && frog.x <= 118) {
		drawString4(95, 75, "YOU ARE SAVE NOW!", PALETTE[1]);
		flipPage();
		homeFlags[2] = 1;
		loadAvatar();
		isSafe = 1;
		delay(20);
	}
	if (homeFlags[2]) {
		drawImage4(114, 15, 14, 14, frog.imgU1);
	}
	if (homeFlags[3] == 0 && frog.y >= 10 && frog.y <= 30 && frog.x >= 155 && frog.x <= 165) {
		drawString4(95, 75, "YOU ARE SAVE NOW!", PALETTE[1]);
		flipPage();
		homeFlags[3] = 1;
		loadAvatar();
		isSafe = 1;
		delay(20);
	}
	if (homeFlags[3]) {
		drawImage4(160, 15, 14, 14, frog.imgU1);
	}
	if (homeFlags[4] == 0 && frog.y >= 10 && frog.y <= 30 && frog.x >= 195 && frog.x <= 210) {
		drawString4(95, 75, "YOU ARE SAVE NOW!", PALETTE[1]);
		flipPage();
		homeFlags[4] = 1;
		loadAvatar();
		isSafe = 1;
		delay(20);
	}
	if (homeFlags[4]) {
		drawImage4(208, 15, 14, 14, frog.imgU1);
	}
	if (homeFlags[0] && homeFlags[1] && homeFlags[2] && homeFlags[3] && homeFlags[4]) {
		win();
	}
	return isSafe;
}
Ejemplo n.º 13
0
int main() {

  REG_DISPCTL = MODE4 | BG2_ENABLE;
  
  // Splash screen here
  setPalette(mainScreen_palette);
  drawImage4(0, 0, 240, 160, mainScreen);
  waitForVBlank();
  flipPage();
  int screen = 1;
  
  int currentMode = EDITMODE;
  const u16 colors[] = {WHITE, BLACK, RED, GREEN};
  

  // alive = black = 1
  // dead = white = 0
  // alive + cursor = green = 3
  // dead + cursor = red = 2

  while (1) {
	  if (screen) {
	  	  setPalette(mainScreen_palette);
		  drawImage4(0, 0, 240, 160, mainScreen);
		  waitForVBlank();
		  flipPage();
	  	  if (KEY_DOWN_NOW(BUTTON_SELECT)) {
	  	  	screen = 0;
	  	    setPalette(colors);
  	  	    fillScreen4(DEAD);
  	  	    flipPage();
	  	    copy();
	  	  	while (KEY_DOWN_NOW(BUTTON_SELECT)) {
	  	  	}
	  	  }
	  
	  } else {
		  int draw = 0;
		  
		  // Select (backspace) = toggle between edit and simmode
	  	  if (KEY_DOWN_NOW(BUTTON_SELECT)) {
			if (currentMode == EDITMODE) {
			  currentMode = SIMMODE;
			  eraseCursor();
			} else {
			  currentMode = EDITMODE;
			}
			while (KEY_DOWN_NOW(BUTTON_SELECT)) {
			// Won't do anything while select button is down
			}
		  }
		  
		  // SIMMODE = 1
		  // EDITMODE = 0
		  
		  // ***************SIM MODE*******************
		  if (currentMode) {
		  	int paused = 0;
		  	int sim = 1;
		  	while (sim) {
		  		while (~paused & currentMode) {
			  		currentMode = simTick();
			  		if (KEY_DOWN_NOW(BUTTON_SELECT)) {
			  			currentMode = EDITMODE;
			  			sim = 0;
			  			while (KEY_DOWN_NOW(BUTTON_SELECT)) {
			  			}
			  		}
			  		if (KEY_DOWN_NOW(BUTTON_A)) {
			  			paused = 1;
			  			while (KEY_DOWN_NOW(BUTTON_A)) {
			  			}
			  		}
			  	}
		  		//******************PAUSED****************
			  	while (paused) {
		  	  		// Button B is X
	  				// This toggles next frame
			  		if (KEY_DOWN_NOW(BUTTON_B)) {
				  		simTick();
				  	}
					if (KEY_DOWN_NOW(BUTTON_SELECT)) {
			  			currentMode = EDITMODE;
			  			while (KEY_DOWN_NOW(BUTTON_SELECT)) {
			  			}
			  			sim = 0;
			  			paused = 0;
			  		}
			  		if (KEY_DOWN_NOW(BUTTON_A)) {
			  			paused = 0;
			  			while (KEY_DOWN_NOW(BUTTON_A)) {
			  			}
			  		}
			  	} // end of paused
		  	} // end of sim
		  } // end of currentMode if

		  // ************EDIT MODE**************
		  if (~currentMode) {
		  	copy();
		  	drawCursor();
		  	draw = cursorMoves();
		  	if (KEY_DOWN_NOW(BUTTON_L)) {
		  		fillScreen4(DEAD);
		  		flipPage();
		  		copy();
		  		while (KEY_DOWN_NOW(BUTTON_L)) {
		  		}
		  	}
		  }
		  
		  
		  drawCursor();
	  	  if (draw) {
			  waitForVBlank();
			  flipPage();
			  draw = 0;
		  }
	  } // end of else

  }

}
Ejemplo n.º 14
0
void TopLevel::handle_X_event(XEvent Event)
{
  if(!thispage || !Image || !faxqtwin || !display_is_setup)
    return;

  bool putimage = false; // Do we actually have to write the image to the scree?

  do {
    switch(Event.type) {
    case MappingNotify:
      XRefreshKeyboardMapping((XMappingEvent *)(&Event));
		break;

    case LeaveNotify:
      /*      buttondown = false;
	XDefineCursor(qtdisplay, Win, ReadyCursor);
	XFlush(qtdisplay);*/
      break;
    case Expose:
      {

	if(Event.xexpose.count != 0)
	  break;

	if(!Image)
	  break;

	putimage = TRUE;
      }
    break;

    case KeyPress:
      if (ExpectConfNotify &&
	  (Event.xkey.time < (Lasttime + PATIENCE)))
	break;
      Lasttime = Event.xkey.time;
      ExpectConfNotify = 0;
      switch(XKeycodeToKeysym(qtdisplay, Event.xkey.keycode, 0)) {
      case XK_m:
	mirrorPage();
	if (Event.xkey.state & ShiftMask)
	  TurnFollowing(TURN_M, thispage->next);
  	break;
      case XK_o:
	zoomout();
	break;

      case XK_i:
	zoomin();
	break;

      case XK_Up:
	ypos-= qwindow_height / 3;
	putimage = TRUE;
	break;
      case XK_Down:
	ypos+= qwindow_height / 3;
	putimage = TRUE;
	break;
      case XK_Left:
	xpos-= qwindow_width / 4;
	putimage = TRUE;
	break;
      case XK_Right:
	xpos+= qwindow_width / 4;
	putimage = TRUE;
	break;
      case XK_Home:
      case XK_R7:
	if (Event.xkey.state & ShiftMask) {
	  thispage = firstpage;
	  newPage();
	  resizeView();
	  putImage();
	  break;
	}
	xpos= 0;
	ypos= 0;
	putImage();
	break;
      case XK_End:
      case XK_R13:
	if (Event.xkey.state & ShiftMask) {
	  thispage = lastpage;
	  newPage();
	  resizeView();
	  putImage();
	  break;
	}
	xpos= Image->width;
	ypos= Image->height;
	putImage();
	break;
      case XK_l:
      case XK_r:
	rotatePage();
	if (Event.xkey.state & ShiftMask)
	  TurnFollowing(TURN_L, thispage->next);
	break;
      case XK_p:
      case XK_minus:
      case XK_Prior:
      case XK_R9:
      case XK_BackSpace:
	prevPage();
	break;
      case XK_n:
      case XK_plus:
      case XK_space:
      case XK_Next:
      case XK_R15:
	nextPage();
	break;
      case XK_u:
	flipPage();
	if (Event.xkey.state & ShiftMask)
	  TurnFollowing(TURN_U, thispage->next);
	break;

      case XK_q:
	if (viewpage) {
	  thispage = viewpage;
	  viewpage = NULL;
	  newPage();
	  resizeView();
	  putImage();
	}

      }

      break;

    case ButtonPress:

      if (ExpectConfNotify && (Event.xbutton.time < (Lasttime + PATIENCE)))
	break;

      Lasttime = Event.xbutton.time;
      ExpectConfNotify = 0;


      switch (Event.xbutton.button) {

      case Button1:
	buttondown = true;

	switch (((Image->width > qwindow_width)<<1) |
		(Image->height > qwindow_height)) {
	case 0:
	  break;
	case 1:
	  XDefineCursor(qtdisplay, Win, UDCursor);
	  break;
	case 2:
	  XDefineCursor(qtdisplay, Win, LRCursor);
	  break;
	case 3:
	  XDefineCursor(qtdisplay, Win, MoveCursor);
	}

	XFlush(qtdisplay);
		offx = Event.xbutton.x;
		offy = Event.xbutton.y;
	break;

      }

      break;

    case MotionNotify:
      if(!buttondown)
	break;
      do {

	nx = Event.xmotion.x;
	ny = Event.xmotion.y;


      } while (XCheckTypedEvent(qtdisplay, MotionNotify, &Event));


      xpos+= offx - nx;
      ypos+= offy - ny;

      offx = nx;
      offy = ny;

      putimage = TRUE;

      break;

    case ButtonRelease:

      if (Event.xbutton.button == Button1) {

	buttondown = false;
	XDefineCursor(qtdisplay, Win, ReadyCursor);
	XFlush(qtdisplay);
      }

    }

  } while (XCheckWindowEvent(qtdisplay, Win, KeyPressMask|ButtonPressMask, &Event));

  if(putimage == TRUE) {
    Refresh = Resize = 1;
    putImage();
  }
}