mp3-player/main.c

213 lines
4.5 KiB
C
Raw Permalink Normal View History

#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;
}