• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 趣味程序導學C語言

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    趣味程序導學C語言: 趣味程序導學C 語言 (請到附件里下載源代碼與課件) 電腦 游戲 ,一個熟悉而誘人的字眼,常常不經意地浮現在我們的腦海當中。有夢幻神奇的《傳奇》,有驚險刺激的《反恐精英》,有純真童趣的《泡泡堂》,還有武林情仇,笑傲江湖的《劍
    趣味程序導學C語言:

     

    趣味程序導學C語言

    (請到附件里下載源代碼與課件)

     

    電腦游戲,一個熟悉而誘人的字眼,常常不經意地浮現在我們的腦海當中。有夢幻神奇的《傳奇》,有驚險刺激的《反恐精英》,有純真童趣的《泡泡堂》,還有武林情仇,笑傲江湖的《劍俠情緣online》。它是e時代常談的話題,是交互式娛樂的主力軍,是一種高層次的綜合藝術,更是一個民族的文化、世界觀的全新傳播方式。作為游戲玩家的我們,是不是想設計一個屬于自己的游戲呢?

    愛玩是人的天性,而C語言是我們計算機專業都要學習的一門基礎學科。一般來說,是比較枯燥的。那么,我們能不能通過編一些小游戲來提高它的趣味性呢?這樣學習程序設計,就不會是一件艱苦、枯燥的事,它變得象電腦游戲一樣充滿好奇,富有樂趣。這正是我這個講座的目的。

    1、  總是從Hello,world開始

    學習編程的第一個程序,一般就是打印一個親切的詞語——“Hello,world!”。讓我們來看看這個最簡單的C程序:

    #incolude <stdio.h> /*把輸入輸出函數的頭文件包含進來*/

    int main()

    {

    printf(“Hello, world!”);/*在屏幕上輸出字符串“Hello,world!”*/

    return 0;/*退出main函數,并返回0*/

    }

    下面我們發現幾個值得改進的地方,1、程序的運行結果一閃而過。2、每執行這個程序一次都能看見上次運行留下的字符。3、我們還希望屏幕輸出一個笑臉來歡迎我們。讓我們來改進一下這個程序吧!1、在return語句的前面加一句:getch ();,表示按任意鍵結束。2、在printf語句前用clrscr函數清屏,要使用這個函數和getch函數,需要在程序開頭再包含頭文件conio.h。3、ASCII碼也有許多非常好玩的字符,比如ASCII碼值為2的就是一個笑臉,我們可以用printf(“%c”, 2)來輸出一個笑臉。

    現在我們把Hello,world程序改成一個更好看的Hello,world了。下面讓我們開始做游戲吧!

    2、  心動的開始,一個運動中的笑臉

    大家小時侯喜歡看動畫片嗎?哈哈,我猜你們都喜歡吧!下面就讓我們來做一個小動畫吧。在屏幕上顯示一個運動的小笑臉,而且當它到達屏幕的邊緣時會自動彈回來。

    先在程序定義一個在屏幕中運動的點的結構:

    struct move_point

    {

           int x, y;/*該點的位置,包括x坐標和y坐標*/

           int xv, yv;/*該點在x軸、y軸的速度*/

    };

    運動的原理是,先擦去物體先前的軌跡,讓物體按其速度移動一段距離,再畫出該物體。讓我們看到以下代碼:

    gotoxy(man.x, man.y);/*把光標移到指定的坐標*/

    printf(“ “);/*輸出一個空格,把先前的字符擦去*/

    然后我們讓物體按其速度運動:

    man.x += man.xv;/*水平方向按x軸的速度運動*/

    man.y += man.yv;/*垂直方向按y軸的速度運動*/

    運動后還要判斷物體是否出界,如果出了界,就令物體反彈,即讓它下一刻的速度等于現在的速度的相反數。最后打印出這個笑臉:

    gotoxy(man.x, man.y);

    printf(“%c\b”, 2); /*輸出ASCII碼值為2的“笑臉”字符*/

    怎么樣?是不是很有趣呢?不過這個笑臉一直是自己運動,能不能讓我們來控制它運動呢?答案是肯定的,讓我們繼續往下學吧!

    3、  交互的實現——讓我們來控制笑臉運動

    這個程序的主要功能是接受按鍵,如果接收的是方向鍵,就讓笑臉順著方向移動,如果接收的是ESC鍵就退出程序,其他按鍵則忽略處理。接受按鍵我們用以下兩條語句:

    while (bioskey(1) == 0);/*等待按鍵*/

    key = bioskey(0);/*把接收的按鍵的鍵盤碼賦給變量key*/

    然后用switch語句來判斷按鍵以及執行相關操作,如下:

    switch (key) /*對變量key的值進行判斷*/

    {

    case UP:    /*如果按的是向上鍵*/

           … break; /*讓物體向上運動,并退出switch*/

    case DOWN: /*如果按的是向下鍵*/

           … break; /*讓物體向下運動,并退出switch*/

    case LEFT:  /*向左鍵*/

           … break;;/*向左運動*/

    case RIGHT: /*向右鍵*/

           … break;/*向右運動*/

    default:

           break;/*其他按鍵則忽略處理*/

    }

    怎么樣,是不是有了玩游戲的感覺了?不過這個程序沒有什么目的,也沒有什么判斷勝負的條件。下面我們就利用這個能控制它移動的笑臉來做一個更有趣的游戲吧!

    4、  在迷宮中探索

    小時侯,我常在一些小人書和雜志上看見一些迷宮的游戲,非常喜歡玩,還常到一些書上找迷宮玩呢。好的,現在我們用C語言來編個迷宮的游戲,重溫一下童年的樂趣。

    首先,我們定義一個二維數組map,用它來保存迷宮的地圖,其中map[x][y] == ‘#’表示在(x,y)坐標上的點是墻壁。DrawMap函數在屏幕上輸出迷宮的地圖和一些歡迎信息。

    在main函數里,我們定義了“小人”man的坐標和“目的地”des的坐標。在游戲循環中,我們增加了一些用來判斷勝負的語句:

    if (man.x == des.x && man.y == des.y) /*如果人的坐標等于目的地的坐標*/

    {

           gotoxy(35, 3);

           printf(“Ok! You win!”); /*輸出勝利信息*/

    ….

    }

    在判斷按鍵時,如果玩家按的是方向鍵,我們還要先判斷前面是不是有“墻壁”,如果有的話,就不能往前移動了。好的,我們在判斷按鍵的switch語句的各個分支加上了判斷語句,如下:

    if (map[…][…] == ‘#’) break;/*如果前面是墻壁,就不執行下去*/

    哇噻!真棒,我們做出了一個完整的游戲了。當然你還可以通過修改二維數組map來修改迷宮的地圖,讓它更有挑戰性。不過,我們要設計一個更好玩的游戲——

    5、  聰明的搬運工

    大家一定玩過“搬運工”的游戲吧!這是在電腦和電子字典上較流行的益智游戲,讓我們動手做一個屬于自己的“搬運工”吧!

    程序依然用數組map來保存地圖,數組元素如果為空格則表示什么也沒有,‘b’表示箱子,‘#’表示墻壁,‘*’表示目的地,‘i’表示箱子在目的地。我們以后每推一下箱子,不但要改變屏幕的顯示,也要改變map相應元素的值。

    游戲的主循環依然是接受按鍵。當接收一個方向鍵,需要判斷小人前面一格的狀態,如果是空地或目的地,則人物可以直接移動;如果是墻壁,則不可移動;如果是箱子或目的地上的箱子,則需要繼續判斷箱子前面一格的狀態:如果前一格是空地或目的地,則人推箱子前進,否則不可移動。好的,我們在switch中增加了這些判斷語句。

    程序還有一個重要的功能就是判斷勝利。數組Des用來記錄全部目的地的坐標,我們每執行一步操作后,程序就要通過Des數組判斷這些目的地上是否都有箱子了。

    真棒??!我們可以做游戲了。而且是一個老少皆宜,趣味十足的游戲呢!當然,我們可以通過修改map數組來制作不同的游戲地圖,我們還可以相互分享好的游戲地圖呢。

    尾聲:

    C語言在計算機界中占有一個非常重要的地位,很多操作系統都是C語言開發的,比如大家耳熟能詳的Unix、Windows、Linux等系統。在C++等高級語言還沒出來的時候,很多應用程序也是C語言開發的。C語言在與硬件聯系緊密的編程中,也占有重要地位。

    其實我覺得學習編程,可以通過一些小游戲、實用的例子來學習。象學習音樂的人,不是要等到把全部樂理學完后才演奏一個完整的曲子。而是剛開始學時就有一些簡單的曲子讓你演奏,讓你立刻就有成就感,讓你很快就能賣弄出來在別人面前表現自己了。通過編游戲來學習編程,把學習變成游戲,不失為學習計算機的一種好方法。

    好了,編游戲就這么簡單,希望大家也嘗試用C語言或其他的語言來做幾個自己喜歡的小游戲。

     

                                                                   作者:王德浩

                                                                   

                                                           

    點這里下載

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>