C语言课程设以一节课,老师提供了一个C语言的飞机游戏让我们感受,上学期C语言课程,主要是各种语句的练习,这次是用以前的知识来感受一个实际的系统。

首先安装c-free,然后运行程序。

游戏程序看似简单,但是用C语言来实现还是第一次见,感到很惊奇。

分析一下程序,感觉没有太复杂的,就是上学期学习的简单语句的组合,但是运用的非常好。首先看看用到了几种语句:

1、首先是在屏幕上显示的语句printf

 printf("俄罗斯方块");
 gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+7);  
 printf("**********下一个方块:");
 gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+13);
 printf("**********");
 gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+17);
 printf("↑键:变体");
 gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+19);
 printf("空格:暂停游戏");
 gotoxy(hOut,FrameX+2*Frame_width+3,FrameY+15);
 printf("Esc :退出游戏");

2、另外一个就是多条件判断switch--case

 switch(tetris->flag)      //共6大类,19种类型
 {
  case 1:         //田字方块
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x+2][tetris->y-1]=b[2];
    a[tetris->x+2][tetris->y]=b[3];
    break;
   }
  case 2:         //直线方块:----
   { 
    a[tetris->x-2][tetris->y]=b[1];
    a[tetris->x+2][tetris->y]=b[2];
    a[tetris->x+4][tetris->y]=b[3];
    break;
   }
  case 3:         //直线方块: |
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x][tetris->y-2]=b[2];
    a[tetris->x][tetris->y+1]=b[3];
    break;
   }
  case 4:         //T字方块
   { 
    a[tetris->x-2][tetris->y]=b[1];
    a[tetris->x+2][tetris->y]=b[2];
    a[tetris->x][tetris->y+1]=b[3];
    break;
   }
  case 5:         //T字顺时针转90度方块
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x][tetris->y+1]=b[2];
    a[tetris->x-2][tetris->y]=b[3];
    break;
   }
  case 6:         //T字顺时针转180度方块
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x-2][tetris->y]=b[2];
    a[tetris->x+2][tetris->y]=b[3];
    break;
   }
  case 7:         //T字顺时针转270度方块
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x][tetris->y+1]=b[2];
    a[tetris->x+2][tetris->y]=b[3];
    break;
   }
  case 8:         //Z字方块
   { 
    a[tetris->x][tetris->y+1]=b[1];
    a[tetris->x-2][tetris->y]=b[2];
    a[tetris->x+2][tetris->y+1]=b[3];
    break;
   }
  case 9:         //Z字顺时针转90度方块
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x-2][tetris->y]=b[2];
    a[tetris->x-2][tetris->y+1]=b[3];
    break;
   }
  case 10:        //Z字顺时针转180度方块
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x-2][tetris->y-1]=b[2];
    a[tetris->x+2][tetris->y]=b[3];
    break;
   }
  case 11:        //Z字顺时针转270度方块
   { 
    a[tetris->x][tetris->y+1]=b[1];
    a[tetris->x+2][tetris->y-1]=b[2];
    a[tetris->x+2][tetris->y]=b[3];
    break;
   }
  case 12:        //7字方块
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x][tetris->y+1]=b[2];
    a[tetris->x-2][tetris->y-1]=b[3];
    break;
   }
  case 13:        //7字顺时针转90度方块
   { 
    a[tetris->x-2][tetris->y]=b[1];
    a[tetris->x-2][tetris->y+1]=b[2];
    a[tetris->x+2][tetris->y]=b[3];
    break;
   }
  case 14:        //7字顺时针转180度方块
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x][tetris->y+1]=b[2];
    a[tetris->x+2][tetris->y+1]=b[3];
    break;
   }
  case 15:        //7字顺时针转270度方块
   {
    a[tetris->x-2][tetris->y]=b[1];
    a[tetris->x+2][tetris->y-1]=b[2];
    a[tetris->x+2][tetris->y]=b[3];
    break;
   }
  case 16:        //倒7字方块
   {
    a[tetris->x][tetris->y+1]=b[1];
    a[tetris->x][tetris->y-1]=b[2];
    a[tetris->x+2][tetris->y-1]=b[3];
    break;
   }
  case 17:        //倒7字顺指针转90度方块
   {
    a[tetris->x-2][tetris->y]=b[1];
    a[tetris->x-2][tetris->y-1]=b[2];
    a[tetris->x+2][tetris->y]=b[3];
    break;
   }
  case 18:        //倒7字顺时针转180度方块
   { 
    a[tetris->x][tetris->y-1]=b[1];
    a[tetris->x][tetris->y+1]=b[2];
    a[tetris->x-2][tetris->y+1]=b[3];
    break;
   }
  case 19:        //倒7字顺时针转270度方块
   { 
    a[tetris->x-2][tetris->y]=b[1];
    a[tetris->x+2][tetris->y+1]=b[2];
    a[tetris->x+2][tetris->y]=b[3];
    break;
   }

3、按键功能

按←键则向左动,中心横坐标减2

按→键则向右动,中心横坐标加2

按↑键则变体即当前方块顺时针转90度


4、感悟

通过这节课,我对C语言又有了进一步的了解,看似简单的程序,其实是由几百行的代码打成的。发现自己在编程方面还有不足,使我知道C语言要严谨、按部就班的一步一步做,程序就可以做出来了。