c語言_流星雨的實(shí)現(xiàn)_第1頁
c語言_流星雨的實(shí)現(xiàn)_第2頁
c語言_流星雨的實(shí)現(xiàn)_第3頁
c語言_流星雨的實(shí)現(xiàn)_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余17頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

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

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

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

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

6、第 24 行的流星被碰到 ,程序終止 。.專業(yè) .整理 .下載可編輯流星的實(shí)現(xiàn)輸 入 天 空 和產(chǎn)生一組流流行的顏色,若碰到 #號(hào),地面星位置,速度流星和 #號(hào)同五 運(yùn)行界面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ùn)行結(jié)果.專業(yè) .整理 .下載可編輯六 設(shè)計(jì)總結(jié)經(jīng)過一個(gè)星期的上機(jī)實(shí)踐學(xué)習(xí) ,使我對(duì) C語言有

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論