c語言_流星雨的實現_第1頁
c語言_流星雨的實現_第2頁
c語言_流星雨的實現_第3頁
c語言_流星雨的實現_第4頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、下載可編輯題目:流星雨的實現學院 :班級 :姓名 :學號 :指導教師 :時間 :.專業(yè) .整理 .下載可編輯目錄一 課程設計目的3二 設計內容與要求3三 概要設計3四 詳細設計5五 運行界面6六 設計總結16七 教師評語18.專業(yè) .整理 .下載可編輯一 課程設計目的程序模擬一組流星飛向地面的情境,地面用多行 # 來表示,流星用大寫字母表示 。二 設計內容與要求1 內容:程序產生一組流星 (比如 10 個),從屏幕頂部下降飛向地面 。2 一組流星中 ,每個流星的字符顏色是隨機的 ,下降的位置是隨機的 ,下降的速度也是隨機的。一個流星下落只能去掉一個# 號,當最后一行地面有 # 被去掉時 ,程序

2、終止 。三 概要設計1 首先定義二維數組 screen 表示地面和天空 ,此數組是一個 24 行 81 列的字符數組 。上面的行表示天空 ,數組單元的值是空格 ;.專業(yè) .整理 .下載可編輯最下面的幾行 (如 5 行)表示地面 ,數組單元的值是 # 整;個屏幕的大小是 80*25 ,即 25 行 80 列, 為了在輸出最后一行時不換行滾屏,程序只能利用上面的 24 行空間 。 把數組定義成 81 列的目的是,每行的最后字符賦值成 0 ,就可以按照字符串的方式輸出每行文本了 。2 編寫的程序在下降過程中 ,程序必須知道流星的字符 、顏色、位置、速度,因此程序需要定義以下幾個數組變量 :存放流星字

3、符的數組 ,存放流星字符顏色的數組 ,存放流星行位置的數組 ,存放流星列位置的數組 ,存放流星下降速度的數組 。3 輸出時程序首先輸出地面和天空 ,即輸出定義的二維數組 screen 中的字符串,前 21 行是空行,后 3 行是 # 號 。 這樣 screen2481 的字符矩陣就與整個屏幕對應起來 。然后隨時機產生一組流星數據 ,包括字符 、顏色、位置和速度 。速度用一次下降多少行來表示 ,最大的速度是4。由于要隨機產生這些數據,因此需要調用random函數 。( random函數的原型是intrandom(intnum) ;這個函數產生一個0num-1之間的一個隨機數 。 流星字符可以這樣

4、產生: random(26)+流A星字;符的顏色可以這樣產生 : random(16)+1; 流 星 下 降 的 位 置 可 以 這 樣 產 生 :random(4)+1 ;流星的行位置一開始都是1; 流星的列位置可以這樣產生:random(80)+1 ;但要保證所有流星的列位置不能相同。調用 random 之前,用 randomize() 庫函數進行初始化 。 兩個庫函數都在 stdlib.h 文件中 。) 設置后,每個流星按照自己的速度下落 ,所.專業(yè) .整理 .下載可編輯謂的下落就是逐行移動流星字符: 在下一行新的位置上顯示流星字符,在原來的位置上顯示空格以便擦除流星字符,然后再延遲等待

5、幾十毫秒 。這樣循環(huán)往復就構成了流星下落的動畫。 但要注意 ,流星的速度各不相同,而一次下落多行的流星也要逐行下落。如果流星的新位置所對應的screen 的單元格的值是 # 則,表示撞到了地面 。 這種情況下在流星的新位置上輸出空格,擦除 # 號,并且對screen 相應的單元賦值為空格 ,流星字符也要賦值為空格 ,以表示流星消失 。4 當 screen23 中任何一個單元格是空格時,程序終止。四 詳細設計模塊一 :輸入天空和地面 ,天空和地面都是靜止的 。模塊二 :產生一組流星 ,流星的表示 。模塊三 :流行的顏色 ,位置,速度。模塊四 :若碰到 #號,流星和 # 號同時消失 。模塊五 :若

6、第 24 行的流星被碰到 ,程序終止 。.專業(yè) .整理 .下載可編輯流星的實現輸 入 天 空 和產生一組流流行的顏色,若碰到 #號,地面星位置,速度流星和 #號同五 運行界面1 程序框圖.專業(yè) .整理 .下載可編輯2 程序清單#include #include #include #include #include #define ROW24.專業(yè) .整理 .下載可編輯#define COL81#define REAL100#define NUM10#define SPEED4int random(int num);static void setSky();static void display

7、();int check_last_row();void word_n_down();int word_one_down(int begin,int position,int speed ,int word,int *word_end);void gotoxy(int x,int y);char sky_groundREALCOL;int test = 0;int cycle_end = 0;int word_endNUM;int list = 0;int beginNUM;.專業(yè) .整理 .下載可編輯int positionNUM;int wordNUM;int speedNUM;int m

8、ain()int end_flag = 0;time_t t;srand(unsigned) time(&t);setSky();while(!(end_flag = check_last_row()for(int a=0;aNUM;a+)word_enda = 0;list = 0;cycle_end = 0;word_n_down();system(pause);return 0;.專業(yè) .整理 .下載可編輯static void setSky()for(int b=0;bREAL;b+)for(int c=0;cCOL-1;c+)sky_groundbc = ;sky_groundbCO

9、L-1 = 0;for(int d=ROW-5;dROW;d+)for(int e=0;eCOL-1;e+)sky_groundde = #;sky_grounddCOL-1 = 0;static void display().專業(yè) .整理 .下載可編輯gotoxy(0,0);for(int f=0;fROW;f+)printf(%s,sky_groundf);int random(int num)return(rand() % num);int check_last_row()for(int g=0;gCOL;g+)if(sky_ground23g = )return 1;return 0;

10、.專業(yè) .整理 .下載可編輯void word_n_down()for(int h=0;h= NUM)break;test = list-1;if(test 0)test = 0;if(check_last_row()system(pause);exit(0);.專業(yè) .整理 .下載可編輯for(int i=0;i= ROW)return 0;sky_groundbegin+test*speedposition = ; if(begin+list*speed = 19) for(int z=19;zROW;z+)if(sky_groundzposition = #).專業(yè) .整理 .下載可編輯

11、sky_groundzposition = ;*word_end = 1;cycle_end +;break;elsesky_groundbegin+list*speedposition = word;return 0;void gotoxy(int x,int y)COORD coord;coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );.專業(yè) .整理 .下載可編輯3、系統(tǒng)運行結果.專業(yè) .整理 .下載可編輯六 設計總結經過一個星期的上機實踐學習 ,使我對 C語言有

12、了更進一步的認識和了解 ,要想學好它要重在實踐 ,要通過不斷的上機操作才能更好地學習它 ,通過實踐 ,我也發(fā)現我的好多不足之處 ,首先是自己在指法上還不行 ,經常按錯字母 ,通過學習也有所改進;再有對 C語言的一些標準庫函數不太了解 ,還有對函數調用的正確使用不夠熟悉 ,還有對 C語言中經常出現的錯誤也不了解,通過實踐 ,使我在這幾個方面的認識有所提高 。雖然設計時完成了,但是我覺得其中還是由一些不足之處:1. 警告句。程序中缺少一些警告句,例如: “是否真的刪除(y/n ) ? ”。2. 重名的情況 。由于考慮的不周全 ,沒有設計遇到重名的情況該怎么處理 。3. 選擇單一 。我們設計的程序中 ,只設計了按名字選擇 ,進行操作 ,忽略了重名的情況 。短短的一周課程設計結束了 ,但是這段時間里 ,我又學到了更多 C 知識,如:對象數組 ,string 類,文件流等 ,同時我也被提醒以后辦事的時候要認真 ,仔細,考慮周全 。, 也看到了團隊

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論