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

📄 migong.cpp

📁 Turbo C++2.0下的迷宫程序,这是我的课程设计,里面有自己用乐谱演奏的音乐哦,音乐与游戏是并行的,可以一般听音乐
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include<iostream.h>
#include<conio.h>
#include<time.h>
#include<dos.h>
#include<math.h>
#include<string.h>
#include <STDLIB.H>
#include<graphics.h>
double jiping[25]={123.475/2,130.85/2,138.6/2,146.85/2,155.55/2,164.8/2,
		   174.6/2,185/2,196/2,207.65/2,220/2,233.1/2,246.95/2,
		   130.85,138.6,146.85,155.55,164.8,
		   174.6,185,196,207.65,220,233.1,246.95
		   };
/*class Cmouse
{
  public:
    Cmouse(){intnum=0x33;}
    ~Cmouse(){hidemouse();}
//    union REGS inreg,outreg;
//    int intnum=0x33;
    void showmouse(){inreg.x.ax=1;int86(intnum,&inreg,&outreg);}
    void hidemouse(){inreg.x.ax=2;int86(intnum,&inreg,&outreg);}
    void setmousex(int minx,int maxx){inreg.x.ax=7;int86x(intnum,&inreg,&outreg,&sr);inreg.x.cx=minx;inreg.x.dx=maxx;}
    void setmousey(int miny,int maxy){inreg.x.ax=8;int86x(intnum,&inreg,&outreg,&sr);inreg.x.cx=miny;inreg.x.dx=maxy;}
  private:
    union REGS inreg,outreg;
    struct SREGS sr;
    int intnum;
};*/
    /*void Cmouse::showmouse(){inreg.x.ax=1;int86(intnum,&inreg,&outreg);}
    void Cmouse::hidemouse(){inreg.x.ax=2;int86(intnum,&inreg,&outreg);}
    void Cmouse::setmousex(int minx,int maxx){inreg.x.ax=7;int86(intnum,&inreg,&outreg);inreg.x.cx=minx;inreg.x.dx=maxx;}
    void Cmouse::setmousey(int miny,int maxy){inreg.x.ax=8;int86(intnum,&inreg,&outreg);inreg.x.cx=miny;inreg.x.dx=maxy;}*/
class Cmusic
{
  public:
    Cmusic(){oldt=0;firsttime=1;i=-1;diao=1;o=4;s=5;t=3;stop=-1,close=0;nopause=1;fu=0;n=0;loopl=0;loopr==0;}
    float pow1(float x,float n);
    int pow1(int x,int n);
    int getstop(){return stop;}
    void change(){stop=-stop;firsttime=1;}
    void outnewsound();
    void addcode(char *s);
    void musicplay();
    void reward(){i=-1;}
    int musicend();
    int musicclose(){return close;}
    void closemusic(){close=1;}
    void openmusic(){close=0;}
  private:
     time_t nowt,oldt;
     int firsttime,i,code,diao,o,s,t,t1,stop,close,nopause,fu,n;
     int lasti,loopl,loopr;
     char *st;
};

int Cmusic::pow1(int x,int n)
{
    int temple=1;
    if(n==0){return 1;}
    else
    {
	for(int i=1;i<=n;i++)
	{
	    temple*=x;}
	return temple;
    }
}
float Cmusic::pow1(float x,float n)
{
    float temple=1;
    if(n==0){return 1;}
    else
    {
	for(int i=1;i<=n;i++)
	{
	    temple*=x;}
	return temple;
    }
}
void Cmusic::addcode(char *s)
{
    strcat(st,s);
}
int Cmusic::musicend()
{
    int y;
    if(i==strlen(st)){y=1;}
    else {y=0;}
    return y;
}
void Cmusic::outnewsound()
{
    int strlength=strlen(st),newcode=0;
    char ch;
    while(i<strlength)
    {
	if(newcode==1)break;
	i++;
	if(i>strlength-1){i=-1;break;}
	switch(st[i])
	{
	    case 'h':switch(st[++i])
		     {
			 case'c':diao=1;break;
			 case'd':diao=3;break;
			 case'e':diao=5;break;
			 case'f':diao=6;break;
			 case'g':diao=8;break;
			 case'a':diao=10;break;
			 case'b':diao=12;break;
		     }
		     switch(st[i+1])
		     {
			 case'#':diao+=1;i++;break;
			 case'@':diao-+1;i++;break;
		     }
		     continue;
	    case'o':ch=st[++i];
		    if((ch>48)&&(ch<55))
		    { o=ch-48;continue;}
		    else{continue;}
	    case's':ch=st[++i];
		    if((ch>48)&&(ch<58))
		    {s=ch-48;continue;}
	    case'>':o+=1;continue;
	    case'<':o-=1;continue;
	    case'/':lasti=i;loopl=1;continue;
	    case'|':if(loopr!=1)(i=lasti);loopl=0;if(loopr==1){loopr=0;}else{loopr=1;} continue;
	    default:ch=st[i];

		    if((ch>96)&&(ch<104)||ch=='p')
		    {
			switch(st[i])
			{
			    case 'c':code=1;break;
			    case 'd':code=3;break;
			    case 'e':code=5;break;
			    case 'f':code=6;break;
			    case 'g':code=8;break;
			    case 'a':code=10;break;
			    case 'b':code=12;break;
			    case 'p':nopause=0;break;
			}
			if((st[i+1]=='#')||(st[i+1]=='@'))
			{
			    i++;
			    if(st[i]=='#'){code+=1;}
			    else{code-=1;}
			}
			ch=st[i+1];
			if((ch>48)&&(ch<58))
			{
			    t=ch-48;
			    i++;
			}
			if(st[i+1]=='.'){fu=1;i++;}
			t1=pow(2,t-1)*pow(1.5,fu);
			sound(jiping[diao+code-1]*pow1(2,o-1)*nopause);
			fu=0;
			newcode=1;
			nopause=1;
			break;
		    }
	}
    }
}
void Cmusic::musicplay()
{
	if(stop!=1)
	{
	    nowt=clock();
	    if(firsttime==1)
	    {
		outnewsound();
		oldt=nowt;
		firsttime=0;
	    }
	    else
	    if(nowt-oldt==t1)
	    {
		nosound();outnewsound();
		oldt=nowt;
	    }
	}
}

//Cmouse mou;
const int mapi=17,mapj=66;
Cmusic music,music2;
int map[mapi][mapj]=
{
{5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5},
{5,03,1,1,1,0,0,0,0,0,1,0,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,1,1,5},  //2
{5,2,1,1,1,0,1,1,1,1,0,1,2,2,2,2,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,2,2,2,1,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,0,1,1,5},  //3
{5,2,2,2,2,2,1,2,2,2,2,2,2,1,1,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,2,1,2,1,0,1,0,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,5},  //4
{5,1,1,1,1,2,1,2,1,1,1,1,1,1,1,2,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,2,1,2,0,0,1,0,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,0,1,0,5},  //5
{5,2,2,2,2,2,1,2,2,2,1,1,1,2,2,2,1,1,0,1,1,0,1,2,2,2,2,2,2,2,2,1,0,1,2,1,2,1,1,1,0,1,1,1,2,2,2,2,0,0,0,1,0,0,0,1,2,0,0,1,0,0,1,0,0,5},  //6
{5,2,1,1,1,1,1,1,1,2,1,1,1,2,1,1,0,0,0,0,0,0,1,2,1,1,1,1,1,1,2,1,0,1,2,1,2,1,0,0,0,0,0,0,1,1,1,2,1,1,0,0,0,1,0,1,2,1,0,0,1,0,1,0,1,5},  //7
{5,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,1,1,1,1,1,0,1,2,1,1,1,1,1,1,2,1,0,1,2,1,2,1,1,1,0,1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,2,1,0,1,1,0,1,0,1,5},  //8
{5,1,0,1,1,0,1,1,1,1,2,2,2,1,1,2,0,0,0,0,0,0,1,2,0,0,0,0,0,1,2,1,0,1,2,1,2,1,1,1,0,1,1,1,1,1,1,2,1,0,0,0,0,0,0,1,2,1,0,0,0,0,1,0,1,5},  //9
{5,1,0,1,1,0,1,1,1,1,2,1,2,2,2,2,1,1,1,1,1,1,1,2,1,1,1,1,0,1,2,1,0,1,2,1,2,1,0,0,0,0,0,0,0,0,1,2,1,0,1,1,1,1,1,1,2,1,0,1,0,1,1,0,0,5},  //10
{5,0,0,0,0,0,0,0,0,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,1,2,1,0,1,2,1,2,1,1,1,0,1,1,1,1,1,1,2,1,0,0,0,0,0,0,1,2,1,0,1,0,0,0,0,1,5},  //11
{5,0,1,0,1,0,1,1,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,0,2,1,1,0,2,1,2,1,1,1,0,1,1,1,1,1,1,2,1,1,1,1,1,1,0,1,2,1,0,0,0,1,1,1,1,5},  //12
{5,0,1,0,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0,1,2,1,1,1,1,1,1,1,1,5},  //13
{5,0,1,0,1,0,1,1,1,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,0,1,1,1,1,2,2,2,2,2,2,2,2,2,5},  //14
{5,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,0,1,1,0,0,0,0,1,0,1,1,1,0,0,1,1,1,1,0,1,0,1,1,1,1,0,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,2,5},  //15
{5,0,0,0,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,1,1,0,1,0,0,0,0,0,0,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,04,2,2,2,2,2,2,2,5},  //16
{5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5}
};
class Cmigong
{
  public:
    Cmigong(){beginx=8;beginy=5;mancolor=2+128;manascii=1;selband=0;firstplay=1;firstbegin=1;win=0;band=1;level=1;button=0;z=-12;}
    void bkground(int bkcolor);
    void outputchar(int i,int j,int color,int ascii);
    void drawgold();  //{outputchar(goldi,goldj,14+128,5);}
    void drawman();  //{outputchar(mani,manj,mancolor,manascii);}
    void clrman() ;  //{outputchar(mani,manj,mancolor,32);}
    void moveleft(); //{clrman();manj--;drawman();}
    void moveright();//{clrman();manj++;drawman();}
    void moveup() ;  //{clrman();mani--;drawman();}
    void movedown(); //{clrman();mani++;drawman();}
    void moveto(int i,int j);//{clrman();mani=i;manj=j;drawman();}
    void drawmap();
    void gameplay();
    void automove();
    void showmainboard();
    void showselboard(int x,int y,int edge,int selboard);
    void showoption(int y,int i,int value1,int value2,int value3);
    void Cmigong::clrselboard(int x,int y);
    void outtext(int x,int y,int forecolor,int bkcolor,char *text);
    void changewindow();
  private:
    int beginx,beginy,mani,manj,lastmani,lastmanj,manfirsti,manfirstj,goldi,goldj,mancolor,manascii,policei,policej,selband,firstplay,firstbegin,bkcolor,win,band,level,button,z;
};
void Cmigong::bkground(int bkcolor1)            //set the color of the background
{
    textbackground(bkcolor1);
    textcolor(0);
    cprintf("1");
    clrscr();
    bkcolor=bkcolor1;
}
void Cmigong::outtext(int x,int y,int forecolor,int bkcolor,char *text)
{
    gotoxy(x,y+z);
    textcolor(forecolor);
    textbackground(bkcolor);
    cprintf(text);
}
void Cmigong::clrselboard(int x,int y)
{
    int i,j;                                                 //??????

    firstbegin=0;
    for(i=23;i<=55;i++)
    {outtext(i+x,16+y,4+1*(i%2)+128*(i%2),0," ");}
    for(i=23;i<=55;i++)
    {outtext(i+x,33+y,2+1*(i%5)+128*(i%2),0," ");}
    for(j=16;j<=33;j++)
    {outtext(23+x,j+y,2+1*(j%5)+128*(j%2),0," ");}
    for(j=16;j<=33;j++)
    {outtext(55+x,j+y,2+1*(j%5)+128*(j%2),0," ");}
    outtext(33+x,22+y,3,0,"            ");
    outtext(33+x,24+y,3,0,"            ");
    outtext(33+x,26+y,3,0,"            ");
    outtext(33+x,28+y,3,0,"            ");
}
void Cmigong::showoption(int y,int i,int close,int value2,int value3=1)
{

		    outtext(30,20+y,4,bkcolor,"MUSIC OPTION.");        //?
		    //if(value1==1)

		    outtext(32,21+y,4,bkcolor+i%2,"BackMusic. ");
		    if(close==1){outtext(43,21+y,4,bkcolor+i%2,"ON ");}
		    else{outtext(43,21+y,4,bkcolor+i%2,"OFF");}
		    outtext(32,22+y,4,bkcolor+!(i%2),"Loop.      ");
		    if(value2==1){outtext(43,22+y,4,bkcolor+!(i%2),"ON ");}
		    else{outtext(43,22+y,4,bkcolor+!(i%2),"OFF");}
		    outtext(30,23+y,4,bkcolor,"LEVEL.");
		    if(value3==1){outtext(43,23+y,4,bkcolor,"1.");}
		    else {outtext(47,23+y,4,bkcolor,"2.");}
}
void Cmigong::showselboard(int x,int y,int edge,int selband)
{
    int i,j;

    firstbegin=0;

    if(edge==1){
    for(j=1;j<=25;j++)
    {outtext(1,j-z,1,bkcolor,"*");delay(6*firstbegin);}
    for(i=1 ;i<80;i++)
    {outtext(i,25-z,1,bkcolor,"*");delay(4*firstbegin);}
    for(j=25;j>1;j--)
    {outtext(79,j-z,1,bkcolor,"*");delay(6*firstbegin);}
    for(i=79 ;i>0;i--)
    {outtext(i,1-z,1,bkcolor,"*");delay(4*firstbegin);}
	       }

    for(i=23;i<=55;i++)
    {outtext(i+x,16+y,4+1*(i%2)+edge*128*(i%2),0,"\005");}
    for(i=23;i<=55;i++)
    {outtext(i+x,33+y,2+1*(i%5)+edge*128*(i%2),0,"*");}
    for(j=16;j<=33;j++)
    {outtext(23+x,j+y,2+1*(j%5)+edge*128*(j%2),0,"\006");}
    for(j=16;j<=33;j++)
    {outtext(55+x,j+y,2+1*(j%5)+edge*128*(j%2),0,"\006");}
    outtext(33+x,22+y,3,0,"1.START NEW.");
    outtext(33+x,24+y,3,0,"2.CONTINUE. ");
    outtext(33+x,26+y,3,0,"3.OPTION.   ");
    outtext(33+x,28+y,3,0,"4.EXIT GAME.");
    switch(selband)
    {

⌨️ 快捷键说明

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