C語言課程設以一節課,老師提供了一個C語言的飛俄羅斯方塊讓我們感受,我們所學的C語言課程,主要是各種語句的練習,這次是用我們所學過的知識來感受一個實際的系統。
首先安裝c-free,然後是將代碼貼進去運行
界面雖然有點簡單,但這確實使用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、計算機應用系統,就是不斷接收用戶的輸入,然後根據相應的邏輯,顯示相應的內容的過程。