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

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


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

-40.53 果凍幣

發表發表於: 2008-8-22, AM 2:19 星期五    文章主題: 問題 引言回覆

問題

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


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

2673.35 果凍幣

發表發表於: 2008-8-22, AM 7:59 星期五    文章主題: Re: 如何使用DDraw做出子彈連射的功能??? 引言回覆

HPkon 寫到:
請問一下各位大人
就是要如何用DDraw做出子彈連射的功能
在下只能做出按一次按鍵就發射一顆子彈的功能
但沒辦法做出連續按按鍵來發射多顆子彈的功能
拜託哪位會的大人敎一下吧!!!
謝謝!!!

說實在的
DDraw是已經完全被淘汰的東西
現在應該是已經沒有任何一間遊戲公司使用這個了
就算是早期有使用這個的遊戲引擎
恐怕也早就都使用D3D改寫掉了
你現在學這個,將來恐怕是不會有派上用場的一天

言歸正傳
請你先把你按一次按鍵發射一顆子彈的相關程式碼貼上來吧
直接對程式碼講解會比較快也比較清晰
而且畢竟條條大路通羅馬
想達成一樣效果有很多種方式
可並不是所有方式都符合你目前的程式架構
因此你發問時如果沒把細節貼上來
那回答了也有很大機率是牛頭不對馬嘴,白回答的

另外我個人想問一下什麼是「連續按按鍵來發射多顆子彈」?
是指按鍵一直壓著就自動連射嗎?
還是單純就指按十下發射十顆子彈?
但這跟按一下發射一顆子彈不是一樣的效果嗎?
難不成你射出一顆子彈後就再也射不出第二顆?
還請盡量詳述自己的問題
不要留下模棱兩可的空間
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
還是零分
散播福音的祭司


註冊時間: 2007-09-19
文章: 164

653.83 果凍幣

發表發表於: 2008-8-22, AM 8:33 星期五    文章主題: 引言回覆

DDraw開發的遊戲在Vista上會有問題
D3D還OK


你問的問題是指壓住按鍵連射子彈吧
會不會是你把發射子彈的程式碼寫在CALLBACK_WndProc(訊息處理函式)裡
結果只有按下的時候會執行發射
而且只執行一次

要連射的話應該把發射子彈的程式碼寫在遊戲迴圈中
然後用一個Flag標示著子彈是否處於連發狀態
從訊息處理函式得知按鍵被按下就標示Flag為連發狀態
得知按鍵放開就否定Flag為連發狀態
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
Okerofujin
略有貢獻的成員


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

-40.53 果凍幣

發表發表於: 2008-8-23, AM 3:15 星期六    文章主題: 引言回覆

問題

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


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

2673.35 果凍幣

發表發表於: 2008-8-23, AM 11:20 星期六    文章主題: 引言回覆

HPkon 寫到:
抱歉各位大人在下沒說請楚我自己的問題
我的問題是指『按鍵一直壓著就會自動連射子彈』

以下是在下的程式碼!!!
http://www.badongo.com/file/11001737

用方向鍵來移動人物
而用空白鍵來發射子彈!!!

因為你只有一組變數在存子彈的位置
所以才會一直壓著空白鍵時子彈就被你設回原點
你想連射子彈的話,畫面上就必須同時存在不同的子彈
也就是有幾個子彈你就必須有幾組座標
建議你將子彈寫成類別
並新增一個子彈的管理者類別
每當按一次空白鍵時new一個新的子彈物件出來
然後把這子彈物件丟給管理者記錄起來
並由管理者負責每個frame所有子彈物件的座標更新與死亡判斷
死亡判斷是指當子彈超出畫面外時要把子彈delete掉
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Okerofujin
略有貢獻的成員


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

-40.53 果凍幣

發表發表於: 2008-8-23, PM 2:45 星期六    文章主題: 引言回覆

問題

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


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

2673.35 果凍幣

發表發表於: 2008-8-23, PM 4:37 星期六    文章主題: 引言回覆

HPkon 寫到:
果然如此!!!
在下之前是有想到過這個方法
可是我不太清楚這方法要怎麼寫成程式碼
問一下喔!!!
管理者是指smart point嗎???

不是
管理者裡可以有smart pointer
但那只是額外的功能
跟管理者本身無關
管理者重要的只是將被管理者存一個列表並提供相關的管理方法
換句話說
你用個vector去把new出來的子彈物件全存起來
然後提供些對這群子彈物件做處理的函式
這樣就是個管理者了
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Okerofujin
略有貢獻的成員


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

-40.53 果凍幣

發表發表於: 2008-8-23, PM 5:14 星期六    文章主題: 引言回覆

問題

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


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

-40.53 果凍幣

發表發表於: 2008-8-24, PM 4:20 星期日    文章主題: 引言回覆

問題

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


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

2673.35 果凍幣

發表發表於: 2008-8-24, PM 5:17 星期日    文章主題: 引言回覆

HPkon 寫到:
謝謝各位大人的幫忙
在下做出了連射子彈的功能
但是現在有個小問題
那就是怎麼清除圖片
就是在下有個圖片在螢幕上移動
然而移動到特定位置時它必須要消失
可是在下怎麼試就是不行
懇請各位大人再幫忙一下吧!!!
謝謝!!!

如我上面所說
這種情況實在有無限多種可能
不附上程式碼或者詳細解說自己的問題的話
回答了絕多情況下都是白回答的…
比如說
你那個圖片如果是個new出來的類別物件
那delete掉就好了啊
你覺得這個答案有幫助嗎…? Confused
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
vamper
對這略感興趣的新人


註冊時間: 2007-06-23
文章: 29
來自: 台灣
18.82 果凍幣

發表發表於: 2008-8-24, PM 7:16 星期日    文章主題: 引言回覆

yag 寫到:
HPkon 寫到:
謝謝各位大人的幫忙
在下做出了連射子彈的功能
但是現在有個小問題
那就是怎麼清除圖片
就是在下有個圖片在螢幕上移動
然而移動到特定位置時它必須要消失
可是在下怎麼試就是不行
懇請各位大人再幫忙一下吧!!!
謝謝!!!

如我上面所說
這種情況實在有無限多種可能
不附上程式碼或者詳細解說自己的問題的話
回答了絕多情況下都是白回答的…
比如說
你那個圖片如果是個new出來的類別物件
那delete掉就好了啊
你覺得這個答案有幫助嗎…? Confused


恩...相當直覺XD

或者..把要消失的圖換上alpha值255的圖,然後開啟alpha test Rolling Eyes

你覺得這個答案有幫助嗎?

這玩笑還是不要開 Very Happy

要在某個特定地區消失的話(如:螢幕外面),請看一下AABB的碰撞偵測,

再針對每個bullet加上一個flag,來表示生存或死亡(就是顯示或不顯示)。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
Okerofujin
略有貢獻的成員


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

-40.53 果凍幣

發表發表於: 2008-8-24, PM 11:56 星期日    文章主題: 引言回覆

問題

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


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

2673.35 果凍幣

發表發表於: 2008-8-25, AM 8:33 星期一    文章主題: 引言回覆

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

抱歉 抱歉!!!

在下又忘記了

真的是很對不起

麻煩各位大人了!!!

話說…你想讓它消失的某個圖片到底是哪個?
我看不論是人物或子彈都有消失啊

題外話,你的程式變得好lag
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Okerofujin
略有貢獻的成員


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

-40.53 果凍幣

發表發表於: 2008-8-25, AM 9:10 星期一    文章主題: 引言回覆

問題

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


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

2673.35 果凍幣

發表發表於: 2008-8-25, PM 3:36 星期一    文章主題: 引言回覆

HPkon 寫到:
yag 寫到:

話說…你想讓它消失的某個圖片到底是哪個?
我看不論是人物或子彈都有消失啊

題外話,你的程式變得好lag

我是想讓子彈的圖片消失
我的程式會變lag
是因為在Game_Main()區塊最下面的if(XD[ix].by<80)裡
有一行程式碼是g_Display.Blt(0,0,g_pSurface1);
因為這行程式碼的關係
所以我的程式執行到後期會很lag
可是如果不加這行的話
當XD[ix].by<80時
子彈的圖片是不會消失的
所以想說是不是有其他替代的程式碼???

你加那行只是治標
請把XD裡的資料清掉
不然即使沒有這行
過久一點你一樣會lag
雖然說因為子彈的圖小
所以我測到存了1xxx個子彈都還沒lag
但不代表它量積到1萬、2萬以上還不會lag
代碼:
if(XD[ix].by<80)
{
   if(iter!=XD.end())
   {
      iter = XD.erase(iter);
   }
}
else
   iter++;

用以上的程式碼就可以清掉了
另外開頭那個iter++;已經被我拉到下面來
記得要把迴圈開頭那個iter++;刪了

ps1.你要治標也別用拿圖去蓋的方式,你直接把畫子彈那個用if(XD[ix].by>=80)來反向判斷不就好了。
ps2.既然用了iterator就沒必要使用size_type,請直接用iter來做迴圈判斷。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式高級班:DirectX、OpenGL及各種圖型函式庫 所有的時間均為 台灣時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

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


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