您当前的位置:首页 > 文章摘抄 > 正文

c语言小游戏代码大全(c语言猜数字游戏源代码)

本文目录

  • c语言猜数字游戏源代码
  • 关于用C语言编写的小游戏的游戏代码,如黑白棋贪吃蛇等
  • c语言游戏编程,下落的小鸟 求代码

c语言猜数字游戏源代码

小游戏2048:

#include《stdio.h》

#include《stdlib.h》

#include《conio.h》

#include《time.h》

#include《windows.h》

int  jsk( );   //计算空格数

void rsgm( );  //重置游戏

void inkey( );  //按键输入

void left( );   //向左移动

void right( );  //向右移动

void up( );  //向上移动

void down( );  //向下移动

void show( );   //输出界面

void adnum( ); //添加随机数

void yes( );   //游戏是否结束(1是0否)

void gtxy(int x, int y); //控制光标位置的函数

int a;   //存储16个格子中的数字

int score = 0;  //每局得分

int best = 0;  //最高得分

int ifnum;  //是否需要添加数字(1是0否)

int over;   //游戏结束标志(1是0否)

int i,j,k;

int main( )

{ rsgm( );  //重置游戏

  inkey( );  //按键输入

  return 0;

}

void Color(int a)   //设定字符颜色的函数(a应为1-15)

{  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);  }  

void rsgm( )   //重置游戏

{ score = 0; ifnum = 1; over = 0; srand((unsigned)time(0));  //启动随机数发生器

  int n = rand( ) % 16;   //随机函数产生0-15的数字

  for (i = 0; i 《 4; i++)

  {for (j = 0; j 《 4; j++)

     { if (n == 0) { int k = rand( ) % 3; if (k == 0 || k == 1) { a[i][j] = 2; }

                          else { a[i][j] = 4; } n--; }

       else { a[i][j] = 0; n--; }

     }

   }

 adnum( );

 system(“cls“);

 CONSOLE_CURSOR_INFO gb={1,0};  //以下两行是隐藏光标的设置,gb代指光标

 SetConsoleCursorInfo( GetStdHandle(STD_OUTPUT_HANDLE), &gb );

 Color(14);   //设置字体淡黄色

 printf(“\n\n\t\t  2048小游戏“); Color(7);   //恢复白字黑底

 printf(“\n\t┌──────┬──────┬──────┬──────┐“);

 printf(“\n\t│      │      │      │      │“);

 printf(“\n\t├──────┼──────┼──────┼──────┤“);

 printf(“\n\t│      │      │      │      │“);

 printf(“\n\t├──────┼──────┼──────┼──────┤“);

 printf(“\n\t│      │      │      │      │“);

 printf(“\n\t├──────┼──────┼──────┼──────┤“);

 printf(“\n\t│      │      │      │      │“);

 printf(“\n\t└──────┴──────┴──────┴──────┘“);

 show( );

}

void show( )   //输出界面

{ for(i=0;i《4;i++)

   for(j=0;j《4;j++)

     { gtxy(7*j+9,2*i+4);   //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字

       if(a[i][j]==0){printf(“      “); Color(7); printf(“│“);}

       else if(a[i][j]《10){ if (a[i][j] == 2) { Color(14); }

                                  else if (a[i][j] == 4) { Color(13); }

                                  else if (a[i][j] == 8) { Color(12); }

                                  printf(“   %d  “, a[i][j]); Color(7 ); printf(“│“);

                                }

      else if (a[i][j] 《 100){if (a[i][j] == 16) { Color(12); }

                                     else if (a[i][j] == 32) { Color(10); }

                                     else if (a[i][j] == 64) { Color(2 ); }

                                     printf(“  %d  “, a[i][j]); Color(7); printf(“│“);

                                   }

     else if (a[i][j] 《 1000) {if (a[i][j] == 128) { Color(9); }

                                         else if (a[i][j] == 256) { Color(1); }

                                         else if (a[i][j] == 512) { Color(13); }

                                         printf(“  %d “, a[i][j]); Color(7); printf(“│“);

                                       }

      else if (a[i][j] 《 10000) {if (a[i][j] == 1024) { Color(5); }

                                           else { Color(15); }

                                           printf(“ %d “, a[i][j]); Color(7); printf(“│“);

                                         }

   }

 if (jsk( ) == 0)

    {  yes( );  if (over) { gtxy(9,12); Color(10);

                                  printf(“\n\n  游戏结束!是否继续? [ Y/N ]:“); }

    }

}

void inkey( )   //按键输入

{ int key;

  while (1)

      { key = getch( );

        if (over) { if (key == 89|| key == 121) { rsgm( ); continue; }

                        else  if (key == 78|| key == 110) { return; }

                        else  continue; }

        ifnum = 0;

       if(key==224)key=getch( );

          switch (key)

              { case 75: left( ); break;

                case 77: right( ); break;

                case 72: up( ); break;

                case 80: down( );break;

              }

         if (score 》 best) { best = score; }

         if (ifnum) { adnum( ); show( ); }

       }

}

int jsk( )   //计算空格数

{ int n = 0;

  for (i = 0; i 《 4; i++)

     { for (j = 0; j 《 4; j++) { if ( a[i][j] == 0) {n++;}  }   }

  return n;

}

void left( )   //向左移动

{ for (i = 0; i 《 4; i++)

   {for (j = 1, k = 0; j 《 4; j++)

      { if (a[i][j] 》 0)

         { if ( a[i][k] == a[i][j])

               { a[i][k] *= 2;  k++;

                  score = score + 2 * a[i][j];

                  a[i][j] = 0;  ifnum = 1; }

            else if ( a[i][k] == 0) { a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }

            else { a[i][k + 1] = a[i][j]; if ((k + 1) != j) { a[i][j] = 0; ifnum = 1; }

            k++; }

         }

       }

   }

}

void right( )   //向右移动

{for (i = 0; i 《 4; i++)

    {for (j = 2, k = 3; j 》= 0; j--)

       {if (a[i][j] 》 0)

          { if (a[i][k] == a[i][j])

                 {a[i][k] *= 2; k--; score = score + 2 * a[i][j]; a[i][j] = 0; ifnum = 1; }

           else if ( a[i][k] == 0) {a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }

           else { a[i][k - 1] = a[i][j]; if ((k - 1) != j) { a[i][j] = 0; ifnum = 1; } k--; }

          }

       }

  }

}

void up( )   //向上移动

{for (i = 0; i 《 4; i++)

   {for (j = 1, k = 0; j 《 4; j++)

       {if (a[j][i] 》 0)

           {if ( a[k][i] == a[j][i]) { a[k][i] *= 2; k++;score = score + 2 * a[j][i];

                                             a[j][i] = 0; ifnum = 1; }

            else if ( a[k][i] == 0) { a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }

            else { a[k + 1][i] = a[j][i]; if ((k + 1) != j) { a[j][i] = 0; ifnum = 1; }

            k++; }

          }

      }

   }

}

void down( )   //向下移动

{ for (i = 0; i 《 4; i++)

  {for (j = 2, k = 3; j 》= 0; j--)

    {if (a[j][i] 》 0)

       {if (a[k][i] == a[j][i])

            {a[k][i] *= 2; k--;score = score + 2 * a[j][i]; a[j][i] = 0; ifnum = 1; }

         else if (a[k][i] == 0) {a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }

         else {a[k - 1][i] = a[j][i];

                  if ((k - 1) != j) {a[j][i] = 0; ifnum = 1; } k--; }

        }

     }

  }

}

void adnum( )   //添加随机数

{ srand(time(0)); int n = rand( ) % jsk( );

  for (int i = 0; i 《 4; i++)

     {for (int j = 0; j 《 4; j++)

        { if (a[i][j] == 0) {if (n != 0) { n--; }

          else {int k = rand( ) % 3;

                  if (k == 0 || k == 1) {a[i][j] = 2; return; }

                  else {a[i][j] = 4; return; } }

        }

     }

  }

}

void yes( )   //游戏是否结束

{ for (int i = 0; i 《 4; i++)

   {for (int j = 0; j 《 3; j++)

       {if (a[i][j] == a[i][j + 1] || a[j][i] == a[j + 1][i]) {over = 0; return; }}

   }

 over = 1;

}

void gtxy(int x, int y)   //控制光标位置的函数

{ COORD zb;   //zb代指坐标

  zb.X = x;

  zb.Y = y;

  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), zb);

}

关于用C语言编写的小游戏的游戏代码,如黑白棋贪吃蛇等

我这儿有c语言的自写俄罗斯方块,请指教:#include #include #include #include #include #include #include #define ESC 0x011b#define UP 0x4800#define DOWN 0x5000#define LEFT 0x4b00#define RIGHT 0x4d00#define SPACE 0x3920#define Y 0x1579#define N 0x316e#define clearkbd(); while(bioskey(1)) bioskey(0); /*清空键盘缓冲队列*/void update();void messagebox();void process();void initremove();void initinfo();void initbox();void initposition();void next_shape();typedef struct shape /*形状单一状态的记录*/{ int attr;int co;}shape;typedef struct RE_AB /*相对,绝对坐标记录*/{ int Rx,Ry;int x1,x2,y1,y2;}RE_AB;RE_AB RA;shape p={ { RED,0,1,1,0,1,1,2,1 }, /*数组中保证y最大的在最后,以便initposition使用*/{ RED,0,1,1,0,1,1,1,2 },{ RED,0,0,1,0,2,0,1,1 },{ RED,0,0,0,1,1,1,0,2 },{ GREEN,0,0,1,0,2,0,3,0 },{ GREEN,0,0,0,1,0,2,0,3 },{ CYAN,0,0,0,1,1,0,1,1 },{ BROWN,0,0,1,0,1,1,2,1 },{ BROWN,1,0,0,1,1,1,0,2 },{ BLUE,1,0,2,0,1,1,0,1 },{ BLUE,0,0,0,1,1,1,1,2 },{ MAGENTA,0,0,0,1,0,2,1,2 },{ MAGENTA,2,0,0,1,1,1,2,1},{ MAGENTA,0,0,1,0,1,1,1,2 },{ MAGENTA,0,0,0,1,1,0,2,0 },{ YELLOW,0,2,1,0,1,1,1,2 },{ YELLOW,0,0,1,0,2,0,2,1 },{ YELLOW,1,0,0,0,0,1,0,2},{ YELLOW,0,0,0,1,1,1,2,1 },};int nback,nleft,nright,r_f,rs1,rs2,xcors,xcorb,ycors,ycorb; /*检查方快有没有左,右,下接触,游戏区内所有格子有无颜色记录数组,rs1形状记录,rs2为提示框用,记录小格子在游戏区中的位置,按键存储*/void interrupt (*oldint)(); /*系统定时中断*/int count_down=0,count_other=0; /*中断记时*/void interrupt newint() /*设置新的中断程序*/{ count_down++;count_other++;oldint();}void intenable() /*设置中断向量表,启动新的中断程序*/{ oldint=getvect(0x1c);disable();setvect(0x1c,newint);enable();}void intrestore() /*恢复中断向量*/{ disable();setvect(0x1c,oldint);enable();}void HZ12(int x0,int y0,int w,int color,char *s) /*根据字模,在dos下显示汉字*//*横坐标,纵坐标,字间隔,汉字颜色,汉字字符串*/{ FILE *fp;register char buffer;register char str;unsigned long fpos;/*fpos为最终偏移动量*/register int i,j,k;fp=fopen(hzk12,r);/*打开12*12汉字苦*/while(*s)/*一直到字符串结束为止*/{if(*s《0)/*汉字输出*/{ str=(*s)-0xa0;str=*(s+1)-0xa0;fpos=((str-1)*94+(str-1))*24L;/*计算汉字在hzk12的偏移量*/fseek(fp,fpos,SEEK_SET);/*指针移动到当前位置*/fread(buffer,24,1,fp);/*读取一个汉字到数组中*/for(i=0;i《12;i++)/*12行*/for(j=0;j《2;j++)/*两个字节*/for(k=0;k《8;k++)/*8位*/if (((buffer[i*2+j]》》(7-k))&0x1)!=NULL)/*是一就画点*/putpixel(x0+8*j+k,y0+i,color);s+=2;/*一个汉字占两个字节,现在将指针移动两个字节*/x0+=w;/*显示坐标也按照间隔移动*/}else/*显示非汉字字符*/{ settextstyle(0,0,1);setcolor(color);str=*s;str=0;outtextxy(x0,y0+3,str);/*显示单个字符*/x0+=w-7;/*显示单个字符后的x坐标变化*/s++;/*指针移动到下一个字节*/}}fclose(fp);}void translation() /*把相对坐标解释为绝对坐标*/{ if(RA.Rx==1){ RA.x1=1; RA.x2=16; }else{ RA.x1=16*(RA.Rx-1); RA.x2=16*RA.Rx; }if(RA.Ry==1){ RA.y1=1; RA.y2=16; }else{ RA.y1=16*(RA.Ry-1); RA.y2=16*RA.Ry; }}int check_b() /*检查是否到达低部*/{ int x,y,i,zf=0; /*zf为是否有颜色填充记录*/for(i=0;i《7;i++,i++){ x=RA.Rx+p[rs1].co[i];y=RA.Ry+p[rs1].co[i+1];if(y》=6)zf+=r_f[x-15][y-6+1];}if(zf==0)return 1;elsereturn 0;}int finish(){ int tfull=0,i; /*判断顶层空间是否有填充*/ for(i=1;i《11;i++)tfull+=r_f[i];if(tfull!=0)return 1; /*告诉judge()可以结束了*/}int check_l() /*检查形状是否与左接触*/{ int x,y,i,zf=0;for(i=0;i《7;i++,i++){ x=RA.Rx+p[rs1].co[i];y=RA.Ry+p[rs1].co[i+1];if(y》6)zf+=r_f[x-15-1][y-6];if(y《=6&&x==16)zf+=1;}if(zf==0)return 1;elsereturn 0;} int check_r() /*检查形状是否与右接触*/{ /*zf为是否有颜色填充记录*/int x,y,i,zf=0; /*zf为是否有颜色填充记录*/for(i=0;i《7;i++,i++){x=RA.Rx+p[rs1].co[i];y=RA.Ry+p[rs1].co[i+1];if(y》6)zf+=r_f[x-15+1][y-6];if(y《=6&&x==25)zf+=1;}if(zf==0)return 1;elsereturn 0;}void check_touch(){ nback=check_b();nleft=check_l();nright=check_r();}void draw(int cb) /*画形状,cb=1以填充色画形状,cb=2以背景色画形状,cb=3以白色画形状*/{ int i,recordx=RA.Rx,recordy=RA.Ry;for(i=0;i《7;i++,i++){ RA.Rx+=p[rs1].co[i];RA.Ry+=p[rs1].co[i+1];if(RA.Ry《=6){ RA.Rx=recordx;RA.Ry=recordy;continue;}translation();if(cb==1)setfillstyle(1,p[rs1].attr);elseif(cb==2)setfillstyle(1,BLACK);elseif(cb==3){ setfillstyle(1,WHITE);r_f[RA.Rx-15][RA.Ry-6]=1; /*置对应数组标记元素*/}bar(RA.x1+1,RA.y1+1,RA.x2-1,RA.y2-1);RA.Rx=recordx;RA.Ry=recordy;}}void mov(int key) /*向下,左,右移动方块*/{ draw(2);if(key==LEFT&&nleft)RA.Rx--;elseif(key==RIGHT&&nright)RA.Rx++;elseRA.Ry++;nback=check_b();if(nback) /*判断形状有没有到达底部,有就将其颜色变为白色*/draw(1);elsedraw(3);}void change() /*变换形状*/{ int status=rs1,buffer,i,x,y,zf=0;if(p[rs1].attr==p[rs1+1].attr)rs1++;elsewhile(p[rs1].attr==p[rs1-1].attr)rs1--;for(i=0;i《7;i++,i++) /*检查变化形状后是否与已存形状发生冲突*/{ x=RA.Rx+p[rs1].co[i];y=RA.Ry+p[rs1].co[i+1];if(y》6)zf+=r_f[x-15][y-6]; }if(zf!=0) rs1=status; buffer=rs1;rs1=status;status=buffer;draw(2);buffer=rs1;rs1=status;status=buffer;nback=check_b(); /*判断变化后的形状是不是到达了低部,这个检查是十分必要的*/if(nback) draw(1);elsedraw(3);}void accelerate(){ if(count_down》=1){ check_touch(); /*消除上一步动作对方块状态的影响*/count_down=0;if(nback) /*0表示到达底部,1表示没有到达*/mov(DOWN);}}void drawbox() /*画方块所在方框*/{ int xcor,ycor;for(xcor=xcors;xcor《=xcorb;xcor++)for(ycor=ycors;ycor《=ycorb;ycor++){ if(xcor==xcors||xcor==xcorb||ycor==ycors||ycor==ycorb){ RA.Rx=xcor;RA.Ry=ycor;translation();setfillstyle(1,DARKGRAY);bar(RA.x1+1,RA.y1+1,RA.x2-1,RA.y2-1);}}}void erasure(int k){ int i,j,recordx=RA.Rx,recordy=RA.Ry;{ j=k-1;for(;j》0;j--){ for(i=1;i《11;i++){ r_f[i][j+1]=r_f[i][j];RA.Rx=i+15;RA.Ry=j+1+6;translation();if(r_f[i][j+1]==1)setfillstyle(1,WHITE);elsesetfillstyle(1,BLACK);bar(RA.x1+1,RA.y1+1,RA.x2-1,RA.y2-1);RA.Rx=recordx;RA.Ry=recordy;}}}}void pause(){ HZ12(450,400,15,BLACK,正常);HZ12(450,400,15,GREEN,暂停);for(;;)if(bioskey(1)&&bioskey(0)==SPACE){ clearkbd();HZ12(450,400,15,BLACK,暂停);HZ12(450,400,15,RED,正常);return;}}void judge() { int i,j,full=0; /*full等于10说明某一行满,该消除了*/ if(finish()) /*判断游戏是否该结束了*/messagebox(); /*win编程里有这个函数*/ for(j=1;j《21;j++) /*判断某一行是否满了*/{ for(i=1;i《11;i++)full+=r_f[i][j];if(full==10)erasure(j); /*消除这行*/ full=0;}}void update() /*使程序可以重新运行*/{ cleardevice();setbkcolor(BLACK);initinfo(); /*提示信息初始化*/initbox(); /*游戏框架初始化*/srand((unsigned)time(NULL)); /*随机器函数的初始化*/rs1=random(19);rs2=random(19);next_shape();initposition(); /*方块最开始的出现位置*/initremove(); /*记录每个方格有无颜色填充数组初始化*/HZ12(450,400,15,RED,正常);process();}void EXIT(){ closegraph();intrestore(); /*恢复中断向量*/exit(0);}void initremove(){ int i,j;for(i=0;i《12;i++)for(j=0;j《22;j++)if(i==0||i==11||j==0||j==21)r_f[i][j]=1;elser_f[i][j]=0;}void initinfo(){ char aStr;setcolor(RED);outtextxy(450,100,This game’s writer is:);HZ12(450,140,15,RED,该程序作者:NULL);outtextxy(525,110,NULL);outtextxy(450,180,FUNCTION FOR KEYS:);outtextxy(450,200,UP:change the shape);outtextxy(450,210,DOWN:accelerate);outtextxy(450,220,LEFT:move left);outtextxy(450,230,RIGHT:move right);outtextxy(450,240,ESC:exit this game);outtextxy(450,250,SPACE:pause);HZ12(450,260,20,RED,上:);HZ12(450,280,20,RED,下:);HZ12(450,300,20,RED,左:);HZ12(450,320,20,RED,右:);HZ12(450,340,20,RED,ESC:退出);HZ12(450,360,15,RED,空格: 暂停/开始);HZ12(450,380,15,RED,目前状态:);HZ12(20,200,15,RED,下一个形状);aStr=24;aStr=0;aStr=0;HZ12(480,260,12,GREEN,aStr);HZ12(500,260,12,GREEN,( 变形 ));aStr=25;aStr=0;HZ12(480,280,12,GREEN,aStr);HZ12(500,280,12,GREEN,( 加速 ));aStr=27;aStr=0;HZ12(480,300,12,GREEN,aStr);HZ12(500,300,12,GREEN,向左);aStr=26;aStr=0;HZ12(480,320,12,GREEN,aStr);HZ12(500,320,12,GREEN,向右);}void messagebox(){ int key;setcolor(GREEN);setfillstyle(1,DARKGRAY);rectangle(220,200,420,300);bar(221,201,419,299);HZ12(280,210,15,GREEN,GAME OVER);HZ12(275,230,15,GREEN,重新游戏: Y); HZ12(275,270,15,GREEN,退出游戏: N); HZ12(450,400,15,BLACK,正常);HZ12(450,400,15,GREEN,GAME OVER);for(;;)if(bioskey(1)){ key=bioskey(0);if(key==Y){ clearkbd();update();}elseif(key==N){ clearkbd();EXIT();}elseclearkbd();}}void initbox(){ xcors=15; /*画游戏框*/xcorb=26;ycors=6;ycorb=27;drawbox();xcors=2; /*画提示框*/xcorb=7;ycors=6;ycorb=11;drawbox();}void initposition(){ RA.Rx=18;RA.Ry=6-p[rs1].co;;RA.x1=0;RA.x2=0;RA.y1=0;RA.y2=0;}void next_shape() /*画下一形状提示框*/{ int recordx=RA.Rx,recordy=RA.Ry,buffer;RA.Rx=3;RA.Ry=7;draw(2);buffer=rs1;rs1=rs2;rs2=buffer;draw(1);RA.Rx=recordx;RA.Ry=recordy;buffer=rs1;rs1=rs2;rs2=buffer;}void process() /*游戏过程*/{ for(;;){ check_touch();if(!nback){ rs1=rs2;rs2=random(19); /*产生另一种方块的码数*/ initposition();judge(); /*判断某一行是否满了和这个游戏是否可以结束了*/draw(1);next_shape();}if(count_other》=1) { count_other=0; if(bioskey(1)) /*对按键的处理*/{ int key=bioskey(0);clearkbd(); /*清除键盘缓冲队列*/if(key==ESC)EXIT();if(key==LEFT&&nleft&&nback)mov(LEFT); if(key==RIGHT&&nright&&nback)mov(RIGHT);if(key==UP&&nback) change();if(key==SPACE)pause();if(key==DOWN)accelerate();}}if(count_down》=4){ check_touch(); /*消除上一步动作对方块状态的影响*/count_down=0;if(nback) /*0表示到达底部,1表示没有到达*/mov(DOWN);}}/*for*/}main(){ int gdriver=DETECT,gmode=0; initgraph(&gdriver,&gmode,d:turboc); /*启动图形与中断部分*/intenable();update();}

c语言游戏编程,下落的小鸟 求代码

下落的小鸟

#include《stdio.h》#include《stdlib.h》#include《conio.h》#include《time.h》#include《Windows.h》int Grade = 1, Score = 0, Max_blank = 9, Distance = 18;struct Birds{int x; int y;};  //定义一种Birds数据类型(含3个成员)Birds *Bird = (Birds*)malloc(sizeof(Birds));  //定义Birds类型 指针变量Bird并赋初值struct Bg{int x, y; int l_blank; Bg *pri; Bg *next;};  //定义一种Bg数据类型(含5个成员)Bg *Bg1 = (Bg*)malloc(sizeof(Bg));  //定义Bg类型 指针变量Bg1并赋初值

void Position(int x, int y)  //光标定位函数(用于指定位置输出){COORD pos = { x - 1, y - 1 };HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(Out, pos);}

void Csh( )  //初始化界面

{

printf(“══════════════════════════════════════\n“);

printf(“ ■■ ■■ C语言版 Flappy Bird \n“);

printf(“ ■■ ■■\n“);

printf(“ ■■ ■■\n“);

printf(“ ■■ ■■ 瞎搞人:yyposs原创\n“);

printf(“ ■■ ■■ 瞎搞日期:2014.2\n“);

printf(“ ■■ ■■\n“);

printf(“ ■■ ■■ 改编:鸣蝉百2021.7\n“);

printf(“ ■■ ■■ 操作:按向上方向键让小鸟起飞\n“);

printf(“ ■■\n“);

printf(“ ■■\n“);

printf(“ ■■ ■■\n“);

printf(“ ■■ ■■\n“);

printf(“ ■■ ■■\n“);

printf(“ ■■ ■■\n“);

printf(“ ■■ ■■ DEVc++运行通过\n“);

printf(“══════════════════════════════════════\n“);

printf(“  按键继续…“);

getch( );

system(“cls“);

}

 

void PrFK( )  //输出方框(游戏范围区)

{int i;

Position(1, 1); printf(“╔“);  Position(79, 1); printf(“╗“);

Position(1, 24); printf(“╚“);  Position(79, 24); printf(“╝“);

for (i = 3; i 《= 78; i += 2){Position(i, 1); printf(“═“); Position(i, 24); printf(“═“);}

for(i=2;i《=23;i++)

  { Position(1,i); printf(“║“);if(i《11)printf(“0%d“,i-1);else printf(“%d“,i-1);

   Position(79,i); printf(“║“);

  }

Position(4, 25); printf(“小鸟即将出现,请准备按键起飞… “);

getch( );

Position(4, 25); printf(“                                  “);

}void CreatBg( )  //创建障碍物坐标(便于打印输出){Bg *Bg2 = (Bg*)malloc(sizeof(Bg));Bg1-》x = 90; Bg1-》y = 8;  //确定障碍物的一对基本坐标(此时值是在游戏框之外)Bg2-》x = Bg1-》x + Distance; Bg2-》y = 9;  //下一障碍物的基本坐标x、yBg1-》l_blank = Max_blank - Grade;  //障碍物上下两部分之间的空白距离l_blankBg2-》l_blank = Max_blank - Grade;Bg1-》next = Bg2; Bg1-》pri = Bg2;Bg2-》next = Bg1; Bg2-》pri = Bg1;}

void InsertBg(Bg *p)  //随机改变障碍物的y坐标,让空白通道有上下变化{int temp;Bg *Bgs = (Bg*)malloc(sizeof(Bg));Bgs-》x = p-》pri-》x + Distance;Bgs-》l_blank = Max_blank - Grade;srand((int)time(0));  //启动随机数发生器temp = rand( );  //产生一个随机数并赋值给tempif (temp % 2 == 0){if ((temp % 4 + p-》pri-》y + Max_blank - Grade)《21)Bgs-》y = p-》pri-》y + temp % 4;else Bgs-》y = p-》pri-》y;}else{if ((p-》pri-》y - temp % 4)》2)Bgs-》y = p-》pri-》y - temp % 4;else Bgs-》y = p-》pri-》y;}Bgs-》pri = p-》pri; Bgs-》next = p;p-》pri-》next = Bgs; p-》pri = Bgs;}

 

void CreatBird( )  //建立小鸟的坐标(初始打印输出小鸟的位置){Bird-》x = 41; Bird-》y = 10;}

int CheckYN(Bg *q)  //判断游戏结束与否(值为0是要结束,为1没有要结束){Bg *p = q; int i = 0;while (++i 《= 5){if (Bird-》y》23)return 0;if (Bird-》x == p-》x&&Bird-》y 《= p-》y)return 0;if ((Bird-》x == p-》x || Bird-》x == p-》x + 1 || Bird-》x == p-》x + 2) && Bird-》y == p-》y)return 0;if (Bird-》x == p-》x&&Bird-》y》p-》y + p-》l_blank)return 0;if ((Bird-》x == p-》x || Bird-》x == p-》x + 1 || Bird-》x == p-》x + 2) && Bird-》y == p-》y + p-》l_blank)return 0;p = p-》next;}return 1;}

void Check_Bg(Bg *q)  //核查开头的障碍物坐标是否在游戏区内{Bg *p = q; int i = 0, temp;while (++i 《= 5){if (p-》x》-4)p = p-》next;else{srand((int)time(0));  temp = rand();if (temp % 2 == 0){if ((temp % 4 + p-》y + Max_blank - Grade)《21)p-》y = p-》y + temp % 4;else p-》y = p-》y; p-》x = p-》pri-》x + Distance;p-》l_blank = Max_blank - Grade;}else{if ((p-》y - temp % 4)》2)p-》y = p-》y - temp % 4;else p-》y = p-》y; p-》x = p-》pri-》x + Distance;p-》l_blank = Max_blank - Grade;}}}}

 

void Prt_Bg(Bg *q)  //打印输出障碍物(依据其x、y坐标进行相应输出){Bg *p = q; int i = 0, k, j;while (++i 《= 5){if (p-》x》0 && p-》x 《= 78){for (k = 2; k《p-》y; k++){Position(p-》x + 1, k); printf(“■“); printf(“■“); printf(“ “);}Position(p-》x, p-》y);printf(“■“); printf(“■“); printf(“■“); printf(“ “);Position(p-》x, p-》y + p-》l_blank);printf(“■“); printf(“■“); printf(“■“); printf(“ “);k = k + p-》l_blank + 1;for (k; k 《= 23; k++){Position(p-》x + 1, k); printf(“■“); printf(“■“); printf(“ “);}}p = p-》next;if (p-》x == 0){for (j = 2; j《p-》y; j++){Position(p-》x + 1, j); printf(“ “); printf(“ “);}Position(p-》x + 1, p-》y);printf(“ “); printf(“ “); printf(“ “);Position(p-》x + 1, p-》y + Max_blank - Grade);printf(“ “); printf(“ “); printf(“ “);j = j + Max_blank - Grade + 1;for (j; j 《= 22; j++){Position(p-》x + 1, j); printf(“ “); printf(“ “);}}}}

 

void PrtBird( )  //打印输出小鸟{Position(Bird-》x, Bird-》y - 1); printf(“ “);Position(Bird-》x, Bird-》y); printf(“Ю“);Position(38, 2); printf(“Score:%d“, Score);}void Loop_Bg(Bg *q)  //障碍物x坐标左移,并记录成绩{Bg *p = q; int i = 0;while (++i 《= 5){p-》x = p-》x - 1; p = p-》next;if (Bird-》x == p-》x){Score += 1;if (Score % 4 == 0 && Grade《4)Grade++;}}}int main( ){int i = 0; int t;

while (1)

{Csh( );PrFK( );CreatBg( );InsertBg(Bg1);InsertBg(Bg1);InsertBg(Bg1);CreatBird( );while (1){if (!CheckYN(Bg1))break;Check_Bg(Bg1);Prt_Bg(Bg1);PrtBird( );Loop_Bg(Bg1);Bird-》y = Bird-》y + 1;if (GetAsyncKeyState(VK_UP))  //按下了向上方向键{Position(Bird-》x, Bird-》y - 1);printf(“ “);Bird-》y = Bird-》y - 4;}Sleep(200);  //程序延时200毫秒(数值大小决定游戏速度快慢)i = 0;}Position(6, 25);printf(“游戏结束!  请输入:0.退出  1.重玩“);

scanf(“%d“,&t);

if (t==0)break;

system(“cls“); Score = 0;

}return 0;}


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: remold(关于英语的翻译问题)

下一篇: 宝宝侧睡的正确姿势图,婴儿睡觉的正确睡姿(什么是技术指标)



推荐阅读