基於C語言實現的流星雨模擬課程設計

2021-09-24 22:25:07 字數 1275 閱讀 8903

一、課程設計內容及要求

程式模擬一組流星飛向地面的情景。地面用多行#來表示,流星用大寫字母不表示。程式產生一組流星(比如10個),從螢幕頂部下降飛向地面。一組流星中,每個流星的字元顏色是隨機的,下降的位置是隨機的,下降的速度也是隨機的。乙個流星下落只能去掉乙個#號,當最後一行地面有#被去掉時,程式終止。

二、設計思路

程式在下降過程中,程式必須知道流星的字元、顏色、位置、速度,因此程式需要定義以下幾個陣列變數:存放流星字元的陣列,存放流星字元顏色的陣列,存放流星行位置的陣列,存放流星列位置的陣列,存放流星下降速度的陣列

可定義二維陣列screen表示地面和天空,此陣列是乙個24行81列的字元陣列。上面的行表示天空,陣列單元的值是空格;最下面的幾行(如5行)表示地面,陣列單元的值是』#』;整個螢幕的大小是80*25,即25行80列, 為了在輸出最後一行時不換行滾屏,程式只能利用上面的24行空間。把陣列定義成81列的目的是,每行的最後字元賦值成』\0』,就可以按照字串的方式輸出每行文字了

程式首先輸出地面和天空,即輸出定義的二維陣列screen中的字串,前19行是空行,後5行是#號。這樣screen[24][81]的字元矩陣就與整個螢幕對應起來

然後隨時機產生一組流星資料,包括字元、顏色、位置和速度。速度用一次下降多少行來表示,最大的速度是4。由於要隨機產生這些資料,因此需要呼叫random函式。random函式的原型是 int random(int num); 這個函式產生乙個0—num-1之間的乙個隨機數。 流星字元可以這樣產生:random(26)+』a』; 流星字元的顏色可以這樣產生:random(16)+1;流星下降的位置可以這樣產生:random(4)+1;流星的行位置一開始都是1; 流星的列位置可以這樣產生:random(80)+1;但要保證所有流星的列位置不能相同(設計乙個演算法來判斷)

呼叫random之前,用randomize()庫函式進行初始化。 兩個庫函式都在stdlib.**件中

每個流星按照自己的速度下落,所謂的下落就是逐行移動流星字元:在下一行新的位置上顯示流星字元,在原來的位置上顯示空格以便擦除流星字元,然後再延遲等待幾十毫秒。這樣迴圈往復就構成了流星下落的動畫。 但要注意,流星的速度各不相同,而一次下落多行的流星也要逐行下落

如果流星的新位置所對應的screen的單元格的值是』#』,則表示撞到了地面。 這種情況下在流星的新位置上輸出空格,擦除#號,並且對screen相應的單元賦值為空格,流星字元也要賦值為空格,以表示流星消失

當screen[23]中任何乙個單元格是空格時,程式終止

C語言實現流星雨效果流程

目錄 序再亮眼的流星,也會一閃而過。嗨!這裡是狐狸 沒錯,我又來了,上次的 烟花 表白程式你學廢了嗎,這次我次我又來給大家支招啦,學會了 烟花 我們一起來看 流星雨 吧!直接上介面 上次忘記說了,因為我們是用c語言寫的所以是控制台程式,創造不出來介面,那怎麼辦呢,我們就要用windows的遠房表親e...

多道程式設計模擬 C語言實現

作業系統實驗 模擬多道程式設計的執行,並且比較順序執行和多道程式執行的所需要的時間。程式的生命週期為 計算 io操作 計算 結束 下面為c語言實現版本,模擬的三個程式單通道模式 多道程式設計模擬 本次為作業系統的實驗,模擬了a,b,c三個程式的多道程式的執行,比較順序執行和多道程式設計 程式執行的順...

C語言實現棧 基於陣列

棧是一種操作受限的資料結構,只允許從一段操作,而且先進後出 filo first in last out 這裡將棧的操作封裝在c語言的標頭檔案裡 實現棧的 如下 include define maxsize 10 typedef int datatype sequence stack 實現順序棧,使...