版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、題目:流星雨的實(shí)現(xiàn)學(xué)院:班級(jí):姓名:學(xué)號(hào):指導(dǎo)教師:時(shí)間:目錄 一 課程設(shè)計(jì)目的2二 設(shè)計(jì)內(nèi)容與要求3三 概要設(shè)計(jì)3四 詳細(xì)設(shè)計(jì)4五 運(yùn)行界面5六 設(shè)計(jì)總結(jié)15七 教師評(píng)語(yǔ)16一 課程設(shè)計(jì)目的程序模擬一組流星飛向地面的情境,地面用多行#來(lái)表示,流星用大寫(xiě)字母表示。二 設(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ì) 首先定義二維數(shù)組screen表示地面和天空,此數(shù)組是一個(gè)24行81列的字符數(shù)組。上面
2、的行表示天空,數(shù)組單元的值是空格;最下面的幾行(如5行)表示地面,數(shù)組單元的值是#;整個(gè)屏幕的大小是80*25,即25行80列, 為了在輸出最后一行時(shí)不換行滾屏,程序只能利用上面的24行空間。把數(shù)組定義成81列的目的是,每行的最后字符賦值成0,就可以按照字符串的方式輸出每行文本了。 編寫(xiě)的程序在下降過(guò)程中,程序必須知道流星的字符、顏色、位置、速度,因此程序需要定義以下幾個(gè)數(shù)組變量:存放流星字符的數(shù)組,存放流星字符顏色的數(shù)組,存放流星行位置的數(shù)組,存放流星列位置的數(shù)組,存放流星下降速度的數(shù)組。 輸出時(shí)程序首先輸出地面和天空,即輸出定義的二維數(shù)組screen中的字符串,前21行是空行,后3行是#號(hào)
3、。這樣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;流星的行位置一開(kāi)始都是1; 流星的列位置可以這樣產(chǎn)生:random(80)+1;但要保證所有流星的列位置不能相同。
4、調(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)畫(huà)。 但要注意,流星的速度各不相同,而一次下落多行的流星也要逐行下落。如果流星的新位置所對(duì)應(yīng)的screen的單元格的值是#,則表示撞到了地面。 這種情況下在流星的新位置上輸出空格,擦除#號(hào),并且對(duì)screen相應(yīng)的單元賦值為空格,流星字符也要賦值為空格,以表示流星消失。當(dāng)screen23中任何一
5、個(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 <windows.h>#include <conio.h>
6、#define ROW24#define COL81#define REAL100#define NUM10 #define SPEED4 int 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(int x,int y);char sky_groundREALCOL;int
7、 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;list = 0;cycle_end = 0;word_n_down();syst
8、em("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 = '0'static void display()gotoxy(0,0)
9、;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);positionh = random(COL-2);wordh = random(2
10、6) + '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 +;display();Sleep(200);int word_one_down(
11、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_groundzposition = ' '*word_end = 1;c
12、ycle_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)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度環(huán)境污染治理與修復(fù)合同
- 2024年版建筑項(xiàng)目合同樣本
- 永磁同步電機(jī)的課程設(shè)計(jì)
- 企業(yè)建筑施工安全生產(chǎn)管理制度匯編
- 花瓶插花課程設(shè)計(jì)
- 中國(guó)石化安全風(fēng)險(xiǎn)評(píng)估指導(dǎo)意見(jiàn)
- 部編版八年級(jí)《道德與法治》上冊(cè)同步練習(xí)(全冊(cè),含答案)
- 系統(tǒng)文件監(jiān)控課程設(shè)計(jì)
- 網(wǎng)紅飲料制作課程設(shè)計(jì)
- 股市基金課程設(shè)計(jì)
- 2024年加油站的年度工作總結(jié)范文(2篇)
- 甲醇制氫生產(chǎn)裝置計(jì)算書(shū)
- T-JSREA 32-2024 電化學(xué)儲(chǔ)能電站消防驗(yàn)收規(guī)范
- 2025年上半年江蘇省常州市文廣旅局下屬事業(yè)單位招聘4人重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 2023-2024學(xué)年福建省泉州市石獅市三年級(jí)(上)期末數(shù)學(xué)試卷
- 新時(shí)代高校馬克思主義學(xué)院內(nèi)涵式發(fā)展的現(xiàn)狀和現(xiàn)實(shí)進(jìn)路
- (新版)廣電全媒體運(yùn)營(yíng)師資格認(rèn)證考試復(fù)習(xí)題庫(kù)(含答案)
- 銅工崗位安全操作規(guī)程(2篇)
- 擦玻璃安全責(zé)任合同協(xié)議書(shū)范本
- 【MOOC】隧道工程-中南大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 2024-2025學(xué)年人教PEP版英語(yǔ)五年級(jí)上冊(cè)期末試題
評(píng)論
0/150
提交評(píng)論