看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《hirabbitt (兔子)》之銘言: : 遇到的問題: (題意請描述清楚) : 我做了一個player的類別 : 傳入x與y要定位 : 之後想把這個物件的位置存到map[x][y]之中 : 所以一開始是這樣寫的 : player *map[][]; : player *p=new player(21,4); : map[21][4]=p; : 希望得到的正確結果: : 如果可以把map[21][4]=p;寫進player類別裡 : 就不用多一行來設定map[][]了 : 程式跑出來的錯誤結果: : 因為還不太清楚怎樣寫 : 所以沒有錯誤結果 : 硬要說的話 : 我在void player(int x,int y)之中寫了 : map[x][y]=this; : 然後沒過XD : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : Dev-C++ : 謝謝 幾樣東西你要考慮. 我姑且當你那個 map 是 "地圖" 首先把地圖包裝好一個 class, 會比較容易處理. 不然你傳那個 array 又得傳 那個2D array 的 1st dimension 才行, 看起來實在很麻煩.. 第二, 你設計 Player 的時候究竟傳不傳那個地 圖, 相比起是不是要 "多" 做一次位置設定, 更 重要的是你設計上 Player 是不是要 aware of 地圖. 假設你的 Player 是要面對地圖工作的 (比如你是叫 Player 向前一步, 然後 Player 自 己修改自己在地圖上的位置之類), 這麼 Player 要存著 Map 並對著它工作就很正常了. 但如果 Player 只是被操作的東西, 它根本 不需要對著 Map 工作, 只是為了省那句 code 而把 map 傳到 ctor 那就怪怪了, 我覺得你弄 一個factory method 之類去生成 player 順便 在裡面做那堆設定看起來比較合理. 一切都視乎你的設計才能決定. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82
hirabbitt:謝謝你 我是想說 每次player移動 都要去更新他在地圖的 12/10 16:38
hirabbitt:位置 所以把地圖指標寫在player裡 可能比較方便 12/10 16:39
hirabbitt:new的時候只是放第一次的位置 12/10 16:39
hirabbitt:會這樣寫 是因為有很多player 假如對所有攻擊都搜尋所有 12/10 16:40
hirabbitt:player會比較慢(吧) 所以做一個地圖存起來 假如任何攻擊 12/10 16:41
hirabbitt:是對該點(21,4) 我只要去找那個map[21][4]指向的玩家攻 12/10 16:42
hirabbitt:擊 12/10 16:42
adrianshum:那麼 Player 本身有 refer to Map 這做法應該合理了 :) 12/10 16:52
adrianshum:只是順帶建議把 Map 包成一個 class 比較好 12/10 16:53
hirabbitt:好~ 謝謝你 12/10 17:03