個人任務是完成全部代碼的拼接以及遊戲主體的實現函數
遊戲主體的實現:利用鍵盤輸入的wsad
以及上下左右來控制雙方英雄的移動。當兩個英雄的座標位置在各自的四面八方的時候,雙方自動攻擊 ,自動掉血。防護塔和英雄間的機制和英雄與英雄間的機制同樣。當英雄死亡後,10s後自動復活。英雄每秒可得到20經驗,升級可得到技能。設計
void drawinfor() // 用於輸出當前英雄,防護塔的血量, { Set_mouse(10, 10); cout<<hero1[0]->name<<" : "; cout<<hero1[0]->HP<<" ";//hero1[0],hero1[1]分別爲選中的兩個英雄 Set_mouse(10, 20); cout<<hero1[1]->name<<" : "; cout<<hero1[1]->HP<<" "; Set_mouse(30, 10); cout<<p1.name<<" : "; cout<<p1.HP<<" "; Set_mouse(30, 20); cout<<p2.name<<" : "; cout<<p2.HP<<" "; }
void attack() { if((hero1[0]->x==hero1[1]->x-1)){//英雄間的攻擊 if((hero1[0]->y==hero1[0]->y+1)||(hero1[0]->y==hero1[0]->y)||(hero1[0]->y==hero1[0]->y-1)) { hero1[0]->Attack(*hero1[1]); hero1[1]->Attack(*hero1[0]); } } else if(hero1[0]->x==hero1[1]->x+1){ if((hero1[0]->y==hero1[0]->y+1)||(hero1[0]->y==hero1[0]->y)||(hero1[0]->y==hero1[0]->y-1)) { hero1[0]->Attack(*hero1[1]); hero1[1]->Attack(*hero1[0]); } } p1.attack_action(*hero1[1]);//防護塔的攻擊 p2.attack_action(*hero1[0]); s1.recovery(*hero1[1]);// 泉水的回血 s2.recovery(*hero1[0]); }
// 控制英雄的移動。 void input() { char move1=0,move2=0; if(kbhit()) { move1=getch(); if(move1>90) { move2=move1; move1=0; } } move(move1,move2); }
代碼的拼接一開始我覺得很簡單,只要互相調用來調用去就OK了。結果在你們完成任務以後,我發現函數參數和本身想的不太同樣。我才意識到當初在商討的時候並無具體到統一接口,致使我在代碼結合的時,不得不從新本身修改代碼間的接口。又是第一次作這種小項目,在這個方面花了很多時間。code