⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 koulesapp.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 4 页
字号:
            koulesnrockets   = (int) ConfigBuffer[6];
            koulesgamemode   = (int) ConfigBuffer[7];
            koulesdifficulty = (int) ConfigBuffer[8];
            koulesssound     = (int) ConfigBuffer[9];
  }
        if (ConfigBuffer[0] >= 2 && fread(&ConfigBuffer[10], 1, 1, LocalHandle) == 1)
        {   kouleslevel      = (int) ConfigBuffer[10];
        }

        DISCARD fclose(LocalHandle);
        // LocalHandle = NULL;
   }  */
}

void Koules_save_rc(void)
{
    /*  FILE* LocalHandle;
      UBYTE ConfigBuffer[11];
      int   i;

      ConfigBuffer[ 0] = 2; // 2 means R1.01
      for (i = 0; i <= 4; i++)
      {   ConfigBuffer[i + 1] = (UBYTE) koulescontroller[i];
      }
      ConfigBuffer[ 6] = (UBYTE) koulesnrockets;
      ConfigBuffer[ 7] = (UBYTE) koulesgamemode;
      ConfigBuffer[ 8] = (UBYTE) koulesdifficulty;
      ConfigBuffer[ 9] = (UBYTE) koulesssound;
      ConfigBuffer[10] = (UBYTE) kouleslastlevel;

      if ((LocalHandle = fopen("KOULES.CFG", "wb")))
      {   DISCARD fwrite(ConfigBuffer, 11, 1, LocalHandle);
          DISCARD fclose(LocalHandle);
          // LocalHandle = NULL;
    }   */}

void Koulescleanexit(int rc)
{   //int i;
    int i;
    if (rc == 0)
    {
        Koules_save_rc();
    }

    Koulesstop_sounds();



//   for (i = 0; i < CHANNELS; i++)
//    {   if (WaveOpened[i])
//        {   DISCARD waveOutClose(hWave[i]);
//            WaveOpened[i] = FALSE;
//   }   }

//    if (WindowPtr)
// { DestroyWindow(WindowPtr);
//  // WindowPtr = NULL;
// }

    /* if (AmiganBitmap)
    {   DeleteObject(AmiganBitmap);
        // AmiganBitmap = NULL;
       } */
    // WinStopTimer(KoulesTimerID);
    koulesinloop = FALSE;
// RkosDelayMs(200);
    //  free(koulesdisplay);
// RKWindowDestroyEx(pkouleswin,0,NULL);
    // exit(rc);
}

void Koules_statusarea(void)
{
    char s[100];

    if (koulesgameplan == COOPERATIVE && koulesgamemode == KOULESMODEGAME)
    {
        sprintf(s, "Level: %3i", kouleslastlevel + 1);
        KoulesDrawShadowText((KOULESMAPWIDTH / 2 - 18 * 4) / 2 - strlen(s) * 4, KOULESMAPHEIGHT + 10, s);
    }
    sprintf(s, " Lives: %6i%6i",//%6i%6i%6i",
            koulesnrockets >= 1 ? koulesobject[0].live1 : 0,
            koulesnrockets >= 2 ? koulesobject[1].live1 : 0
            //koulesnrockets >= 3 ? koulesobject[2].live1 : 0,
            // koulesnrockets >= 4 ? koulesobject[3].live1 : 0,
            // koulesnrockets >= 5 ? koulesobject[4].live1 : 0
           );
    KoulesDrawShadowText(KOULESMAPWIDTH / 2 - strlen(s) * 2, KOULESMAPHEIGHT +  5, s);
    sprintf(s, "Scores: %6i%6i",//%6i%6i%6i",
            koulesobject[0].score,
            koulesobject[1].score
            //  koulesobject[2].score,
            // koulesobject[3].score,
            // koulesobject[4].score
           );
    KoulesDrawShadowText(KOULESMAPWIDTH / 2 - strlen(s) * 2, KOULESMAPHEIGHT + 15, s);
}
//
//MODULE ULONG getsize(STRPTR filename)
//{   HANDLE hFile /* = NULL */ ;
//    ULONG  size;
//
//    hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
//    if (hFile == INVALID_HANDLE_VALUE)
//    {   return(0);
//    }
//    size = GetFileSize(hFile, NULL);
//    CloseHandle(hFile);
//    // hFile = NULL;
//
//    if (size == (ULONG) -1)
//    {   return(0);
//    }
//
//    return(size);
//}

MODULE void Koules_load_sounds(void)
{
// FILE*        LocalHandle;
//    int          i;
//    WAVEFORMATEX l_WaveFormatEx;
//
//    for (i = 0; i < SOUNDS; i++)
//    {   if (filelength[i] = getsize(filename[i]))
//        {   if ((LocalHandle = fopen(filename[i], "rb")))
//            {   SoundBuffer[i] = malloc(filelength[i]); // should really check return code
//                DISCARD fread(SoundBuffer[i], filelength[i], 1, LocalHandle); // should really check return code
//                DISCARD fclose(LocalHandle);
//                // LocalHandle = NULL;
//    }   }   }
//
//    for (i = 0; i < CHANNELS; i++)
//    {   l_WaveFormatEx.wFormatTag      = WAVE_FORMAT_PCM;
//        l_WaveFormatEx.nChannels       = 1;
//        l_WaveFormatEx.nSamplesPerSec  = 11025;
//        l_WaveFormatEx.wBitsPerSample  = 8;
//        l_WaveFormatEx.nAvgBytesPerSec = 11025;
//        l_WaveFormatEx.nBlockAlign     = 1;
//     // l_WaveFormatEx.cbSize          = 0; ignored
//        memset(&hWave[i], 0, sizeof(HWAVEOUT));
//        DISCARD waveOutOpen
//        (   &hWave[i],
//            WAVE_MAPPER,
//            &l_WaveFormatEx,
//            0,
//            0,
//            CALLBACK_NULL
//        );
//        WaveOpened[i] = TRUE;
//}
}
void Koulesplay_sound(int which)
{
//  PERSIST int channel = CHANNELS - 1;
//
//    if (koulesssound)
//    {   if (channel == CHANNELS - 1)
//        {   channel = 0;
//        } else
//        {   channel++;
//        }
//
//        if (WavePrepared[channel])
//        {   DISCARD waveOutReset(hWave[channel]);
//            DISCARD waveOutUnprepareHeader(hWave[channel], &WaveHdr[channel], sizeof(WAVEHDR));
//            WavePrepared[channel] = FALSE;
//        }
//        WaveHdr[channel].lpData          = SoundBuffer[which];
//        WaveHdr[channel].dwBufferLength  = filelength[which];
//        WaveHdr[channel].dwBytesRecorded = 0;
//        WaveHdr[channel].dwUser          = 0;
//        WaveHdr[channel].dwFlags         = 0;
//        WaveHdr[channel].dwLoops         = 1;
//        WaveHdr[channel].lpNext          = NULL;
//        WaveHdr[channel].reserved        = (unsigned long) NULL;
//        DISCARD waveOutPrepareHeader(hWave[channel], &WaveHdr[channel], sizeof(WAVEHDR));
//        WavePrepared[channel] = TRUE;
//
//        WaveHdr[channel].dwFlags         |= WHDR_BEGINLOOP | WHDR_ENDLOOP;
//        DISCARD waveOutWrite(hWave[channel], &WaveHdr[channel], sizeof(WAVEHDR));
//}
#ifdef __arm
    if (kouleslastsndh != NULL)
    {
        RKFSFileClose(kouleslastsndh);
        kouleslastsndh = NULL;
    }
    if (which < SOUNDS && koulesssound)
    {
        kouleslastsndh = (MY_FILE*)RKFSFileOpen(koules_sndfilename[which], "rb");
        CurrentCodec = 3;//wav type
        RockOSSendMsg(MBAUDIO, AS_AUAU_DecInit, (void*)kouleslastsndh);
        // RockOSSendMsg(MBAUDIO,AS_AUAU_DecStart,NULL);

    }
#endif
}

EXPORT void Koulesstop_sounds(void)
{
    // int i;
//
//    for (i = 0; i < CHANNELS; i++)
//    {   if (WavePrepared[i])
//        {   DISCARD waveOutReset(hWave[i]);
//            DISCARD waveOutUnprepareHeader(hWave[i], &WaveHdr[i], sizeof(WAVEHDR));
//            WavePrepared[i] = FALSE;
//}   }
#ifdef __arm
    RockOSSendMsg(MBAUDIO, AS_GUAU_Stop, (void*)1);
    if (kouleslastsndh != NULL)
    {
        RKFSFileClose(kouleslastsndh);
        kouleslastsndh = NULL;
    }
#endif

}

//UINT32 SnakeOnCreat( WINDOW* win , WMPARAM wParam, WLPARAM lParam )
//{
// SnakeGameInit();
// m_nTimerID=WinStartTimer(win,TIMERDELAY);
//}


UINT32 KoulesWindowKeyProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)

{
    UINT16  keyPress = (UINT16)((wParam) >> 16);
    UINT16  KEY_EV = (UINT16)(wParam);


    switch (KEY_EV)
    {
        case KE_DN_PRESS:
        case KE_DN_LONGP:
            koules_key_down = 1;
            break;
        case KE_DN_RELEASE:
        case KE_DN_LONG_RELEASE:
            koules_key_down = 0;
            break;
        case KE_PREV_PRESS://left
        case KE_PREV_LONGP:
            koules_key_left = 1;

            break;
        case KE_PREV_RELEASE:
        case KE_PREV_LONG_RELEASE:
            koules_key_left = 0;
            break;
        case KE_UP_PRESS:
        case KE_UP_LONGP:
            koules_key_up = 1;
            break;
        case KE_UP_RELEASE:
        case KE_UP_LONG_RELEASE:
            koules_key_up = 0;
            break;
        case KE_NEXT_PRESS: //right
        case KE_NEXT_LONGP:
            koules_key_right = 1;
            break;
        case KE_NEXT_RELEASE:
        case KE_NEXT_LONG_RELEASE:
            koules_key_right = 0;
            break;
        case KE_PLAY_PRESS://
            koules_key_enter = 1;
            break;
        case KE_PLAY_RELEASE:
            koules_key_enter = 0;
            break;
        case KE_SHIFT_PRESS://
            koules_key_help = 1;
            break;
        case KE_SHIFT_RELEASE:
            koules_key_help = 0;
            break;
        case KE_MENU_PRESS://

            break;
        case KE_MENU_RELEASE:
            // koules_key_pause=0;
            if (koulesgamemode != KOULESMODEMENU)
                koules_key_pause = !koules_key_pause;
            break;
        case KE_RETURN_PRESS:
            {
                koules_key_esc = 1;

            }
            break;
        case KE_RETURN_RELEASE:
            {

                koules_key_esc = 0;
                //oulesinloop=FALSE;
            }
            break;
        case KE_EXIT_PRESS:
        case KE_EXIT_RELEASE:

            break;
        case KE_LONGP_RELEASE:
            break;

    }
// TR("KEY:%d:%d:%d:%d:%d",pp,koules_key_left,koules_key_right,koules_key_up,koules_key_down);
    return TRUE;
}
extern WINDOW* pAudioWin;
UINT32 GameStartKoules(WINDOW* win ,  char * filePath , void* param)
{
    win = WindowCreate(win ,
                       WS_FULLSCREEN,
                       WID_KoulesMain,
                       0, 0, LCD_W, LCD_H,
                       0,
                       BID_RKoff24,
                       0,
                       0,
                       KoulesProcMap,
                       NULL);
    pkouleswin = win;
    koulesdisplay = NULL;
    koules_key_esc = 0;
    KoulesInit();
    Koulesinit_menu();
    RockCreateThread(ProcGetProcGuid(GUID_EXE_GAMEENTRY), KoulesGameCycle, TPRI_LOW);
	if(pAudioWin)
		WindowDestroy(pAudioWin);
    //音频不播放时也要设置重复模式
	#if defined(BOARD)
    AudioSetRepeatModeOnce(1);//设置音频的重复模式为只播放一次
    RockCreateThread(ProcGetProcGuid(GUID_EXE_GAMEENTRY), AudioHighTaskMsgCallBack, TPRI_HIGH);
	#endif
    RockOSSendMsg((ROCK_MSG_BOX*)MBVIDEO, (ROCK_MSG_ID)AS_GUVI_KOULESGAME_START, NULL);
    return 0;
}
UINT32 KoulesCloseWin(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    RKfree(koulesdisplay);
#if defined(BOARD)
    if (TRUE == AudioPlaying())
    {
        RockOSSendMsg(MBAUDIO, AS_GUAU_Stop, (void*)1);
    }
    AudioSetRepeatModeOnce(0);//恢复音频原来的重复模式
#endif

    koulesdisplay = NULL;

    RKWindowDestroyEx(pkouleswin, 0, NULL);
    pkouleswin = NULL;
    return TRUE;
}
UINT32 KoulesOnDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
    if (pkouleswin != NULL)
    {
        Koulescleanexit(1);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -