void PlayerBrowser::draw(){ s8 i = 0; PA_SetBrightness(0, -31); // all black PA_SetBrightness(1, -31); // all black PA_ResetSpriteSys(); PA_Init16cBg(1, 0); PA_Init16cBg(0, 0); PA_LoadTiledBg(1, 1, bgplayer1); PA_LoadTiledBg(0, 1, bgplayer0); PA_LoadSpritePal(0, 1, (void*)pbutton_Pal); PA_KeyboardOut(); PA_CreateSprite(0, TERM_SCREEN, (void*)term_Sprite, OBJ_SIZE_64X32, 1, 1, 0, 0); PA_CreateSprite(0, PLAYERS_SCREEN, (void*)players_Sprite, OBJ_SIZE_64X32, 1, 1, 64, 0); PA_CreateSprite(0, GAMES_SCREEN, (void*)games_Sprite, OBJ_SIZE_64X32, 1, 1, 128, 0); PA_CreateSprite(0, OPTIONS_SCREEN, (void*)options_Sprite, OBJ_SIZE_64X32, 1, 1, 192, 0); PA_SetSpriteAnim(0, 11, 1); for(i = -31; i < 0 ; i++){ PA_SetBrightness(0, i); PA_SetBrightness(1, i); PA_WaitForVBL(); } PA_16cText(0, 6, 85, 80, 95, "NAMEXXXXXX", 1, 1, 100); PA_16cText(0, 88, 85, 127, 95, "[12k*]", 1, 1, 100); PA_16cText(0, 128, 85, 136, 95, "X", 1, 1, 100); PA_16cText(0, 6, 95, 80, 115, "NAMEXXXXXX", 1, 1, 100); PA_16cText(0, 88, 95, 127, 115, "[12k*]", 1, 1, 100); PA_16cText(0, 128, 95, 136, 115, "X", 1, 1, 100); }
/* 블락 보여주기*/ void view_block() { int i, j; int k = 0; // 스프라이트 넘버. for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) { PA_CreateSprite(DOWN_SCREEN, k, (void*) Block_Sprite, OBJ_SIZE_32X32, 1, BLOCKPAL, (40 * i) + 52, (40 * j) + 20); PA_SetSpriteAnim(DOWN_SCREEN, k, uinfo.userBlock[j][i]); // 블록배열의 값을 스프라이트에 반영. k++; } } }
void SpecialBox::show() { /// SpecialBox PA_CreateSprite( mScreenNum // screen , mSpriteNum // Sprite number (auto generated) , const_cast<unsigned char*>(mName) , OBJ_SIZE_64X32 // Sprite size , k256colors // 256 colormode , pallet_num() //Sprite palette number , mPoint.get_mX(), mPoint.get_mY()); PA_SetSpriteAnim(mScreenNum, mSpriteNum, mFrame); }
/* 블락 스프라이트 갱신*/ int block_reload(int k) { int i, j; j = k/4; i = k%4; if(uinfo.userBlock[j][i] > blocks[j][i]){ blocks[j][i]++; PA_SetSpriteAnim(DOWN_SCREEN, k, blocks[j][i]); // 블록배열의 값을 스프라이트에 반영. uinfo.userScore = uinfo.userScore*stageTime; return 0; } else //if(uinfo.userBlock[j][i] <= blocks[j][i]) return 1; }
/* 블락 스프라이트 갱신*/ void block_reload(int k) { int i, j; i = k / 4; j = k % 4; if (uinfo.userBlock[j][i] > blocks[j][i]) { AS_SoundDefaultPlay((u8*) clk, (u32) clk_size, 50, 64, FALSE, 0); blocks[j][i]++; PA_SetSpriteAnim(DOWN_SCREEN, k, blocks[j][i]); // 블록배열의 값을 스프라이트에 반영. uinfo.userScore += uinfo.userStage * stageTime; } else { stageTime -= 2; AS_SoundDefaultPlay((u8*) wclk, (u32) wclk_size, 50, 64, FALSE, 0); Gaming_info(); } }
void CheckBox::show() { /// CheckBox PA_CreateSprite( mScreenNum // screen , mSpriteNum // Sprite number (auto generated) , (void*)CheckBox_Sprite // Sprite mName (changes based off of class being called from) , OBJ_SIZE_16X16 // Sprite size , k256colors // 256 colormode , pallet_num() //Sprite palette number , mPoint.get_mX(), mPoint.get_mY()); /// title PA_CreateSprite( mScreenNum , mTitleSpriteNum , const_cast<unsigned char*>(mName) , OBJ_SIZE_64X32 , k256colors , titlepallet_num() , mPoint.get_mX()-70, mPoint.get_mY()-8); PA_SetSpriteAnim(mScreenNum, mSpriteNum, mFrame); }
portTASK_FUNCTION(Screen_Task, pvParameters) { PA_LoadSpritePal(UP_SCREEN, UPSCR_BODY_PAL, (void*) man_Pal); PA_LoadSpritePal(UP_SCREEN, NUM_PAL, (void*) number_Pal); PA_LoadSpritePal(UP_SCREEN, WORD_PAL, (void*) word_Pal); PA_CreateSprite(UP_SCREEN, WORD, (void*) word_Sprite, OBJ_SIZE_32X32, TRUE, WORD_PAL, 8, 22); PA_CreateSprite(UP_SCREEN, WORD+1, (void*) word_Sprite, OBJ_SIZE_32X32, TRUE, WORD_PAL, 40, 22); PA_CreateSprite(UP_SCREEN, WORD+2, (void*) number_Sprite, OBJ_SIZE_32X32, TRUE, NUM_PAL, 72, 22); PA_CreateSprite(UP_SCREEN, WORD+3, (void*) number_Sprite, OBJ_SIZE_32X32, TRUE, NUM_PAL, 97, 22); PA_SetSpriteAnim (UP_SCREEN, WORD, 2); PA_SetSpriteAnim (UP_SCREEN, WORD+1, 3); PA_SetSpriteAnim (UP_SCREEN, WORD+2, MAX_BODY_LENGTH/10); PA_SetSpriteAnim (UP_SCREEN, WORD+3, MAX_BODY_LENGTH%10); PA_CreateSprite(UP_SCREEN, UPSCRBODY, (void*) man_Sprite, OBJ_SIZE_16X32, TRUE, UPSCR_BODY_PAL, 12, 52); PA_CreateSprite(UP_SCREEN, UPSCRNUM, (void*) number_Sprite, OBJ_SIZE_32X32, TRUE, NUM_PAL, 30, 58); PA_SetSpriteAnim (UP_SCREEN, UPSCRNUM, 10); PA_CreateSprite(UP_SCREEN, UPSCRNUM+1, (void*) number_Sprite, OBJ_SIZE_32X32, TRUE, NUM_PAL, 55, 58); PA_CreateSprite(UP_SCREEN, UPSCRNUM+2, (void*) number_Sprite, OBJ_SIZE_32X32, TRUE, NUM_PAL, 80, 58); PA_StartSpriteAnim(UP_SCREEN,UPSCRBODY,8, 10, 3); while (1) { PA_SetSpriteAnim (UP_SCREEN, UPSCRNUM+1, length/10); PA_SetSpriteAnim (UP_SCREEN, UPSCRNUM+2, length%10); vTaskDelay(MSEC2TICK(100)); } }
int main() { int heroX=0; srand(time(NULL)); Dong dong1={rand()%255,0}; Dong dong2={rand()%255,0}; Dong dong3={rand()%255,0}; Dong dong4={rand()%255,0}; Dong dong5={rand()%255,0}; Dong dong6={rand()%255,0}; Dong dong7={rand()%255,0}; PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL PA_InitSound(); PA_PlayMod(modfile); // Infinite loop to keep the program running while (1) { int score=0; static int scoreRank1=0, scoreRank2=0, scoreRank3=0; PA_EasyBgLoad(UP_SCREEN, BG2, mainup); PA_EasyBgLoad(DOWN_SCREEN, BG2, Menu); int selnum=0; selnum = sel_menu(); if(selnum == 1){ GAMESTART: //�������� PA_EasyBgLoad(UP_SCREEN, BG2, backgroundUp); PA_EasyBgLoad(DOWN_SCREEN, BG2, backgroundDown); PA_WaitForVBL(); //ij���� ���� PA_LoadSpritePal(DOWN_SCREEN,0,(void*)frames_Pal); PA_CreateSprite(DOWN_SCREEN,0,(void*)frames_Sprite, OBJ_SIZE_16X32, 1, 0, 128-16, 192-32); PA_DualLoadSpritePal(2,(void*)dong_Pal); PA_DualLoadSpritePal(3,(void*)dong_Pal); PA_DualLoadSpritePal(4,(void*)dong_Pal); PA_DualLoadSpritePal(5,(void*)dong_Pal); PA_DualLoadSpritePal(6,(void*)dong_Pal); PA_DualLoadSpritePal(7,(void*)dong_Pal); PA_DualLoadSpritePal(8,(void*)dong_Pal); PA_DualCreateSprite(2,(void*)dong_Sprite, OBJ_SIZE_16X16,1,2,0,0); PA_DualCreateSprite(3,(void*)dong_Sprite, OBJ_SIZE_16X16,1,3,0,0); PA_DualCreateSprite(4,(void*)dong_Sprite, OBJ_SIZE_16X16,1,4,0,0); PA_DualCreateSprite(5,(void*)dong_Sprite, OBJ_SIZE_16X16,1,5,0,0); PA_DualCreateSprite(6,(void*)dong_Sprite, OBJ_SIZE_16X16,1,6,0,0); PA_DualCreateSprite(7,(void*)dong_Sprite, OBJ_SIZE_16X16,1,6,0,0); PA_DualCreateSprite(8,(void*)dong_Sprite, OBJ_SIZE_16X16,1,6,0,0); /* �ؽ�Ʈ ���� �κ� */ PA_InitText(UP_SCREEN, BG0); PA_SetTextTileCol(UP_SCREEN, 9); PA_OutputText(DOWN_SCREEN, 1, 21, "test"); //PA_DualSetSpriteAnim(2,2); //PA_DualSetSpriteAnim(3,3); while(true){ if(Pad.Held.Right && heroX<256-16){ PA_SetSpriteAnim(0,0,1); heroX+=10; } if(Pad.Held.Left && heroX>0){ PA_SetSpriteAnim(0,0,3); heroX-=10; } PA_SetSpriteXY(DOWN_SCREEN,0,heroX,192-32); PA_WaitForVBL(); //--------------------------------------------------------------- dong1.y+=10; if(dong1.y>410){ score+=100; dong1.y=0; dong1.x =rand()%255; } dong2.y+=11; if(dong2.y>410){ score+=100; dong2.y=0; dong2.x =rand()%255; } dong3.y+=12; if(dong3.y>410){ score+=100; dong3.y=0; dong3.x =rand()%255; } dong4.y+=13; if(dong4.y>410){ score+=100; dong4.y=0; dong4.x =rand()%255; } dong5.y+=14; if(dong5.y>410){ score+=100; dong5.y=0; dong5.x =rand()%255; } dong6.y+=15; if(dong6.y>410){ score+=100; dong6.y=0; dong6.x =rand()%255; } dong7.y+=16; if(dong7.y>410){ score+=100; dong7.y=0; dong7.x =rand()%255; } PA_OutputText(UP_SCREEN, 0, 0, "score = %d",score); PA_WaitForVBL(); PA_DualSetSpriteXY(2,dong1.x,dong1.y); PA_WaitForVBL(); PA_DualSetSpriteXY(3,dong2.x,dong2.y); PA_WaitForVBL(); PA_DualSetSpriteXY(4,dong3.x,dong3.y); PA_WaitForVBL(); PA_DualSetSpriteXY(5,dong4.x,dong4.y); PA_WaitForVBL(); PA_DualSetSpriteXY(6,dong5.x,dong5.y); PA_WaitForVBL(); PA_DualSetSpriteXY(7,dong6.x,dong6.y); PA_WaitForVBL(); PA_DualSetSpriteXY(8,dong7.x,dong7.y); if(dong1.y>390 && (heroX+16)>dong1.x && heroX<(dong1.x+16)) break; if(dong2.y>390 && (heroX+16)>dong2.x && heroX<(dong2.x+16)) break; if(dong3.y>390 && (heroX+16)>dong3.x && heroX<(dong3.x+16)) break; if(dong4.y>390 && (heroX+16)>dong4.x && heroX<(dong4.x+16)) break; if(dong5.y>390 && (heroX+16)>dong5.x && heroX<(dong5.x+16)) break; if(dong6.y>390 && (heroX+16)>dong6.x && heroX<(dong6.x+16)) break; if(dong7.y>390 && (heroX+16)>dong7.x && heroX<(dong7.x+16)) break; } PA_WaitForVBL(); PA_EasyBgLoad(UP_SCREEN, BG2, gameoverUp); //����ȭ�� gameover PA_EasyBgLoad(DOWN_SCREEN, BG2, gameoverDown); //����ȭ�� gameover PA_DeleteSprite(DOWN_SCREEN, 0); //���� ������ PA_DualDeleteSprite(2); //�������� PA_DualDeleteSprite(3); //�������� PA_DualDeleteSprite(4); //�������� PA_DualDeleteSprite(5); //�������� PA_DualDeleteSprite(6); //�������� PA_DualDeleteSprite(7); //�������� PA_DualDeleteSprite(8); //�������� PA_InitText(UP_SCREEN, BG0); //�ؽ�Ʈ �ʱ�ȭ PA_SetTextTileCol(UP_SCREEN, 9); //�ؽ�Ʈ �� ������ ���� PA_OutputText(UP_SCREEN, 10, 13, "score = %d",score); ret_next(); //�Է´��� //--------�ʱ�ȭ if(score>=scoreRank1){ //1�� scoreRank3=scoreRank2; scoreRank2=scoreRank1; scoreRank1=score; } else if(score>=scoreRank2){//2�� scoreRank3=scoreRank2; scoreRank2=score; } else if(score>=scoreRank3){//3�� scoreRank3=score; } score=0; dong1.x=rand()%255; dong1.y=0; dong2.x=rand()%255; dong2.y=0; dong3.x=rand()%255; dong3.y=0; dong4.x=rand()%255; dong4.y=0; dong5.x=rand()%255; dong5.y=0; dong6.x=rand()%255; dong4.y=0; dong7.x=rand()%255; dong5.y=0; PA_InitText(UP_SCREEN, BG0); //�ؽ�Ʈ �ʱ�ȭ PA_WaitForVBL(); } else if(selnum == 2){ //��ũ ȭ�� PA_WaitForVBL(); PA_EasyBgLoad(UP_SCREEN, BG2, rankingUp); //����ȭ�� rankingUp PA_EasyBgLoad(DOWN_SCREEN, BG2, rankingDown); //����ȭ�� rankingDown PA_InitText(UP_SCREEN, BG0); //�ؽ�Ʈ �ʱ�ȭ PA_SetTextTileCol(UP_SCREEN, 9); //�ؽ�Ʈ �� ������ ���� PA_OutputText(UP_SCREEN, 10, 13, "Rank 1! = %d",scoreRank1); PA_OutputText(UP_SCREEN, 10, 15, "Rank 2! = %d",scoreRank2); PA_OutputText(UP_SCREEN, 10, 17, "Rank 3! = %d",scoreRank3); ret_next(); //�Է´��� PA_InitText(UP_SCREEN, BG0); //�ؽ�Ʈ �ʱ�ȭ goto GAMESTART; } else ; PA_WaitForVBL(); } return 0; }
void CheckBox::draw() { PA_SetSpriteAnim(mScreenNum, mSpriteNum, mFrame); }
void SpecialBox::draw() { PA_SetSpriteAnim(mScreenNum, mSpriteNum, mFrame); }
int main() { PA_Init(); // Initialisation de la PALib PA_InitVBL(); // Initialisation de l'affichage splash(); // Initialisation du texte, de la palette et du son PA_LoadDefaultText(0, 0); //bas PA_LoadDefaultText(1, 0); //haut PA_SetTextTileCol(1, TEXT_BLACK); // texte en noir (haut) PA_SetTextTileCol(0, TEXT_BLACK); // texte en noir (bas) PA_LoadSpritePal(0, 1, (void*)feu_Pal); // palette du feu PA_LoadSpritePal(0, 2, (void*)mario_Pal); //palette pour mario PA_LoadSpritePal(0, 3, (void*)boite_Pal); //palette pour la boite PA_LoadSpritePal(0, 4, (void*)piece_Pal); //palette pour la piece AS_Init(AS_MODE_16CH); //son AS_SetDefaultSettings(AS_PCM_8BIT, 8000, 0); //son (type,rate) AS_SoundDefaultPlay(fond_smgboss1, fond_smgboss1_size, 50, 64, true, 0); //musique de fond en boucle //Accueil accueil: fonduentree(); //fondu d'entrée PA_LoadBackground(0, 1, &jeu); PA_LoadBackground(1, 1, &titre); if(PA_UserInfo.Language == 2) { PA_OutputText(0, 3, 6, "Le but est d'appuyer"); PA_OutputText(0, 3, 7, "sur les boutons le"); PA_OutputText(0, 3, 8, "plus vite possible."); PA_OutputText(0, 3, 9, "Quand vous appuyez sur"); PA_OutputText(0, 3, 10, "un bouton, votre score"); PA_OutputText(0, 3, 11, "augmente de un."); PA_OutputText(0, 3, 16, "Appuyez sur un bouton"); PA_OutputText(0, 3, 17, "pour commencer !"); } else { PA_OutputText(0, 3, 6, "The aim is to press the"); PA_OutputText(0, 3, 7, "buttons as fast as you can."); PA_OutputText(0, 3, 8, "When a button is pressed,"); PA_OutputText(0, 3, 9, "it add 1 point to"); PA_OutputText(0, 3, 10, "your score."); PA_OutputText(0, 3, 16, "Press any button to start !"); } PA_WaitFor(Pad.Newpress.Anykey || Stylus.Newpress); //Variables u32 coups = 0; //A vos marques, pret, partez ! PA_ClearTextBg(0); //efface tout le texte du bas PA_VBLCounterStart(0); // compteur //A vos marques AS_SoundQuickPlay(un); PA_CreateSprite(0, 0, (void*)feu_Sprite, OBJ_SIZE_32X64, 1, 1, 200, 30); //feu, sprite 0 if(PA_UserInfo.Language == 2) { PA_OutputText(0, 3, 6, "A vos marques..."); } else { PA_OutputText(0, 3, 6, "Ready ?"); } PA_WaitFor(PA_VBLCounter[0]/60 == 2); //Pret AS_SoundQuickPlay(deux); PA_SetSpriteAnim(0, 0, 2); if(PA_UserInfo.Language == 2) { PA_OutputText(0, 3, 8, "Prêt ?"); } else { PA_OutputText(0, 3, 8, "Steady..."); } PA_WaitFor(PA_VBLCounter[0]/60 == 4); //Partez AS_SoundQuickPlay(trois); PA_SetSpriteAnim(0, 0, 1); if(PA_UserInfo.Language == 2) { PA_OutputText(0, 3, 10, "Partez !"); } else { PA_OutputText(0, 3, 10, "Go !"); } PA_WaitFor(PA_VBLCounter[0]/60 == 6); PA_ClearTextBg(0); //efface tout le texte du bas PA_DeleteSprite(0, 0); PA_CreateSprite(0, 1, (void*)mario_Sprite, OBJ_SIZE_32X32, 1, 2, 100, 100); //mario, sprite 1 avec palette 2 PA_CreateSprite(0, 2, (void*)boite_Sprite, OBJ_SIZE_16X16, 1, 3, 110, 84); //boite, sprite 2 avec palette 3 PA_CreateSprite(0, 3, (void*)piece_Sprite, OBJ_SIZE_8X16, 1, 4, 114, 68); //boite, sprite 2 avec palette 3 PA_VBLCounterStart(1); //compteur pour la partie à venir while(1) { PA_OutputText(0, 3, 7, "Score : %d", coups); if(PA_UserInfo.Language == 2) { PA_OutputText(0, 3, 6, "Partie en cours..."); PA_OutputText(0, 3, 8, "Temps : %d ", 20-(PA_VBLCounter[1]/60)); } else { PA_OutputText(0, 3, 6, "Game in progress..."); PA_OutputText(0, 3, 8, "Time : %d ", 20-(PA_VBLCounter[1]/60)); } //Incrémentation du score si la partie n'est pas fini if((Pad.Newpress.A || Pad.Newpress.B || Pad.Newpress.X || Pad.Newpress.Y || Pad.Newpress.L || Pad.Newpress.R || Stylus.Newpress || Pad.Newpress.Left || Pad.Newpress.Right || Pad.Newpress.Up || Pad.Newpress.Down) && PA_VBLCounter[1]/60 < 20) { PA_SetSpriteAnim(0, 1, 1); //fait sauter mario PA_SetSpriteAnim(0, 3, 1); //fait apparaitre une piece coups++; } //Lors du relachement des touches/stylet, les sprites reviennent a la normale if(Pad.Released.Anykey || Stylus.Released) { PA_SetSpriteAnim(0, 1, 0);//mario revient au sol PA_SetSpriteAnim(0, 3, 0); //et la piece disparait } //Fin de la partie if(PA_VBLCounter[1]/60 == 20) { //On efface le txt et les sprites PA_ClearTextBg(0); PA_DeleteSprite(0, 1); PA_DeleteSprite(0, 2); PA_DeleteSprite(0, 3); if(PA_UserInfo.Language == 2) { PA_OutputText(0, 3, 6, "Partie terminée !"); PA_OutputText(0, 3, 7, "Votre score : %d", coups); PA_OutputText(0, 3, 9, "Appuyez sur une touche"); PA_OutputText(0, 3, 10, "pour rejouer..."); } else { PA_OutputText(0, 3, 6, "End of the game !"); PA_OutputText(0, 3, 7, "Your score : %d", coups); PA_OutputText(0, 3, 9, "Press a button to"); PA_OutputText(0, 3, 10, "replay..."); } PA_WaitFor(PA_VBLCounter[1]/60 == 22); PA_WaitFor(Pad.Newpress.Anykey || Stylus.Newpress); goto accueil; } PA_CheckLid(); PA_WaitForVBL(); } return 0; }
/* 게임 */ void scr_Game() { /* 타이머 변수_초. */ int lastcount; // 이전 초. int currentcount; // 현재 초. u8 pressed = FALSE; PA_Init(); PA_InitVBL(); PA_LoadBackground(UP_SCREEN, BG3, &up); // 상단 디스플레이-타이틀화면 설정. PA_LoadBackground(DOWN_SCREEN, BG3, &down); // 하단 디스플레이-타이틀화면 설정. PA_InitText(UP_SCREEN, BG2); PA_SetTextTileCol(UP_SCREEN, TEXT_BLACK); /* 배경음악 플레이 */ if ( isplaying==FALSE ) { UnLoad_Sound(); AS_SoundDefaultPlay((u8*)bgm, (u32)bgm_size, 127, 64, TRUE, 0); isplaying = TRUE; } while (1) { int i; status = 0; lastcount = currentcount = 0; stageTime = 30; // 스테이지 제한시간 memoryTime = 10; scr_Stage(uinfo.userStage); PA_OutputText(UP_SCREEN, 10, 2, "Stage : %d", uinfo.userStage); PA_OutputText(UP_SCREEN, 10, 5, "Score : %d", uinfo.userScore); PA_OutputText(UP_SCREEN, 10, 7, "Time : %d", memoryTime); PA_LoadSpritePal(UP_SCREEN, BLOCKPAL, (void*) Block_Pal); // 블럭 정보 스프라이트 팔레트 PA_LoadSpritePal(DOWN_SCREEN, BLOCKPAL, (void*) Block_Pal); // 게임 블럭 스프라이트 팔레트 for( i = 0; i < 5; i++){ PA_CreateSprite(UP_SCREEN, i, (void*) Block_Sprite, OBJ_SIZE_32X32, 1, BLOCKPAL, (40*i)+32, 135); PA_SetSpriteAnim(UP_SCREEN, i, i); } view_block(); //블럭 보여줌 PA_VBLCountersReset(); // 카운터 초기화. PA_VBLCounterStart(0); // 카운터 시작. while (1) { // 보여주는 시간 /* 카운터 초기화 및 시작 */ currentcount = (PA_VBLCounter[0] / 60); if (lastcount != currentcount) { memoryTime -= (currentcount - lastcount); lastcount = currentcount; PA_ClearTextBg(UP_SCREEN); PA_OutputText(UP_SCREEN, 10, 2, "Stage : %d", uinfo.userStage); PA_OutputText(UP_SCREEN, 10, 5, "Score : %d", uinfo.userScore); PA_OutputText(UP_SCREEN, 10, 7, "Time : %d", memoryTime); } if(memoryTime == 0){ block_init(); // 블럭 초기화 break ; // 0이하가 되면 본게임으로 } PA_WaitForVBL(); } //vTaskResume(Touch_Task); PA_OutputText(UP_SCREEN, 10, 7, "Time : %d", stageTime); while (1) { //일단 잘못 누르면 게임 오버로 만들기. //버튼 인식 받고 그 정보로 메모리 성공, 실패, 게임중 선택 하는 함수 추가 /* 카운터 초기화 및 시작 */ currentcount = (PA_VBLCounter[0] / 60); if (lastcount != currentcount) { stageTime -= (currentcount - lastcount); lastcount = currentcount; PA_ClearTextBg(UP_SCREEN); PA_OutputText(UP_SCREEN, 10, 2, "Stage : %d", uinfo.userStage); PA_OutputText(UP_SCREEN, 10, 5, "Score : %d", uinfo.userScore); PA_OutputText(UP_SCREEN, 10, 7, "Time : %d", stageTime); } if (stageTime == 0 || status == 1) return; //게임 나가기 if (Stylus.Newpress) { for (i = 0; i < 16; i++) { if ((pressed == FALSE) && PA_SpriteTouched(i)) { status = block_reload(i); pressed = TRUE; } else if ((pressed == TRUE) && !PA_SpriteTouched(i)) { pressed = FALSE; } } } if(check_win()){ ++uinfo.userStage; break; } PA_WaitForVBL(); } vTaskSuspend(Touch_Task); } }
/* 게임 */ void scr_Game() { int lastcount; // 이전 초 int currentcount; // 현재 초 PA_Init(); PA_InitVBL(); AS_SoundDefaultPlay((u8*) bgm, (u32) bgm_size, 127, 64, TRUE, 0); while (1) { int i; lastcount = currentcount = 0; stageTime = 30; // 스테이지 제한시간 memoryTime = 10; UnLoad_Screen(); PA_LoadBackground(UP_SCREEN, BG3, &up); // 상단 디스플레이-타이틀화면 설정. PA_LoadBackground(DOWN_SCREEN, BG3, &down); // 하단 디스플레이-타이틀화면 설정. PA_InitText(UP_SCREEN, BG2); PA_SetTextTileCol(UP_SCREEN, TEXT_RED); userBlock_init(); scr_Stage(uinfo.userStage); Memory_info(); PA_LoadSpritePal(UP_SCREEN, BLOCKPAL, (void*) Block_Pal); // 블럭 정보 스프라이트 팔레트 PA_LoadSpritePal(DOWN_SCREEN, BLOCKPAL, (void*) Block_Pal); // 게임 블럭 스프라이트 팔레트 for (i = 0; i < 5; i++) { // 위 화면에 블럭의 변화를 보여주는 sprite 생성 PA_CreateSprite(UP_SCREEN, i, (void*) Block_Sprite, OBJ_SIZE_32X32, 1, BLOCKPAL, (40 * i) + 32, 135); PA_SetSpriteAnim(UP_SCREEN, i, i); } view_block(); PA_VBLCountersReset(); // 카운터 초기화. PA_VBLCounterStart(0); // 카운터 시작. while (1) { currentcount = (PA_VBLCounter[0] / 60); if (lastcount != currentcount) { // 메모리 타임 체크 memoryTime -= (currentcount - lastcount); lastcount = currentcount; Memory_info(); } if (memoryTime == 0) { // 0이하가 되면 본게임으로 AS_SoundDefaultPlay((u8*) blind, (u32) blind_size, 80, 64, FALSE,0); PA_DeleteSprite(DOWN_SCREEN, BLOCKPAL); block_init(); // 블럭 초기화 break; } if (NDS_SWITCH() == KEY_START) memoryTime = 0; PA_WaitForVBL(); } Gaming_info(); while (1) { currentcount = (PA_VBLCounter[0] / 60); if (lastcount != currentcount) { // 게임 시간 체크 stageTime -= (currentcount - lastcount); lastcount = currentcount; Gaming_info(); } if (stageTime <= 0) { //게임 나가기 UnLoad_Sound(); return; } if (Stylus.Newpress) { for (i = 0; i < BLOCKS_NUM; i++){ if (PA_SpriteTouched(i)) block_reload(i); } } if (check_clear()) { // 게임 진행 상태 체크 uinfo.userStage++; // 스테이지 업 AS_SoundDefaultPlay((u8*) stageup, (u32) stageup_size, 45, 64, FALSE,0); break; } PA_WaitForVBL(); } } }