算法分析與設計課程設計_第1頁
已閱讀1頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課程名稱: 算法分析與設計課程設計 </p><p>  設計題目: 砸手機游戲 </p><p>  課程設計(大作業(yè))報告</p><p><b>  課題背景 </b></p><p>  中國民族原創(chuàng)網(wǎng)絡游戲為中國網(wǎng)絡游戲產業(yè)所做出了巨大貢獻,民

2、族原創(chuàng)網(wǎng)絡游戲已經(jīng)成為產業(yè)發(fā)展的主導力量。同樣在中國自主研發(fā)的民族原創(chuàng)網(wǎng)絡游戲已經(jīng)真正成為中國游戲市場的主導力量。 </p><p>  網(wǎng)絡游戲是通過信息網(wǎng)絡傳播和實現(xiàn)的互動娛樂形式,是一種網(wǎng)絡與文化相結合的產業(yè)。近年來,網(wǎng)絡文化市場發(fā)展很快,隨著互聯(lián)網(wǎng)的迅速普及、寬帶的接入社區(qū)和家庭,我國網(wǎng)絡游戲市場發(fā)展迅速并進入了一個高速增長期,并已經(jīng)創(chuàng)造了較大的產值,帶動了相關產業(yè)的發(fā)展,對促進我國網(wǎng)絡經(jīng)濟和娛

3、樂業(yè)的發(fā)展、豐富互聯(lián)網(wǎng)時代人民群眾的文化娛樂生活起到了積極作用。</p><p><b>  課程設計的目的</b></p><p>  學習算法的最終目的是解決實際的應用問題,特別是非數(shù)值計算類型的應用問題。課程設計要求同學獨立完成一個較為完整的應用需求分析,在完成設計和編程大型作業(yè)的過程中,深化對算法課程中基本概念、理論和方法的理解;訓練綜合運用所學知識處理實際問

4、題的能力,強化面向對象的程序設計理念;使同學的程序設計與調試水平有一個明顯的提高。 經(jīng)過查找參考資料、技術手冊和撰寫文檔的實踐,進一步培養(yǎng)軟件工程師的綜合素質。 課程設計所安排的題目,在難度和深度方面都大于課內的上機訓練。程序作業(yè)以Java或其他高級語言完成,配有圖形界面。</p><p><b>  題目分析</b></p><p>  以砸壞一個手機設計的游戲,為

5、無限關卡,每砸壞一個手機,可以活動一定的獎金,同時隨機獲得道具。手機質量越來越好(手機的血越來越多,需要不斷購買具有更大傷害力的道具來提高砸壞手機的速度)。移動電話使得大的改變我們的生活,它帶來了很多方便,也產生了許多負面的影響。破壞手機,摧殘手機,使用各種道具破壞手機,體驗游戲樂趣。</p><p><b>  程序設計</b></p><p><b> 

6、 1、數(shù)據(jù)結構設計</b></p><p>  double shengmingli=1000;//定義初始生命力 </p><p>  int gongjili=10;//定義初始攻擊力 </p><p>  int fangyuli=6;//定義初始防御力 </p><p>  int money=1000;//定義初始金錢數(shù)

7、量 </p><p>  bool tongguan;//定義是否通關判定 </p><p>  void daoju();//定義工具函數(shù) </p><p>  void xueliang();//定義血量函數(shù) </p><p>  void shouji1();//定義手機1函數(shù) </p><p>  void s

8、houji2();//定義手機2函數(shù) </p><p><b>  2、函數(shù)設計</b></p><p><b>  (1) 主函數(shù)</b></p><p>  main()允許用戶通過菜單進行功能選擇,使用相應的功能代碼來調用對應的函數(shù)功能。</p><p><b>  其他各功能函數(shù)&

9、lt;/b></p><p>  void daoju() :道具函數(shù),定義了一些道具,有錘子、木棍、刀、電鋸、搶等,然后可以進行購買任意道具。定義了這些道具的攻擊力,價格越高的攻擊力越高。</p><p>  void xueliang():血量函數(shù),定義了不同的血量有不同的價格和生命值,可以購買任意血量進行攻擊。</p><p>  void shouji

10、1():手機1函數(shù),定義手機1生命值,反攻擊力,防御力,以及打碎手機1獲得的金幣,并賦予初值,利用攻擊計算公式 :殺傷=攻擊力*2-防御力 計算出點生命并判斷出手機1是否被砸壞了。</p><p>  void shouji2():手機2函數(shù),定義手機2生命值,反攻擊力,防御力,以及打碎手機1獲得的金幣,并賦予初值,利用攻擊計算公式 :殺傷=攻擊力*2-防御力 計算出點生命并判斷出手機2是否被砸壞了。</p

11、><p>  3、砸手機游戲算法思想:</p><p>  本游戲有六個菜單選項分別是工具、血量、砸手機1、砸手機2、退出游戲、顯示狀態(tài)。</p><p>  第一、在工具菜單里面首先定義一些道具,有錘子、木棍、刀、電鋸、搶等,然后購買這些道具。定義這些道具的攻擊力,價格越高的攻擊力越高,在工具函數(shù)里面流程如下:</p><p>  第二、為這六

12、個道具購買血量,有1、2、3號補血藥。1號補血藥需要10個金幣,補給200生命值,2號補血藥50金幣,補給1000生命值,3號補血藥100個金幣,補給2200生命值。</p><p>  第三、進入砸手機,選擇道具對手機進行攻擊,如果手機的生命值大于0或選擇動作1對手機攻擊,否則,手機已被打碎并獲得一定的金幣,退出返回主菜單。</p><p>  第四、主菜單選項,如果是5直接退出游戲,選

13、6查看自己的狀態(tài),否則,進入其他4個菜單選項,進行游戲。</p><p><b>  結果分析</b></p><p>  砸手機游戲結果如下,但是我們只是對砸手機游戲進行了算法的分許與設計,并只會其中一部分數(shù)據(jù)的編寫,下列的程序是由其它程序改變而來的,只能夠用C++來實現(xiàn)一部分要求,不能夠用界面來實現(xiàn)。</p><p><b>  

14、實驗總結及心得體會</b></p><p>  我們進行了為期一周的算法課程設計。通過這次課程設計,我們拓寬了知識面,鍛煉了能力,綜合素質得到較大提高。</p><p>  本次課程設計,使我們對從砸手機游戲設計方案到設計的基本過程的設計方法、步驟、思路、有一定的了解與認識。在課程設計過程中,我們基本能按照規(guī)定的程序進行,先對砸手機游戲進行了解,然后再對砸手機游戲進行算法分析與

15、設計,最后通過改變類似程序實現(xiàn)了砸手機游戲,很遺憾的是界面沒有弄出來。</p><p>  課程設計達到了專業(yè)學習的預期目的,課程設計之后,我們普遍感到不僅實際動手能力有所提高,更重要的是進一步激發(fā)了我們對專業(yè)知識的興趣,并能夠結合實際存在的問題在專業(yè)領域內進行更深入的學習。實際能力的培養(yǎng)至關重要,而這種實際能力的培養(yǎng)單靠課堂教學是遠遠不夠的,必須從課堂走向實踐。通過課程設計,讓我們找出自身狀況與實際需要的差距,

16、并在以后的學習期間及時補充相關知識,為求職與正式工作做好充分的知識、能力準備,從而縮短從校園走向社會的心理轉型期。</p><p><b>  代碼</b></p><p>  #include <iostream> </p><p>  using namespace std; </p><p>  dou

17、ble shengmingli=1000;//定義主角初始生命力 </p><p>  int gongjili=10;//定義主角初始攻擊力 </p><p>  int fangyuli=6;//定義主角初始防御力 </p><p>  int money=1000;//定義主角初始金錢數(shù)量 </p><p>  bool tonggua

18、n;//定義是否通關判定 </p><p>  void daoju();//定義道具函數(shù) </p><p>  void xueliang();//定義血量函數(shù) </p><p>  void shouji1();//定義手機1函數(shù) </p><p>  void shouji2();//定義手機2函數(shù) </p><p&

19、gt;  int main() </p><p><b>  { </b></p><p>  cout<<"歡迎你開始玩砸手機小游戲!\n"; </p><p>  cout<<"手機店\n"; </p><p>  cout<<"

20、一個手機店。"<<endl; </p><p>  int shoujidian;//定義選擇項目 </p><p>  cout<<"1.道具"<<endl; </p><p>  cout<<"2.血量"<<endl; </p><

21、;p>  cout<<"3.去砸手機1"<<endl; </p><p>  cout<<"4.去砸手機2"<<endl; </p><p>  cout<<"5.退出游戲"<<endl; </p><p>  cout<&

22、lt;"6.顯示你的狀態(tài)"<<endl; </p><p>  cin>>shoujidian; </p><p>  while(shoujidian!=5)//輸入5時退出游戲 </p><p><b>  { </b></p><p>  if(tongguan) &l

23、t;/p><p><b>  { </b></p><p>  cout<<"恭喜通關!"<<endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p&g

24、t;  if(shoujidian==6)//輸入6可檢測自己的狀態(tài) </p><p><b>  { </b></p><p>  cout<<"你的生命力:"<<shengmingli<<endl; </p><p>  cout<<"你的攻擊力:"&l

25、t;<gongjili<<endl; </p><p>  cout<<"你的防御力:"<<fangyuli<<endl; </p><p>  cout<<"你擁有的錢:"<<money<<endl; </p><p><b>

26、;  } </b></p><p><b>  else </b></p><p>  switch(shoujidian) </p><p><b>  { </b></p><p>  case 1 : daoju();break; </p><p>  ca

27、se 2 : xueliang();break; </p><p>  case 3 : shouji1();break; </p><p>  case 4 : shouji2();break; </p><p>  default : cout<<"請不要亂選!"<<endl;break; </p>&l

28、t;p><b>  } </b></p><p>  cin>>shoujidian; </p><p><b>  } </b></p><p>  if(shoujidian==5) </p><p><b>  { </b></p><

29、;p>  cout<<"正在退出游戲……"<<endl; </p><p><b>  } </b></p><p>  cin.get(); </p><p>  cin.get(); </p><p>  return 0; </p><p>

30、<b>  } </b></p><p>  void daoju() </p><p><b>  { </b></p><p>  cout<<"歡迎來到道具!"<<endl; </p><p>  cout<<"1、錘子(10M

31、加2攻擊力)"<<endl; </p><p>  cout<<"2、木棍(80M加20攻擊力)"<<endl; </p><p>  cout<<"3、刀(140M加40攻擊力)"<<endl; </p><p>  cout<<"4

32、、雙節(jié)棍(200M加60攻擊力)"<<endl; </p><p>  cout<<"5、電鋸(240M加80攻擊力)"<<endl; </p><p>  cout<<"6、槍(280M加100攻擊力)"<<endl; </p><p>  cout<

33、;<"7、離開道具"<<endl; </p><p>  int daoju; </p><p>  cin>>daoju; </p><p>  while(daoju!=7)//輸入7時結束函數(shù) </p><p><b>  { </b></p><

34、;p>  switch(daoju) </p><p><b>  { </b></p><p>  case 1 : if(money<10) </p><p>  cout<<"你的錢不夠"<<endl;//錢不夠時返回Flase </p><p><b&

35、gt;  else </b></p><p>  cout<<"購買成功!"<<endl;//錢足夠時返回True </p><p>  gongjili+=2; </p><p>  money-=10; </p><p><b>  break; </b>&l

36、t;/p><p>  case 2 : if(money<80) </p><p>  cout<<"你的錢不夠"<<endl; </p><p><b>  else </b></p><p>  cout<<"購買成功!"<<

37、endl; </p><p>  gongjili+=20; </p><p>  money-=80; </p><p><b>  break; </b></p><p>  case 3 : if(money<140) </p><p>  cout<<"你的錢不

38、夠"<<endl; </p><p><b>  else </b></p><p>  cout<<"購買成功!"<<endl; </p><p>  gongjili+=40; </p><p>  money-=140; </p>&

39、lt;p><b>  break; </b></p><p>  case 4 : if(money<200) </p><p>  cout<<"你的錢不夠"<<endl; </p><p><b>  else </b></p><p>

40、  cout<<"購買成功!"<<endl; </p><p>  gongjili+=60; </p><p>  money-=200; </p><p><b>  break; </b></p><p>  case 5 : if(money<240) </

41、p><p>  cout<<"你的錢不夠"<<endl; </p><p><b>  else </b></p><p>  cout<<"購買成功!"<<endl; </p><p>  gongjili+=80; </p&g

42、t;<p>  money-=240; </p><p><b>  break; </b></p><p>  case 6 : if(money<280) </p><p>  cout<<"你的錢不夠"<<endl; </p><p><b>

43、;  else </b></p><p>  cout<<"購買成功!"<<endl; </p><p>  gongjili+=100; </p><p>  money-=280; </p><p><b>  break; </b></p>&

44、lt;p>  default : cout<<"無"<<endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>  cin>>daoju; </p><p><b

45、>  } </b></p><p>  if(daoju==7) </p><p>  { //返回main()主函數(shù) </p><p>  cout<<"歡迎下次再來!"<<endl; </p><p>  cout<<"歡迎你開始玩砸手機小游戲!\n&q

46、uot;; </p><p>  cout<<"手機店\n"; </p><p>  cout<<"一個手機店。\n血量"<<endl; </p><p>  cout<<"道具\n"; </p><p>  cout<&l

47、t;"1.道具"<<endl; </p><p>  cout<<"2.血量"<<endl; </p><p>  cout<<"3.去砸手機1"<<endl; </p><p>  cout<<"4.去砸手機2"&

48、lt;<endl; </p><p>  cout<<"5.退出游戲"<<endl; </p><p>  cout<<"6.顯示你的狀態(tài)"<<endl; </p><p><b>  } </b></p><p><b

49、>  } </b></p><p>  void xueliang() </p><p><b>  { </b></p><p>  cout<<"歡迎來到血量!"<<endl; </p><p>  cout<<"1、買1號補血藥(

50、10M加200生命值)"<<endl; </p><p>  cout<<"2、買2號補血藥(50M加1000生命值)"<<endl; </p><p>  cout<<"3、買3號補血藥(100M加2200生命值)"<<endl; </p><p>  c

51、out<<"4、離開血量"<<endl; </p><p>  int xueliang; </p><p>  cin>>xueliang; </p><p>  while(xueliang!=4) </p><p><b>  { </b></p>

52、<p>  switch(xueliang) </p><p><b>  { </b></p><p>  case 1 : if(money<10) </p><p>  cout<<"你的錢不夠"<<endl; </p><p><b>  

53、else </b></p><p>  cout<<"購買成功!"<<endl; </p><p>  shengmingli+=200; </p><p>  money-=10; </p><p><b>  break; </b></p>&l

54、t;p>  case 2 : if(money<50) </p><p>  cout<<"你的錢不夠"<<endl; </p><p><b>  else </b></p><p>  cout<<"購買成功!"<<endl; </p

55、><p>  shengmingli+=1000; </p><p>  money-=50; </p><p><b>  break; </b></p><p>  case 3 : if(money<100) </p><p>  cout<<"你的錢不夠"

56、<<endl; </p><p><b>  else </b></p><p>  cout<<"購買成功!"<<endl; </p><p>  shengmingli+=2200; </p><p>  money-=100; </p><

57、;p><b>  break; </b></p><p>  default : cout<<"無"<<endl; </p><p><b>  break; </b></p><p><b>  } </b></p><p>

58、  cin>>xueliang; </p><p><b>  } </b></p><p>  if(xueliang==4) </p><p><b>  { </b></p><p>  cout<<"歡迎下次再來!"<<endl;

59、 </p><p>  cout<<"歡迎你開始玩砸手機小游戲!\n"; </p><p>  cout<<"手機店\n"; </p><p>  cout<<"一個手機店。\n血量"<<endl; </p><p>  cout

60、<<"道具\n"; </p><p>  cout<<"1.道具"<<endl; </p><p>  cout<<"2.血量"<<endl; </p><p>  cout<<"3.去砸手機1"<<e

61、ndl; </p><p>  cout<<"4.去砸手機2"<<endl; </p><p>  cout<<"5.退出游戲"<<endl; </p><p>  cout<<"6.顯示你的狀態(tài)"<<endl; </p>

62、<p><b>  } </b></p><p><b>  } </b></p><p>  /*這里是兩個戰(zhàn)斗函數(shù),使用指針來處理.避免造成內存崩潰.*/ </p><p>  void shouji1() </p><p><b>  { </b></

63、p><p>  cout<<"開始砸手機1?。?!"<<endl; </p><p>  double* g_shengmingli=new double;//定義手機1生命值 </p><p>  int* g_gongjili=new int;//定義手機1的反攻擊力 </p><p>  int*

64、g_fangyuli=new int;//定義手機1防御力 </p><p>  int* g_money=new int;//定義打碎手機1獲得的金幣</p><p>  *g_shengmingli=100; </p><p>  *g_gongjili=5; </p><p>  *g_fangyuli=3; </p>&

65、lt;p>  *g_money=50; </p><p>  double* tongji1=new double;//用來計算道具對手機1的殺傷力 </p><p>  double* tongji2=new double;//用來計算手機1對道具的殺傷力 </p><p>  *tongji1=0; </p><p>  *tong

66、ji2=0; </p><p>  int* huihe=new int;//定義回合數(shù) </p><p>  *huihe=1; </p><p>  cout<<"你開始對手機1進行攻擊!"<<endl; </p><p>  int* xuanze=new int; </p>&

67、lt;p><b>  /* </b></p><p><b>  攻擊計算公式 </b></p><p>  殺傷=攻擊力*2-防御力 </p><p>  玩家每回合可以選擇攻擊</p><p><b>  */ </b></p><p>  w

68、hile((*g_shengmingli)>0 && shengmingli>0 && (*xuanze)!=2) </p><p><b>  { </b></p><p>  cout<<"現(xiàn)在是"<<"第"<<*huihe<<&qu

69、ot;回合!"<<endl; </p><p>  cout<<"請選擇你的動作:\n"; </p><p>  cout<<"1.攻擊\n"; </p><p>  cin>>*xuanze; </p><p>  switch((*xuanz

70、e)) </p><p><b>  { </b></p><p>  case 1 : cout<<"你對手機1發(fā)動了攻擊!"<<endl; </p><p>  *g_shengmingli-=gongjili*2-(*g_fangyuli); </p><p>  *to

71、ngji1=gongjili*2-(*g_fangyuli); </p><p>  cout<<"你打掉了手機1"<<*tongji1<<"的生命!"<<endl; </p><p>  cout<<"手機1還剩"<<(*g_shengmingli)-(*t

72、ongji1)<<"點生命"<<endl; </p><p>  shengmingli-=(*g_gongjili)*2-fangyuli; </p><p>  *tongji2=(*g_gongjili)*2-fangyuli; </p><p><b>  } </b></p>

73、<p>  (*huihe)++; </p><p><b>  } </b></p><p>  if((*g_shengmingli)<=0) </p><p>  {//砸壞手機后的返回 </p><p>  cout<<"手機1砸壞了!你真厲害?。?!"<<

74、;endl; </p><p>  money+=(*g_money); </p><p>  cout<<"歡迎你開始玩砸手機小游戲!\n"; </p><p>  cout<<"手機店\n"; </p><p>  cout<<"一個手機店。\n血量&

75、quot;<<endl; </p><p>  cout<<"道具\n"; </p><p>  cout<<"1.道具"<<endl; </p><p>  cout<<"2.血量"<<endl; </p><

76、p>  cout<<"3.去砸手機1"<<endl; </p><p>  cout<<"4.去砸手機2"<<endl; </p><p>  cout<<"5.退出游戲"<<endl; </p><p>  cout<&

77、lt;"6.顯示你的狀態(tài)"<<endl; </p><p><b>  } </b></p><p>  delete g_shengmingli; </p><p>  delete g_gongjili; </p><p>  delete g_fangyuli; </p>

78、;<p>  delete g_money; </p><p>  delete tongji1; </p><p>  delete tongji2; </p><p><b>  } </b></p><p><b>  /* </b></p><p>  

79、設置均與void shouji1()函數(shù)相同 </p><p><b>  */ </b></p><p>  void shouji2() </p><p><b>  { </b></p><p>  cout<<"開始砸手機2?。?!"<<endl;

80、</p><p>  double* g_shengmingli=new double; </p><p>  int* g_gongjili=new int; </p><p>  int* g_fangyuli=new int; </p><p>  *g_shengmingli=3600; </p><p>  

81、*g_gongjili=500; </p><p>  *g_fangyuli=500; </p><p>  double* tongji1=new double; </p><p>  double* tongji2=new double; </p><p>  *tongji1=0; </p><p>  *to

82、ngji2=0; </p><p>  int* huihe=new int; </p><p>  *huihe=1; </p><p>  cout<<"你開始對手機2進行攻擊!"<<endl; </p><p>  int* xuanze=new int; </p><p&

83、gt;  while((*g_shengmingli)>0 && shengmingli>0 && (*xuanze)!=2) </p><p><b>  { </b></p><p>  cout<<"現(xiàn)在是"<<"第"<<*huihe<&

84、lt;"回合!"<<endl; </p><p>  cout<<"請選擇你的動作:\n"; </p><p>  cout<<"1.攻擊\n"; </p><p>  cin>>*xuanze; </p><p>  switch((

85、*xuanze)) </p><p><b>  { </b></p><p>  case 1 : cout<<"你對手機2發(fā)動了攻擊!"<<endl; </p><p>  *g_shengmingli-=gongjili*2-(*g_fangyuli); </p><p>

86、;  *tongji1=gongjili*2-(*g_fangyuli); </p><p>  cout<<"你打掉了手機2"<<*tongji1<<"的生命!"<<endl; </p><p>  cout<<"手機2還剩"<<(*g_shengmin

87、gli)-(*tongji1)<<"點生命"<<endl; </p><p>  shengmingli-=(*g_gongjili)*2-fangyuli; </p><p>  *tongji2=(*g_gongjili)*2-fangyuli;</p><p><b>  } </b></

88、p><p>  (*huihe)++; </p><p><b>  } </b></p><p>  if((*g_shengmingli)<=0) </p><p><b>  { </b></p><p>  cout<<"手機2砸壞了!你真厲害

89、?。?!"<<endl; </p><p>  tongguan=true; </p><p>  cout<<"歡迎你開始玩砸手機小游戲!\n"; </p><p>  cout<<"手機店\n"; </p><p>  cout<<"

90、;一個手機店。\n血量"<<endl; </p><p>  cout<<"道具\n"; </p><p>  cout<<"1.道具"<<endl; </p><p>  cout<<"2.血量"<<endl; </

91、p><p>  cout<<"3.去砸手機1"<<endl; </p><p>  cout<<"4.去砸手機2"<<endl; </p><p>  cout<<"5.退出游戲"<<endl; </p><p>

92、  cout<<"6.顯示你的狀態(tài)"<<endl; </p><p><b>  } </b></p><p>  delete g_shengmingli; </p><p>  delete g_gongjili; </p><p>  delete g_fangyuli

溫馨提示

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

評論

0/150

提交評論