版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、c 語(yǔ)言 流星雨的實(shí)現(xiàn)題目:流星雨的實(shí)現(xiàn)學(xué)院:班級(jí):姓名:學(xué)號(hào):指導(dǎo)教師:時(shí)間:目錄一 課程設(shè)計(jì)目的4二 設(shè)計(jì)內(nèi)容與要求4三 概要設(shè)計(jì)4四 詳細(xì)設(shè)計(jì)6五 運(yùn)行界面7六 設(shè)計(jì)總結(jié)16七 教師評(píng)語(yǔ)18一 課程設(shè)計(jì)目的程序模擬一組流星飛向地面的情境,地面用多行#來(lái)表示,流星用大寫字母表示。二 設(shè)計(jì)內(nèi)容與要求1 內(nèi)容:程序產(chǎn)生一組流星(比如10 個(gè)),從屏幕頂部下降飛向地面。2 一組流星中,每個(gè)流星的字符顏色是隨機(jī)的,下降的位置是隨機(jī)的,下降的速度也是隨機(jī)的。一個(gè)流星下落只能去掉一個(gè)#號(hào),當(dāng)最后一行地面有 #被去掉時(shí),程序終止。三 概要設(shè)計(jì)1 首先定義二維數(shù)組screen表示地面和天空,此數(shù)組是一個(gè)2
2、4行 81 列的字符數(shù)組。上面的行表示天空,數(shù)組單元的值是空格;最下面的幾行(如 5 行)表示地面,數(shù)組單元的值是 #;整個(gè)屏幕的大小是 80*25,即 25 行 80 列, 為了在輸出最后一行時(shí)不換行滾屏,程序只能利用上面的 24 行空間。把數(shù)組定義成 81 列的目的是,每行的最后字符賦值成 0,就可以按照字符串的方式輸出每行文本了。2 編寫的程序在下降過(guò)程中,程序必須知道流星的字符、顏色、位置、速度,因此程序需要定義以下幾個(gè)數(shù)組變量:存放流星字符的數(shù)組,存放流星字符顏色的數(shù)組,存放流星行位置的數(shù)組,存放流星列位置的數(shù)組,存放流星下降速度的數(shù)組。3 輸出時(shí)程序首先輸出地面和天空,即輸出定義的
3、二維數(shù)組screen中的字符串,前21 行是空行,后 3 行是 #號(hào)。這樣screen2481的字符矩陣就與整個(gè)屏幕對(duì)應(yīng)起來(lái)。然后隨時(shí)機(jī)產(chǎn)生一組流星數(shù)據(jù),包括字符、顏色、位置和速度。速度用一次下降多少行來(lái)表示,最大的速度是4。由于要隨機(jī)產(chǎn)生這些數(shù)據(jù),因此需要調(diào)用 random函數(shù)。( random函數(shù)的原型是int random(int num);這個(gè)函數(shù)產(chǎn)生一個(gè)0num-1 之間的一個(gè)隨機(jī)數(shù)。流星字符可以這樣產(chǎn)生: random(26)+ A流;星字符的顏色可以這樣產(chǎn)生:random(16)+1;流星下降的位置可以這樣產(chǎn)生:random(4)+1;流星的行位置一開始都是1; 流星的列位置可以
4、這樣產(chǎn)生:random(80)+1;但要保證所有流星的列位置不能相同。調(diào)用random之前,用 randomize()庫(kù)函數(shù)進(jìn)行初始化。兩個(gè)庫(kù)函數(shù)都在stdlib.h文件中。)設(shè)置后,每個(gè)流星按照自己的速度下落,所謂的下落就是逐行移動(dòng)流星字符:在下一行新的位置上顯示流星字符,在原來(lái)的位置上顯示空格以便擦除流星字符,然后再延遲等待幾十毫秒。這樣循環(huán)往復(fù)就構(gòu)成了流星下落的動(dòng)畫。但要注意,流星的速度各不相同,而一次下落多行的流星也要逐行下落。如果流星的新位置所對(duì)應(yīng)的 screen的單元格的值是 #,則表示撞到了地面。這種情況下在流星的新位置上輸出空格,擦除#號(hào),并且對(duì) screen相應(yīng)的單元賦值為空
5、格,流星字符也要賦值為空格,以表示流星消失。4 當(dāng) screen23中任何一個(gè)單元格是空格時(shí),程序終止。四 詳細(xì)設(shè)計(jì)模塊一:輸入天空和地面,天空和地面都是靜止的。模塊二:產(chǎn)生一組流星,流星的表示。模塊三:流行的顏色,位置,速度。模塊四:若碰到 #號(hào),流星和 #號(hào)同時(shí)消失。模塊五:若第24 行的流星被碰到,程序終止。流星的實(shí)現(xiàn)輸入天空和產(chǎn)生一組流流行的顏若碰到 #號(hào),地面星色,位置,流星和 #號(hào)同速度五 運(yùn)行界面1 程序框圖2 程序清單#include <stdio.h>#include <stdlib.h>#include <time.h>#include
6、<windows.h>#include <conio.h>#define ROW24#define COL81#define REAL100#define NUM10#define SPEED4int random(int num);static void setSky();static void display();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(
7、int x,int y);char sky_groundREALCOL;int test = 0;int cycle_end = 0;int word_endNUM;int list = 0;int beginNUM;int positionNUM;int wordNUM;int speedNUM;int main()int end_flag = 0;time_t t;srand(unsigned) time(&t);setSky();while(!(end_flag = check_last_row()for(int a=0;a<NUM;a+)word_enda = 0;lis
8、t = 0;cycle_end = 0;word_n_down();system("pause");return 0;static void setSky()for(int b=0;b<REAL;b+)for(int c=0;c<COL-1;c+)sky_groundbc = ' 'sky_groundbCOL-1 = '0'for(int d=ROW-5;d<ROW;d+)for(int e=0;e<COL-1;e+)sky_groundde = '#'sky_grounddCOL-1 = '
9、0'static void display()gotoxy(0,0);for(int f=0;f<ROW;f+)printf("%s",sky_groundf);int random(int num)return(rand() % num);int check_last_row()for(int g=0;g<COL;g+)if(sky_ground23g = ' ')return 1;return 0;void word_n_down()for(int h=0;h<NUM;h+)beginh = random(ROW-5);posi
10、tionh = random(COL-2);wordh = random(26) + 'A'speedh = random(SPEED)+1;while(1)if(cycle_end >= NUM)break;test = list-1;if(test < 0)test = 0;if(check_last_row()system("pause");exit(0);for(int i=0;i<NUM;i+)word_one_down(begini,positioni,speedi, wordi,&word_endi);list +;d
11、isplay();Sleep(200);int word_one_down(int begin,int position,int speed,int word,int*word_end)if(*word_end) = 0)if(begin+list*speed >= ROW)return 0;sky_groundbegin+test*speedposition = ' ' if(begin+list*speed >= 19) for(int z=19;z<ROW;z+)if(sky_groundzposition = '#')sky_groun
12、dzposition = ' '*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 );3、系統(tǒng)運(yùn)行結(jié)果六 設(shè)計(jì)總結(jié)經(jīng)過(guò)一個(gè)星期的上機(jī)實(shí)踐學(xué)習(xí),使我對(duì) C語(yǔ)言有了更進(jìn)一步的認(rèn)識(shí)和了解,要想學(xué)好它要重在實(shí)踐,要通過(guò)不斷的上機(jī)操作才能更好地學(xué)習(xí)它,通過(guò)實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯(cuò)字母,通過(guò)學(xué)習(xí)也有所改進(jìn);再有對(duì) C語(yǔ)言的一些標(biāo)準(zhǔn)庫(kù)函數(shù)不太了解,還有對(duì)函數(shù)調(diào)用的正確使用不夠熟悉,還有對(duì) C語(yǔ)言中經(jīng)常出現(xiàn)的錯(cuò)誤也不了解,通過(guò)實(shí)踐,使我在這幾個(gè)方面的認(rèn)識(shí)有所提高。雖然設(shè)計(jì)時(shí)完成了,但是我覺(jué)得其中還是由一些不足之處:1. 警告句。程序中缺少一些警告句,例如 : “是否真的刪除(y/n)?”。2. 重名的情況。由于考慮的不周全,沒(méi)有設(shè)計(jì)遇到重名的情況該怎么處理。 3. 選擇單一。我們?cè)O(shè)計(jì)的程序中,只設(shè)計(jì)了按名字選擇,進(jìn)行操作,忽略了重名的情況。短短的一周課程設(shè)計(jì)結(jié)束了,但是這段時(shí)間
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版營(yíng)銷合作基本協(xié)議樣式版B版
- 2024年車棚租借協(xié)議標(biāo)準(zhǔn)格式版
- 2025年浙教新版選修3地理上冊(cè)月考試卷
- 2025年北師大版九年級(jí)生物上冊(cè)階段測(cè)試試卷
- 小學(xué)生演講技能的提升與拓展
- 2025年北師大新版二年級(jí)語(yǔ)文下冊(cè)階段測(cè)試試卷
- 綠化自動(dòng)灌溉改造方案
- 2025年滬科版高三地理下冊(cè)月考試卷
- 小學(xué)教師如何提高道德法治教育效果
- 2025年滬教新版七年級(jí)地理上冊(cè)階段測(cè)試試卷
- 承諾函(支付寶)
- FZ/T 81024-2022機(jī)織披風(fēng)
- GB/T 24123-2009電容器用金屬化薄膜
- 艾滋病梅毒乙肝實(shí)驗(yàn)室檢測(cè)
- 國(guó)鐵橋梁人行道支架制作及安裝施工要點(diǎn)課件
- 領(lǐng)導(dǎo)科學(xué)全套精講課件
- 粵教版地理七年級(jí)下冊(cè)全冊(cè)課件
- 小學(xué)科學(xué)蘇教版六年級(jí)上冊(cè)全冊(cè)精華知識(shí)點(diǎn)(2022新版)
- 萎縮性胃炎共識(shí)解讀
- 2022版義務(wù)教育語(yǔ)文課程標(biāo)準(zhǔn)(2022版含新增和修訂部分)
- 精品金屬線管布線施工工程施工方法
評(píng)論
0/150
提交評(píng)論