俄羅斯方塊和貪吃蛇遊戲軟件:C語言應用初始感受

C語言課程設以一節課,老師提供了一個C語言的飛俄羅斯方塊讓我們感受,我們所學的C語言課程,主要是各種語句的練習,這次是用我們所學過的知識來感受一個實際的系統。

  首先安裝c-free,然後是將代碼貼進去運行

wKiom1dC-R3R0hT2AABBCnbYFm4437.png

界面雖然有點簡單,但這確實使用C語言做出來的遊戲。

分析一下程序,感覺沒有太複雜的,就是上學期學習的簡單語句的組合,但是用的非常好。首先看看用到了幾種語句:

1、首先是在屏幕上顯示的語句printf,

2、另外一個就是多條件判斷switch--case

應用方法

 switch(tetris->flag)      

 {

  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:         

   {  

    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:         

   {  

    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:         

   {  

    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:         

   {  

    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:         

   {  

    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:         

   {  

    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:        

   {  

    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:        

   {  

    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:       

   {  

    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:       

   {  

    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:        

   {  

    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:       

   {

    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:       

   { 

    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:        

   { 

    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:        

   {  

    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:       

   {  

    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、遊戲窗口的定義


void make_frame()

{

 HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);  

 gotoxy(hOut,FrameX+Frame_width-5,FrameY-2);  

 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 :退出遊戲");

 gotoxy(hOut,FrameX,FrameY);       

 printf("╔");

 gotoxy(hOut,FrameX+2*Frame_width-2,FrameY);

 printf("╗");

 gotoxy(hOut,FrameX,FrameY+Frame_height);

 printf("╚");

 gotoxy(hOut,FrameX+2*Frame_width-2,FrameY+Frame_height);

 printf("╝");

 a[FrameX][FrameY+Frame_height]=2;     

 a[FrameX+2*Frame_width-2][FrameY+Frame_height]=2;

 for(i=2;i<2*Frame_width-2;i+=2)

 {

  gotoxy(hOut,FrameX+i,FrameY);

  printf("═");         

 }

 for(i=2;i<2*Frame_width-2;i+=2)

 {

  gotoxy(hOut,FrameX+i,FrameY+Frame_height);

  printf("═");         

  a[FrameX+i][FrameY+Frame_height]=2;   

 }

 for(i=1;i<Frame_height;i++)

 {

  gotoxy(hOut,FrameX,FrameY+i); 

  printf("║");         

  a[FrameX][FrameY+i]=2;       

 }

 for(i=1;i<Frame_height;i++)

 {

  gotoxy(hOut,FrameX+2*Frame_width-2,FrameY+i); 

  printf("║");         

  a[FrameX+2*Frame_width-2][FrameY+i]=2;  

 }

}

4、光標移動位置

void gotoxy(HANDLE hOut, int x, int y)

{

 COORD pos;

 pos.X = x;  

 pos.Y = y;  

 SetConsoleCursorPosition(hOut, pos);

}

5、實現俄羅斯方塊的移動

 個人感覺這個程序最吸引人的地方,就是每個方塊都可以變化方向,位置,和平時在遊戲機中玩得幾乎完全一樣,感覺十分的神奇,通過c語言程序的設計,可以完成這樣一個遊戲,真的令人大吃一驚,真的是簡單的語言,可以實現複雜的功能。

其他就是參數設置,已經不是軟件的重點了,但是在其中,學習了一個常用的C語言實現的菜單,

void gotoxy(HANDLE hOut, int x, int y);

void make_frame();

void get_flag(struct Tetris *);

void make_tetris(struct Tetris *);

void print_tetris(HANDLE hOut,struct Tetris *);

void clear_tetris(HANDLE hOut,struct Tetris *);

int if_moveable(struct Tetris *);

void del_full(HANDLE hOut,struct Tetris *);

void start_game();



體會:

1、C語言遊戲程序可以看到,C語言是我們第一門編程語言,從對計算機沒有任何編程能力的菜鳥,到現在能讀懂C語言的程序,感覺自己在慢慢進步。

2、計算機應用系統,就是不斷接收用戶的輸入,然後根據相應的邏輯,顯示相應的內容的過程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章