電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
問題
前往頁面 上一頁  1, 2
 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式高級班:DirectX、OpenGL及各種圖型函式庫
上一篇主題 :: 下一篇主題  
發表人 內容
Okerofujin
略有貢獻的成員


註冊時間: 2007-10-19
文章: 71

-40.53 果凍幣

發表發表於: 2008-8-26, PM 1:53 星期二    文章主題: 引言回覆

問題

Okerofujin 在 2018-7-5, PM 11:39 星期四 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
yag
Site Admin


註冊時間: 2007-05-02
文章: 688

2673.35 果凍幣

發表發表於: 2008-8-26, PM 2:22 星期二    文章主題: 引言回覆

HPkon 寫到:
yag 寫到:
ps1.你要治標也別用拿圖去蓋的方式,你直接把畫子彈那個用if(XD[ix].by>=80)來反向判斷不就好了。

抱歉!!!
不太明白這段話的意思!!!

我知道vector裡的東西要清掉
但因為當時清除vector內資料的程式碼一直出錯
所以想說等子彈可以消失之後再來處裡清除vector內資料的程式碼

你不是有用個surface2來畫子彈?
你改成>=80再把子彈畫出來不就等於<80時不畫了

你清掉後子彈自然就消失了
這兩個是同一件事
你怎會還分開來多做一個不必要的步驟
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Okerofujin
略有貢獻的成員


註冊時間: 2007-10-19
文章: 71

-40.53 果凍幣

發表發表於: 2008-8-28, AM 2:44 星期四    文章主題: 引言回覆

問題

Okerofujin 在 2018-7-5, PM 11:39 星期四 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
yag
Site Admin


註冊時間: 2007-05-02
文章: 688

2673.35 果凍幣

發表發表於: 2008-8-28, AM 8:41 星期四    文章主題: 引言回覆

HPkon 寫到:
http://www.badongo.com/file/11078965

拜託各位大人
請幫在下看一下程式碼
就是刪除vector內資料的程式碼一直執行失敗
可以編譯但執行時會有問題
然而在下一直找不到方法可以解決
所以想請各位大人幫忙!!!
謝謝!!!

上次忘了講了,抱歉
ix != XD.size()要改成ix < XD.size()
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Okerofujin
略有貢獻的成員


註冊時間: 2007-10-19
文章: 71

-40.53 果凍幣

發表發表於: 2008-8-28, PM 1:17 星期四    文章主題: 引言回覆

問題

Okerofujin 在 2018-7-5, PM 11:39 星期四 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
Okerofujin
略有貢獻的成員


註冊時間: 2007-10-19
文章: 71

-40.53 果凍幣

發表發表於: 2008-9-10, PM 6:26 星期三    文章主題: 引言回覆

問題

Okerofujin 在 2018-7-5, PM 11:39 星期四 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
yag
Site Admin


註冊時間: 2007-05-02
文章: 688

2673.35 果凍幣

發表發表於: 2008-9-10, PM 9:43 星期三    文章主題: 引言回覆

HPkon 寫到:
請問一下喔!!!
就是怎麼做單純的按十下按鍵就發射十顆子彈?

你的問題依然是描述得不夠清楚

如果你是指不要按一下按鍵就會跑出數顆子彈
那就在判斷按鍵的地方做個time delay的判斷
比如說,射出一顆子彈後,500ms內不可以再發射第二顆
這樣子彈就不會因為接收按鍵訊息太快而連在一起射出好幾顆

如果你是指不要按住按鍵就會連射
那就在按鍵按下以及放開時都要做個壓放的判斷
讓程式必須在按鍵放開過後再次按下時才能再發射子彈
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Okerofujin
略有貢獻的成員


註冊時間: 2007-10-19
文章: 71

-40.53 果凍幣

發表發表於: 2008-9-11, PM 9:02 星期四    文章主題: 引言回覆

問題

Okerofujin 在 2018-7-5, PM 11:39 星期四 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
kyo
偶而上來逛逛的過客


註冊時間: 2008-06-09
文章: 6

0.00 果凍幣

發表發表於: 2008-9-12, PM 1:13 星期五    文章主題: 引言回覆

yag 寫到:
如果你是指不要按住按鍵就會連射
那就在按鍵按下以及放開時都要做個壓放的判斷
讓程式必須在按鍵放開過後再次按下時才能再發射子彈


DirectX在下很久沒碰了,但是樓主現在的問題是無關DirectX的,而是判斷的問題.

我們來假設A鍵是發射子彈,我們要判定A鍵是否按下,會先透過DirectInput去讀取資料然後做判斷,如果為True,子彈就發射囉!!

OK,我們在這裡需告一個全域或靜態變數(anyway,是能保存值的變數)去存放A鍵的狀態,假設叫A_State好了,一開始的時候還沒觸發的時候其值為False,按下A鍵後A_State就變成true;判定時A鍵若是沒按下,A_State設為False,要達到您需要的效果除了確認A鍵是否按下,並對A_State的狀態去做比較.

也就是說:點放子彈時,判定式為--A鍵按下為True,A_State為False時其條件為成立.(如果A鍵壓著不放,A_State一直會是為True,也就不會再射出子彈)

應用這個也可以做聚氣攻擊的子彈,換言之--A鍵按下為True,A_State為True時便開始聚氣等等...... Very Happy

請您做做參考. Very Happy
回頂端
檢視會員個人資料 發送私人訊息
happylin
略有貢獻的成員


註冊時間: 2007-07-26
文章: 70

127.34 果凍幣

發表發表於: 2008-9-12, PM 4:25 星期五    文章主題: 引言回覆

可射出一堆子彈的問題這要是我一定不會用Vector 來存放子彈位置. 會改用一開始就就配置好一定大小空間的陣列來存放.
為什麼呢?
只要你的子彈的速度是固定的,且你的飛機速度比子彈慢. 後面發射的不可能超過前面的. 就可以用一個環狀的序列來存放.
你可以把記錄子彈位置的陣列設計成最多 100 個(一個畫面有100 個你的飛機射出去的子彈夠多了把)
用兩個索引記錄. 一個為開始, 一個為結束
有子彈的索引是開始到結束
因為子彈速度都一樣. 所以先射出去的子彈一定先消失. 因此. 只要消失後開始位置+1 就可.
當射出新子彈結束位置+1
這樣子作就可以不用去考慮vector 常常earse, 造成的copy 動作(vector earse 前面index 低index物件會copy 很多個. 如剛好earse 第一個要 copy n-1 次, n為陣列大小)
verctor push_back 可以會產生realloc memory . 當realloc memory 會發生copy 動作 一共會copy n個物件
回頂端
檢視會員個人資料 發送私人訊息
happylin
略有貢獻的成員


註冊時間: 2007-07-26
文章: 70

127.34 果凍幣

發表發表於: 2008-9-12, PM 4:39 星期五    文章主題: 引言回覆

如果子彈速度不固定. 後面的子蛋可能超過前面. 就不能用 環狀序列.
但也千萬不要用vector . 前面說過. vector 的push_back 跟earse 會照成很大的花費.

這時可用link list 可是呢, 此link list 也不要用stl 的link list
請自己寫一個用array 存放link list 每一個點資料的link list . 一開始也是一樣. 宣告固定大小的link list note array
然後 link list note 中的next node 是為array 的index

example

struct node
{
struct data; // 子彈資料
unsigned nNext; // nNext 為array 的index
};

一個大 node *nodePull=new node[100];

這樣的設計. 就可以省去用STL 的list 中每次產生一個新的子彈都要memory alloc
回頂端
檢視會員個人資料 發送私人訊息
爆爆龍
偶而上來逛逛的過客


註冊時間: 2008-10-24
文章: 6

0.00 果凍幣

發表發表於: 2008-10-24, AM 7:49 星期五    文章主題: 引言回覆

我覺得關於這個子彈問題
基於物件導向的開發 可以把子彈包裝成一個物件
由物件本身你定定的條件決定他的存在與否

另外 如果子彈這個物件在遊戲中屬於常常出現的物件
那你可以為他建立一個記憶體管理機制
每當子彈產生 到他消失時 先判斷該子彈數量是否超過
所設定的上限 超過則 delete 沒超過就將其資料清空
然後保存記憶體指針到管理機制內
待下次有子彈需要產生時 便從管理機制內取出使用
直到管理機制內無子彈時 在配置新的出來
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式高級班:DirectX、OpenGL及各種圖型函式庫 所有的時間均為 台灣時間 (GMT + 8 小時)
前往頁面 上一頁  1, 2
2頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作