213 lines
4.5 KiB
C
213 lines
4.5 KiB
C
|
#include <stdio.h>
|
|||
|
#include <windows.h>
|
|||
|
#include <time.h>
|
|||
|
#include <stdlib.h>
|
|||
|
#include "PlayInterface.h"
|
|||
|
#include "fileHandler.h"
|
|||
|
|
|||
|
#define MAX_SONG_NUM 200
|
|||
|
|
|||
|
char dir[20] = {0};
|
|||
|
|
|||
|
// 0<><30>ֹͣ
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ
|
|||
|
int playing = 0;
|
|||
|
int songNum = 0;
|
|||
|
boolean isRndPlay = 0;
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
char songs[MAX_SONG_NUM][50] = {""};
|
|||
|
|
|||
|
void showstatus()
|
|||
|
{
|
|||
|
if(isRndPlay)
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>");
|
|||
|
else
|
|||
|
printf("˳<EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>");
|
|||
|
if (playing == 0)
|
|||
|
printf("<EFBFBD><EFBFBD>ǰΪֹͣ״̬\n");
|
|||
|
else if (playing > 0)
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD>ŵ<EFBFBD>%d<><64>:%s\n",playing,songs[playing]);
|
|||
|
else
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD>%d<><64>:%s\n",-playing,songs[-playing]);
|
|||
|
}
|
|||
|
|
|||
|
void playctrl(void){
|
|||
|
while(1){
|
|||
|
system("cls");
|
|||
|
showstatus();
|
|||
|
printf("1. <20><><EFBFBD><EFBFBD>/<2F><>ͣ\
|
|||
|
\n2. ֹͣ\
|
|||
|
\n3. <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>\
|
|||
|
\n4. <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>\
|
|||
|
\n5. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>/˳<EFBFBD><EFBFBD>\
|
|||
|
\n0. <EFBFBD>˳<EFBFBD>\
|
|||
|
\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:\n");
|
|||
|
switch (getch())
|
|||
|
{
|
|||
|
case '0':
|
|||
|
return;
|
|||
|
break;
|
|||
|
case '1':
|
|||
|
if(playing == 0) //ֹͣ״̬ʱ<CCAC><CAB1>1<EFBFBD><31><EFBFBD>ŵ<EFBFBD>1<EFBFBD><31>
|
|||
|
{
|
|||
|
playing = (1 + isRndPlay * rand())%songNum;
|
|||
|
if(playing == 0) playing = songNum;
|
|||
|
play(songs[playing]);
|
|||
|
}
|
|||
|
else if(playing > 0) //<2F><><EFBFBD><EFBFBD>״̬ʱ<CCAC><CAB1>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
playing = -playing;
|
|||
|
pause(songs[-playing]);
|
|||
|
}
|
|||
|
else //<2F><>ͣ״̬ʱ<CCAC><CAB1><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD>
|
|||
|
{
|
|||
|
playing = -playing;
|
|||
|
play(songs[playing]);
|
|||
|
}
|
|||
|
break;
|
|||
|
case '2':
|
|||
|
stop(songs[playing]);
|
|||
|
playing = 0;
|
|||
|
break;
|
|||
|
case '3':
|
|||
|
if(playing > 1 && playing <= songNum)
|
|||
|
{
|
|||
|
stop(songs[playing]);
|
|||
|
//playing--;
|
|||
|
playing = (playing - 1 + isRndPlay * rand()) % songNum;
|
|||
|
if(playing == 0) playing = songNum;
|
|||
|
play(songs[playing]);
|
|||
|
}
|
|||
|
else if(playing < -1 && playing >= -songNum)
|
|||
|
{
|
|||
|
stop(songs[-playing]);
|
|||
|
//playing = -playing - 1;
|
|||
|
playing = (-playing-1 +isRndPlay*rand())%songNum;
|
|||
|
if(playing == 0) playing = songNum;
|
|||
|
play(songs[playing]);
|
|||
|
}
|
|||
|
else if(abs(playing) == 1) //<2F><>1<EFBFBD><31><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
{
|
|||
|
stop(songs[1]);
|
|||
|
playing = (songNum + isRndPlay * rand())%songNum;
|
|||
|
if(playing == 0) playing = songNum;
|
|||
|
play((songs[playing]));
|
|||
|
}
|
|||
|
else
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա:)\n");
|
|||
|
Sleep(1000);
|
|||
|
while(kbhit()) getch(); //<2F><><EFBFBD><EFBFBD>sleep<65>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
break;
|
|||
|
case '4':
|
|||
|
if(playing >= 0 && playing < songNum)
|
|||
|
{
|
|||
|
stop(songs[playing]);
|
|||
|
//playing++;
|
|||
|
playing = (playing + 1 + isRndPlay * rand()) % songNum;
|
|||
|
if(playing == 0) playing = songNum;
|
|||
|
play(songs[playing]);
|
|||
|
}
|
|||
|
else if(playing < 0 && playing >= -songNum)
|
|||
|
{
|
|||
|
stop(songs[-playing]);
|
|||
|
//playing = -playing + 1;
|
|||
|
playing = (-playing + 1 +isRndPlay*rand())%songNum;
|
|||
|
if(playing == 0) playing = songNum;
|
|||
|
play(songs[playing]);
|
|||
|
}
|
|||
|
else if(abs(playing) == songNum) //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ϊ<EFBFBD><CEAA>1<EFBFBD><31>
|
|||
|
{
|
|||
|
stop(songs[abs(songNum)]);
|
|||
|
//playing = 1;
|
|||
|
playing = (1 + isRndPlay * rand())%songNum;
|
|||
|
if(playing == 0) playing = songNum;
|
|||
|
play((songs[playing]));
|
|||
|
}
|
|||
|
else
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա:)\n");
|
|||
|
Sleep(1000);
|
|||
|
while(kbhit()) getch(); //<2F><><EFBFBD><EFBFBD>sleep<65>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
break;
|
|||
|
case '5':
|
|||
|
isRndPlay = !isRndPlay;
|
|||
|
break;
|
|||
|
default:
|
|||
|
printf("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!\n");
|
|||
|
Sleep(1000);
|
|||
|
while(kbhit()) getch(); //<2F><><EFBFBD><EFBFBD>sleep<65>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
void volctrl(void){
|
|||
|
while(1){
|
|||
|
system("cls");
|
|||
|
showstatus();
|
|||
|
printf("1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\
|
|||
|
\n2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С\
|
|||
|
\n0. <EFBFBD>˳<EFBFBD>\
|
|||
|
\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>\n");
|
|||
|
switch(getch())
|
|||
|
{
|
|||
|
case '0':
|
|||
|
return;
|
|||
|
break;
|
|||
|
case '1':
|
|||
|
printf("vol_up called\n");
|
|||
|
Sleep(1000);
|
|||
|
break;
|
|||
|
case '2':
|
|||
|
printf("vol_down called\n");
|
|||
|
Sleep(1000);
|
|||
|
break;
|
|||
|
default:
|
|||
|
printf("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!\n");
|
|||
|
Sleep(1000);
|
|||
|
while(kbhit()) getch(); //<2F><><EFBFBD><EFBFBD>sleep<65>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
void killme(void){
|
|||
|
exit(0);
|
|||
|
}
|
|||
|
|
|||
|
int main(int argc, char **argv){
|
|||
|
srand((unsigned)time(NULL)); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
|
|||
|
while(songNum == 0)
|
|||
|
{
|
|||
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MP3ý<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>:\n");
|
|||
|
scanf("%s",&dir);
|
|||
|
songNum = getPlaylist(&dir);
|
|||
|
printf("path = %s,<2C><>%d<><EFBFBD>\n",&dir,songNum);
|
|||
|
}
|
|||
|
printf("<EFBFBD>밴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...\n");
|
|||
|
getch();
|
|||
|
while(1){
|
|||
|
system("cls");
|
|||
|
showstatus();
|
|||
|
printf("1. <20><><EFBFBD>ſ<EFBFBD><C5BF><EFBFBD>\
|
|||
|
\n2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\
|
|||
|
\n0. <EFBFBD>˳<EFBFBD>\
|
|||
|
\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>\n");
|
|||
|
switch (getch())
|
|||
|
{
|
|||
|
case '0':
|
|||
|
killme();
|
|||
|
case '1':
|
|||
|
playctrl();
|
|||
|
break;
|
|||
|
case '2':
|
|||
|
volctrl();
|
|||
|
break;
|
|||
|
default:
|
|||
|
printf("<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!\n");
|
|||
|
Sleep(1000);
|
|||
|
while(kbhit()) getch(); //<2F><><EFBFBD><EFBFBD>sleep<65>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|