WEB开发网
开发学院软件开发C++ 打字游戏 阅读

打字游戏

 2008-03-08 21:41:25 来源:WEB开发网   
核心提示:#define MAXCOUNT 100#define FALLSTEP 5#define SCREENW 60#define SCREENH 19#define USERNAME "hmz"#include <stdio.h>#include <stdlib.h>#incl
#define MAXCOUNT 100
#define FALLSTEP 5
#define SCREENW 60
#define SCREENH 19
#define USERNAME "hmz"
#include <stdio.h>
#include <stdlib.h>
#include <dos.h> #define FULLBLOCK 219
int Alphabit[26][5][5]={0,0,1,0,0,
             0,1,0,1,0,
             1,1,1,1,1,
             1,0,0,0,1,
             1,0,0,0,1,    /* A */              1,1,1,1,0,
             1,0,0,0,1,
             1,1,1,1,0,
             1,0,0,0,1,
             1,1,1,1,1,    /* B */              0,1,1,1,0,
             1,0,0,0,1,
             1,0,0,0,0,
             1,0,0,0,1,
             0,1,1,1,0,    /* C */              1,1,1,1,0,
             1,0,0,0,1,
             1,0,0,0,1,
             1,0,0,0,1,

             1,1,1,1,0,    /* D */              1,1,1,1,1,
             1,0,0,0,0,
             1,1,1,1,0,
             1,0,0,0,0,
             1,1,1,1,1,    /* E */              1,1,1,1,1,
             1,0,0,0,0,
             1,1,1,1,0,
             1,0,0,0,0,
             1,0,0,0,0,    /* F */              0,1,1,1,0,
             1,0,0,0,0,
             1,0,1,1,0,
             1,0,0,1,0,
             0,1,1,1,0,    /* G */              1,0,0,0,1,
             1,0,0,0,1,
             1,1,1,1,1,

             1,0,0,0,1,
             1,0,0,0,1,    /* H */              0,1,1,1,0,
             0,0,1,0,0,
             0,0,1,0,0,
             0,0,1,0,0,
             0,1,1,1,0,    /* I */              0,1,1,1,0,
             0,0,1,0,0,
             0,0,1,0,0,
             1,0,1,0,0,
             0,1,0,0,0,    /* J */              1,0,0,1,0,
             1,0,1,0,0,
             1,1,0,0,0,
             1,0,1,0,0,
             1,0,0,1,0,    /* K */              1,0,0,0,0,
             1,0,0,0,0,

             1,0,0,0,0,
             1,0,0,0,0,
             1,1,1,1,0,    /* L */              0,1,0,1,0,
             1,0,1,0,1,
             1,0,1,0,1,
             1,0,1,0,1,
             1,0,1,0,1,    /* M */              1,0,0,0,1,
             1,1,0,0,1,
             1,0,1,0,1,
             1,0,0,1,1,
             1,0,0,0,1,    /* N */              0,1,1,1,0,
             1,0,0,0,1,
             1,0,0,0,1,
             1,0,0,0,1,
             0,1,1,1,0,    /* O */              0,1,1,1,0,

             1,0,0,0,1,
             1,1,1,1,0,
             1,0,0,0,0,
             1,0,0,0,0,    /* P */              0,1,1,1,0,
             1,0,0,0,1,
             1,0,0,0,1,
             0,1,1,1,0,
             0,0,0,0,1,    /* Q */              0,1,1,1,0,
             1,0,0,0,1,
             1,1,1,1,0,
             1,0,1,0,0,
             1,0,0,1,0,    /* R */              0,0,1,1,0,
             0,1,0,0,1,
             0,0,1,0,0,
             0,1,0,1,0,
             0,0,1,1,0,    /* S */              1,1,1,1,1,

             0,0,1,0,0,
             0,0,1,0,0,
             0,0,1,0,0,
             0,0,1,0,0,    /* T */              1,0,0,0,1,
             1,0,0,0,1,
             1,0,0,0,1,
             1,0,0,0,1,
             0,1,1,1,0,    /* U */              1,0,0,0,1,
             1,0,0,0,1,
             1,0,0,0,1,
             0,1,0,1,0,
             0,0,1,0,0,    /* V */              1,0,0,0,1,
             1,0,0,0,1,
             1,0,1,0,1,
             0,1,0,1,1,
             1,0,0,0,1,    /* W */              1,0,0,0,1,

             0,1,0,1,0,
             0,0,1,0,0,
             0,1,0,1,0,
             1,0,0,0,1,    /* X */              1,0,0,0,1,
             0,1,0,1,0,
             0,0,1,0,0,
             0,0,1,0,0,
             0,0,1,0,0,    /* Y */              1,1,1,1,1,
             0,0,0,1,0,
             0,0,1,0,0,
             0,1,0,0,0,
             1,1,1,1,1,    /* Z */}; void RecoverArea(int x,int y,int width,int height,int ScreenColor[80][24])
{
     int i,j;
     for(i=x;i<x+width;i++)
     {
         for(j=y;j<y+height;j++)
         {
             gotoxy(i,j);
             textcolor(ScreenColor[i-1][j-1]);

             putch(FULLBLOCK);
         }
     }
}
void PRintFrame(int x,int y,int width,int height,char username[12],int score,int miss)
{
     int i;
     textcolor(1);
     gotoxy(x,y);
     putch(201);
     for(i=2;i<=width-1;i++)
     {
         putch(205);
     }
     putch(187);      for(i=2;i<=height-1;i++)
     {
         gotoxy(x+width-1,y+i-1);
         putch(186);
         gotoxy(x,y+i-1);
         putch(186);
     }
     gotoxy(x,y+height-1);
     putch(200);
     for(i=2;i<=width-1;i++)
     {
         putch(205);
     }
     putch(188);
     gotoxy(x+2,y+2);
     cprintf("Player:");
     gotoxy(x+2,y+3);
     cprintf("%s",username);
     gotoxy(x+2,y+5);
     cprintf("Score:%d",score);
     gotoxy(x+2,y+8);
     cprintf("Miss:%d",miss); }
void PrintValue(int x,int y,int score,int miss)
{
     gotoxy(x+2,y+6);
     printf("%3d",score);
     gotoxy(x+2,y+9);
     printf("%3d",miss);
} void PrintLine(int x,int y,int width,int height)
{
     int i;

     gotoxy(x,y);
     textcolor(11);
     putch(201);
     for(i=2;i<=width-1;i++)
         putch(205);
     putch(187);
     for(i=2;i<=height-1;i++)
     {
         gotoxy(x+width-1,y+i-1);
         putch(186);
         gotoxy(x,y+i-1);
         putch(186);
     }
     gotoxy(x,y+height-1);
     putch(200);
     for(i=2;i<=width-1;i++)
         putch(205);
     putch(188);
} void AlphabitColor(int index,int x,int y)
{
     int i,j,c;
     if(index<0 index>25 x<1 x>76 y<1 y>20)
         return;
     for(c=1;c<16;c++)
     {
         textcolor(c);
         for(i=0;i<5;i++)
         {
             for(j=0;j<5;j++)
          {
                     if(Alphabit[index][j][i])
           {
                         gotoxy(x+i,y+j);

                         putch(FULLBLOCK);
           }
                     if(Alphabit[index][j][i])
           {
                         gotoxy(x+i,y+j);
                  putch(32);
           }
          }
         }
         delay(8000);
     }
}
void AlphabitRotate(int index,int x,int y)
{
     int i,j,aa,bb,ScreenColor;
     if(index<0 index>25 x<1 x>76 y<1 y>20)
         return;
     RecoverArea(x,y,5,5,ScreenColor);
     for(i=0;i<5;i++)
         for(j=0;j<5;j++)
         {
             if(Alphabit[index][i][j])
          {
                 gotoxy(x+i,y+j);
                 putch(FULLBLOCK);

          }
         }
     delay(6000);
     RecoverArea(x,y,5,5,ScreenColor);
     for(i=0;i<5;i++)
         for(j=0;j<5;j++)
         {
             if(Alphabit[index][j][i])
          {
                 gotoxy(x+i,y+j);
                 putch(FULLBLOCK);
          }
         }
     delay(6000);
     RecoverArea(x,y,5,5,ScreenColor);
     for(i=0;i<5;i++)
         for(j=0;j<5;j++)
         {
             if(Alphabit[index][4-i][4-j])
          {
                 gotoxy(x+i,y+j);
                 putch(FULLBLOCK);
          }
         }
     delay(6000);
     RecoverArea(x,y,5,5,ScreenColor);
     for(i=0;i<5;i++)
         for(j=0;j<5;j++)

         {
             if(Alphabit[index][4-j][4-i])
          {
                 gotoxy(x+i,y+j);
                 putch(FULLBLOCK);
          }
         }
     delay(6000);
     RecoverArea(x,y,5,5,ScreenColor);
}
void ShowFace(int x,int y,int a)
{
     char s[3][9][15]={    "   _______   ",
                 "  /    \  ",
                 "    O  O    ",
                 "     .     ",
                 "    \___/    ",
                 "  \_______/  ",
                 "  ---------  ",
                 "    GOOD!    ",
                 "  ---------  ",

                 "   _______   ",
                 "  /    \  ",
                 "    o  o    ",
                 "     ^     ",
                 "    ---    ",
                 "  \_______/  ",
                 "  ---------  ",
                 "  HURRY!!   ",
                 "  ---------  ",
                 "   _______   ",
                 "  /    \  ",
                 "    _  _    ",
                 "     .     ",

                 "     /\    ",
                 "  \_______/  ",
                 "  ---------  ",
                 "    Oh no!   ",
                 "  ---------  ",    };
     int i,j;
     if(a<0 a>=3)
         return;
     textcolor(13);
     for(i=0;i<9;i++)
     {
         gotoxy(x,y+i);
         for(j=0;j<15;j++)
             putch(s[a][i][j]);
     }
}
void RandomBackground(int number,int ScreenColor[80][24])
{
     int i,j,k,c,x,y,g;
     int pic[5][5][8]={0,0,1,0,0,0,0,0,
              0,1,0,1,1,1,1,0,
              1,0,0,0,0,0,0,1,
              0,1,1,1,1,1,0,1,
              0,0,0,0,0,0,1,0,               0,0,1,1,0,0,0,0,

              0,1,0,0,1,1,1,0,
              1,0,0,0,0,0,0,1,
              0,1,1,1,1,1,1,0,
              0,0,0,0,0,0,0,0,    /* No 2:a small '+' */               0,0,0,0,0,0,0,0,
              0,1,1,1,1,1,1,0,
              1,0,0,0,0,0,0,1,
              0,1,0,1,0,1,1,0,
              0,0,1,0,1,0,0,0,  /* No 3 */               0,0,0,1,1,0,0,0,
              0,1,1,0,0,1,1,0,
              1,0,0,0,0,0,1,0,
              0,1,1,1,1,1,1,0,
              0,0,0,0,0,0,0,0,  /* No 4 */               0,0,0,0,0,1,0,0,
              0,1,1,1,1,0,1,0,
              1,0,0,0,0,0,0,1,

              0,1,1,1,1,0,1,0,
              0,0,0,0,0,1,0,0    /* No 5 */};
     for(i=1;i<80;i++)
         for(j=0;j<25;j++)
             ScreenColor[i][j]=0;
     for(i=0;i<number;i++)
     {
         x=rand()%55+1;
         y=rand()%18+1;
         c=rand()%15+1;
         g=rand()%5;
         textcolor(c);
         for(j=0;j<5;j++)
             for(k=0;k<8;k++)
                 if(pic[g][j][k]==1)
          {
                     gotoxy(k+x,j+y);
                     ScreenColor[k+x-1][j+y-1]=c;
                     putch(FULLBLOCK);
          }
     }
}
void PrintAlphabitFade(int index,int x,int y)
{  /* index 0-6 means alphabit a-f */

     int i,j,l;
     char c[7]={FULLBLOCK,'','-','\','/','.',' '};
     if(index<0 index>25 x<1 x>76 y<1 y>20)
         return;
     for(l=0;l<7;l++)
     {
         for(i=0;i<5;i++)
             for(j=0;j<5;j++)
          {
                 if(Alphabit[index][j][i])
          {
                     gotoxy(x+i,y+j);
                     putch(c[l]);
          }
          }
         delay(100000);
     }
}
void PrintAlphabit(int index,int x,int y,int p)
{  /* index 0-6 means alphabit a-f */
     int i,j;
     if(index<0 index>25 x<1 x>76 y<1 y>20)
         return;
     for(i=0;i<5;i++)
         for(j=0;j<5;j++)
             if(Alphabit[index][j][i])
          {
                 textcolor(p);

                 gotoxy(x+i,y+j);
                 putch(FULLBLOCK);
          }
}  
void ShowLose(int x,int y,int q)
{
     sound(622);
     delay(3000);
     nosound();
     gotoxy(x,y);
     putch(' ');
     ShowFace(65,14,2);
     AlphabitColor(q,x,y);
} void ShowWin(int x,int y,int q)
{
     sound(3000);
     delay(2000);
     nosound();
     sound(2400);
     delay(2000);
     nosound();
     gotoxy(x,y);
     putch(' ');
     PrintAlphabitFade(q,x,y);
     ShowFace(65,14,0);
} main()
{
     int x[MAXCOUNT],y[MAXCOUNT],c[MAXCOUNT],p[MAXCOUNT];
     char presskey;
     int count=0;
     int step=0,despeed=0;
     int i,j,t,a,score=0,miss=0;
     int ScreenColor[80][24];
     clrscr();
     RandomBackground(10,ScreenColor);
     PrintLine(1,1,80,24);
     randomize();
     while(1)
     {
         step++;
         PrintFrame(66,1,14,12,USERNAME,score,miss);
         PrintValue(66,1,score,miss);
         if(step==FALLSTEP)
         {

             step=0;
             if(count<MAXCOUNT)
          {
                 x[count]=rand()%SCREENW+1;
                 y[count]=2;
                 c[count]=rand()%26;
                 p[count]=rand()%15+1;
                 count++;
          }
         }
         for(i=0;i<count;i++)
             RecoverArea(x[i],y[i],5,5,ScreenColor);
         for(i=0;i<count;i++)
         {
             y[i]++;
             if(y[i]>SCREENH)
          {
                 ShowLose(x[i],y[i],c[i]);
                 for(j=i+1;j<count;j++)

          {
                     x[j-1]=x[j];
                     y[j-1]=y[j];
                     c[j-1]=c[j];
                  score-=5;
                  miss++;
          }
                 count--;
          i--;
          }
         }
         for(i=0;i<count;i++)
             PrintAlphabit (c[i],x[i],y[i],p[i]);
         for(t=0;t<100;t++)
         {
             if(bioskey(1))
          {
                 presskey=bioskey(0);
                 for(i=0;i<count;i++)

          {
                     if(presskey=='a'+c[i] presskey=='A'+c[i])
           {
                         ShowWin(x[i],y[i],c[i]);
                         for(j=i+1;j<count;j++)
           {
                      x[j-1]=x[j];
                      y[j-1]=y[j];
                      c[j-1]=c[j];
           }
                  score+=10;                   count--;
                         break;  /* exit i-loop */
           }

              else
           {
       &n

Tags:打字 游戏

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接