namefight姓名大作戰制作說明_第1頁
namefight姓名大作戰制作說明_第2頁
namefight姓名大作戰制作說明_第3頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、NameFight名字大作戰C+制作說明一、題目:名字大作戰二、目的與要求1. 目的通過編寫該程序,培養學生綜合利用C+語言進行程序設計的能力,加強函數的運用及學生對軟件工程方法的初步認識,提高軟件系統分析能力和程序文檔建立、歸納總結的能力,培養學生利用系 統提供的標準函數及典型算法進行設計,并對Win dows平臺下的控制臺進行深入的了解。2. 基本要求(1)要求用C+語言編程,在 Visual C+環境下調試完成;(2)要求劃分功能模塊,各個功能分別使用函數來完成;(3)源代碼程序要求必要的注釋。三、設計方法和基本原理1. 課題功能描述名字大作戰曾經在網絡上流行過一段時間,就是輸入兩個人的

2、名字,然后顯示兩個人的作戰過程。當某一方沒血了( hp歸0),游戲結束,顯示勝利的一方。基本要求中不需要進行顏色控制。2問題詳細描述題目詳細要求如下:1. 兩個“名字”輪流出招,當一方的hp小于等于0時輸出比賽結果。2. 招術的要求:每一個招術發動后應該有四種情況:擊中對方、暴擊(雙倍傷害)、被招架、被反擊,所以每個招式首先要有五個文字描述:發動招式的描述,擊中對方的描述,暴擊對方的描述,被對方招架的描 述和被對方反擊的描述。(提示:因為招術描述中會出現參加作戰的“名字”,所以需要把名字插入到字符串常量當中,可以考慮使用這種方法,例如將某招式的發動描述設計為如下的字符串:"只見$1突

3、然從背后取出一物放到 $2的面前,竟然是個 MP4里面正在播放著$3。n",然后當輸出時用發動方的“名字”替換“$1”,防守方的名字替換“ $2” ,招術的名稱替換“ $3”。)而且還要設計招術的“成功率”,“暴擊率”,“反擊率”。每個招術發動的過程是:通過取隨機數 來計算是否成功,成功的話再取隨機數計算是否暴擊,若發動沒有成功則取隨機數計算是否被反擊。 也就是說一個招術發動有四種情況:“擊中”,“暴擊”,“被反擊”,“被招架”。所以要為招術設計“成功率”,“暴擊率”,“反擊率”。此外還要設計每個招式的“基本傷害值”和“被反擊傷害值”。若發動成功則對方 hp要減去“基本傷害值”,若發

4、動暴擊成功則減去 2倍的“基本傷害值”,若被反擊則發動方 hp減去“被反擊傷害 值”。至少要設計三個不同的招式。每次出招先輸出招式發動描述, 然后輸出招式發動結果 (擊中、暴擊、被招架和被反擊中的一種)。 然后再輸出兩個“名字”的 hp值和對應于hp值的描述文字。描述文字可分為 5檔:例如當hp多于 60% 少于80%寸可以輸出:3問題的解決方案:可以考慮將招術定義為結構體,三個招式定義為結構體數組,以方便程序設計。四、主要技術問題的描述本題目基本要求中沒有對顏色控制的要求,下面的顏色控制相關內容屬于創新內容中需要的一些 基礎知識。1. 控制臺的基本概念控制臺(Con sole )是一個基于字

5、符界面的交互平臺。Win dows里面自帶的控制臺同樣也是一個基于字符界面的交互平臺。我們本學期實驗所編寫的程序都是基于控制臺的C+程序。在默認設置下, Windows的控制臺能夠顯示 25行80列的字符,我們可以把控制臺看作是一個有 25行80列的一個矩陣,每個矩陣的元素能夠顯示一個標準的ASCII字符(漢字需要兩個元素來顯示)2. 控制臺的顏色控制控制臺中的每個元素可以使用獨立的前景色和背景色。在Win dows的控制臺中可以使用的顏色有16種,見下圖:上圖中的顏色編碼自左至右依次是0至15,0為黑色,15為白色。前景色和背景色都只有這16種顏色。3. 控制臺顏色的控制時機因為控制臺不能更

6、改已經輸出字符的顏色設置,所以要想更改輸出的字符的顏色設置,必須在輸 出之前更改控制臺的顏色配置。要改變控制臺的顏色設置需要調用兩個Windows操作系統的API函數。GetStdHandle函數用來獲得當前控制臺的句柄,用SetCo nsoleTextAttribute函數來改變選中控制臺的顏色控制。這兩個函數的聲明存在于<windows.h>文件中。可以將這兩個調用圭寸裝到SetColor函數中:#include <vindows. h>void SetColor (unsigned short Fore匚cd匸二":uns 1 町ned whort Ba

7、ckGrourid.Color= Zi)HANDLE hCon=Get St dEandle (STD_OUTFin_liAiroLE):Set C cms o 1 e T ext At t r ibut e (hC ooi, For eCo lor+BackG r oundColor 0 jC 10):例如:如果需要改變當前的控制臺輸出顏色為白底紅字,則可以書寫如下代碼:#include h>wxd 0i/L2d) is the= GQlgr of fox&grQund. /15(vrhite) is the coloi; of bickground SetC?lcx (12,

8、15);Gout << "Hello World" « ondl;1這段代碼就可以輸出白底紅字的“Hello World ”字符串了。4. cout的緩沖區刷新cout對象默認情況下并不會將用戶的輸出送到控制臺,而是暫時存在輸出緩沖區里面,而控制臺的顏色控制只在向控制臺輸出的時候才生效。所以只有強制刷新輸出緩沖區的時候顏色設置才會生 效。例如我們要輸出兩個字符A,第一個是白底紅字,第二個是紅底白字,那么下面的代碼:include <io5tre3ju+ h>void mainO (/12 (red) is the color cf fore

9、ground./15 (white) is the color of backgrcund. SetColor (12,15):out « '以/15(vhit e) is theof £?rZ/12 (red) is the c?1qxbackgfowidSe-tColordGj 12);court « '止'輸出的將是兩個紅底白字的字符“A”。因為雖然輸出第一個“ A”之前把控制臺設置為白底紅字,但是此時并沒有把第一個“A”輸出到控制臺,而只是存放于輸出緩沖區里面。然后控制臺的顏色被設置為紅底白字,然后輸出“A”。最終程序結束的時候自動

10、強制刷新控制臺,把輸出緩沖區里面的兩個字符“ A”都發送給控制臺,因為此時的控制臺顏色是紅底白字,所以兩個“A”都被顯示為紅底白字。為了強制刷新控制臺,可以使用endl和flush兩個操作符,endl表示先換行然后強制刷新,flush 表示直接強制刷新而不換行,所以上面的代碼只要在每個cout語句的最后加上“ << flush ”就可以把輸出兩個不同顏色配置的字符“ A” 了(參看下面的代碼)。#ijiclude <io51 Tuajiu h>I/2 (red) is ihe color of foreground.15 (xirhite) is the color o

11、f bajckgrcurid. SetColorC12, 15J :Gout « * A* f lusk :H15 (vhit&) is the color of f or&erourid, /12 (red) is the color of background.SetColor(15,12):cout << ' AT << flush :5. 延時函數為了使程序的輸出不會因為過快而看不清,可使用延時函數:Sleep(n) 。Sleep函數(注意第一個S是大寫)功能是使程序暫停n毫秒。要使用Sleep函數必須包含頭文件 windows.h。6. 隨機函數隨機函數名為rand(),使用時必須包含頭文件stdlib.h 。五、創新要求在基本要求達到后,進行創新設計:1. 顏色控制,不同內容的輸出顏色不一樣。2. 更為復雜的“名字”和“招術”設計,例如“名字”不僅包含hp,還有類似“健壯”、“敏捷”、 “智力”等屬性,而招術的發動傷害及成功率等和雙方的屬性相關。六、課程設計的考核方式及評分方法1. 考核方式(1)學生要提交書面課程設計報告(A4紙打印);并將設計報告的電子文檔、.cpp源文件和.h頭文件放到一個文件夾里上傳到所對應班級的學

溫馨提示

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

評論

0/150

提交評論