上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-25, PM 3:52 星期二 文章主題: 用C++可以表現出圖片或視窗的樣子嗎? |
|
|
現在寫出C++都是DOS模式下
只有純文字跟標點
那可以用C++寫的像一般的遊戲有圖片之類的嗎?
還是用的不是C++? |
|
回頂端 |
|
|
還是零分 散播福音的祭司
註冊時間: 2007-09-19 文章: 164
653.83 果凍幣
|
發表於: 2007-9-25, PM 8:24 星期二 文章主題: |
|
|
有關視窗的部分
在windows下用c++寫視窗要引入win32API
你可以看首頁最下面的"遊戲專案區"
有個空視窗架構
另外
使用GLUT搭配OpenGL也能用c++寫視窗
可以看看"遊戲程式高級班"的GLUT教學
GLUT好學多了.可是功能有限
而GLUT在windows上其實是win32API的再包裝
so....使用win32API才是最強大的 |
|
回頂端 |
|
|
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-25, PM 8:53 星期二 文章主題: |
|
|
看來似乎是很難= =~
先將c++學好好了..
---
另外再一問
如果我們現在要設定遊戲中的道具
該怎麼設計呢?
我目前的構想是每種類各宣告個int
只存入數量
如果用陣列是否會好點? |
|
回頂端 |
|
|
lsk 喜歡上這裡的冒險者
註冊時間: 2007-06-20 文章: 93
20.59 果凍幣
|
發表於: 2007-9-26, AM 4:38 星期三 文章主題: |
|
|
fire231 寫到: | 看來似乎是很難= =~
先將c++學好好了..
---
另外再一問
如果我們現在要設定遊戲中的道具
該怎麼設計呢?
我目前的構想是每種類各宣告個int
只存入數量
如果用陣列是否會好點? |
初期只有簡單的int當然ok囉!相同的道具群當然也可以用陣列,好處是你要對每一個數值做改變或比較的時候比較快。然而到了後期,如果不用物件導向的class來定義你的道具(也就是一個一個的object),或者是用比較單純的struct,程式會變得很不容易維護和擴充喔。比如說,要是你原本每個道具只有一個"數量"的屬性,有一天你需要每個道具也都可以有"使用次數"、"耐久度"、"AAA"、"BBB"...的屬性,你就只好再宣告一堆新的陣列出來...。說真的,只有小遊戲的時候,大可以這樣做啦!物件導向的好處要在上十萬行的程式裡才看得出來的。
另外也要看你說的是什麼道具啦。動作遊戲的道具和角色扮演的道具,因為出現的場合不同,可能在設計上也會有點差別。像動作遊戲的道具,如果是吃了就消失的,可能你就不用特別拿一個字串記錄道具的名字;但是在角色扮演的情況下,為了要在道具欄裡看到每個不同的道具,你就只好多存一個字串了。 |
|
回頂端 |
|
|
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-26, PM 6:00 星期三 文章主題: |
|
|
說實在的~目前我實在不知道物件導向到底是指怎樣的東西
我是用C++在寫~不過我連我有沒有用到物件導向都不清楚
我指的是角色扮演類型的道具
目前我只是使用一個值來記錄所擁有的個數
但是後來判斷是否持有然後要列出來的時候就顯得有點麻煩... |
|
回頂端 |
|
|
lsk 喜歡上這裡的冒險者
註冊時間: 2007-06-20 文章: 93
20.59 果凍幣
|
發表於: 2007-9-27, AM 3:16 星期四 文章主題: |
|
|
fire231 寫到: | 說實在的~目前我實在不知道物件導向到底是指怎樣的東西
我是用C++在寫~不過我連我有沒有用到物件導向都不清楚
我指的是角色扮演類型的道具
目前我只是使用一個值來記錄所擁有的個數
但是後來判斷是否持有然後要列出來的時候就顯得有點麻煩... |
別擔心,很少人在一個開始學就知道什麼是物件導向... 只要你沒有用到任何的class或struct,基本上你應該就是沒用到物件導向(Object oriented,以下簡稱OO)的方法了。
有一個很好解釋基本OO概念的例子。比如說,你要寫一個有關車子的軟体。首先你就要先有一個"車子"的物件:
然後,車子上面有什麼呢?假設我們會用到一個車門,一組車燈。所以我們要加上兩個成員變數(member variable)當做不同的開關:
代碼: | class car
{
bool mvCarDoorSwitch;
bool mvHeadLightSwitch; // m的意思是member,v是value,這是看個人喜好加的啦
} |
那要怎麼操作這些開關呢?我們需要成員函式。當然,你也可以直接"用"這些開關啦,不過這將違反OO的精神。細節很多書上有寫。
代碼: | class car
{
bool mvCarDoorSwitch;
bool mvHeadLightSwitch; // m的意思是member,v是value,這是看個人喜好加的啦
void SetCarDoor( bool IsOn )
{
mvCarDoorSwitch= IsOn;
}
void SetHeadLight( bool IsOn )
{
mvHeadLightSwitch = IsOn;
}
}
//然後在這邊我們可以宣告一部車,然後幫他開門:
void main()
{
car myCar;
myCar.SetCarDoor(true);
}
|
我知道我知道... 什麼門?我沒看到門啊?上面這只是很簡單的範例,所以當我們宣告一部車子,並不會真的在視覺上生出任何東西來。不過,同樣運用OO的道理,我們可以在car class裡加上一個member variable:mpMesh,是一個指向車子mesh的pointer,那麼在主程式裡的render loop裡我們就可以畫出那部車啦~~
嗯... 一邊寫一邊覺得,要說明的地方還真是不少... 不過,這邊就先打住啦,希望讓您有多了解一點點OO是什麼東西... |
|
回頂端 |
|
|
babu61509 散播福音的祭司
註冊時間: 2007-08-26 文章: 142
681.01 果凍幣
|
發表於: 2007-9-27, PM 12:48 星期四 文章主題: |
|
|
如果覺得 C++ 配 WinAPI 很難寫
可以考慮買書看有關 C++/CLI 的 東 東
簡單的說...就是可以用.NET 的函式庫,方便很多
--------------------- 給你個範例 ------------------------
用 Visual C++ 開一個 CLR的空專案,新增一個程式碼
丟下以下程式碼,就會跑出一個很空的視窗了
代碼: |
#using <System.dll>
#using <System.Windows.Forms.dll>
using namespace System;
using namespace System::Windows::Forms;
void main()
{
Form ^emptyForm = gcnew Form();
Application::Run(emptyForm);
}
|
_________________ 已經畢業了!!
babu61509 在 2007-9-27, PM 7:00 星期四 作了第 1 次修改 |
|
回頂端 |
|
|
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-27, PM 5:57 星期四 文章主題: |
|
|
那看來我使用了C++卻沒寫出物件導向了
關於類別的東西
一定要寫在程式的最上面嗎~
還是你想再哪邊新增一個類別就可以新增? |
|
回頂端 |
|
|
lsk 喜歡上這裡的冒險者
註冊時間: 2007-06-20 文章: 93
20.59 果凍幣
|
發表於: 2007-9-28, AM 7:21 星期五 文章主題: |
|
|
fire231 寫到: | 那看來我使用了C++卻沒寫出物件導向了
關於類別的東西
一定要寫在程式的最上面嗎~
還是你想再哪邊新增一個類別就可以新增? |
一般都是宣告在.h裡面,小支程式當然是可以直接全放到.cpp裡。不過全放的時候就跟其他的變數或函式一樣要注意先後的順序,先宣告過後才能用喔~ |
|
回頂端 |
|
|
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-28, PM 6:09 星期五 文章主題: |
|
|
喔喔~原來如此~感謝了 |
|
回頂端 |
|
|
|