首页 > 学院 > 开发设计 > 正文

打字游戏

2019-11-17 05:00:08
字体:
来源:转载
供稿:网友
#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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表