Re: [問題] 想請教如何做出這樣的遊戲
※ 引述《IAMTCH (新的挑戰)》之銘言:
: 如題,因為本身想試著做遊戲,於是前陣子去詢問學校的老師,
: 老師便給了我一個方向叫我試試看,但是我本身在這方面沒什麼
: 經驗,因此在這邊請教各位,謝謝。
: 遊戲內容:
: 1.回合制尋寶遊戲:玩家和電腦各有同等數量的棋子n(n為遊戲開始時設定),
: 每一回合中,雙方輪流用一個棋子移動一步。棋子位置由
: 遊戲開始後亂數放置於地圖之中。
以我那老舊的笨邏輯來想......
先建立一個陣列,例如 { 0, 0, 0, 0, 0, 0, 各位觀眾!看~~6 x 6!
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 噓 噓 噓
0, 0, 0, 0, 0, 0, 噓 噓
0, 0, 0, 0, 0, 0, 噓 噓
0, 0, 0, 0, 0, 0 }
我是這樣想的...... 0 代表的是零,沒有東西的位置。
然後再將寶物放進去,例如代表寶物的是 2,
然後就把上面陣列看是要幾個寶物隨機放進去,把原本的 0 變成 2 。
(至於要怎樣隨機...... 若12寶物 / (6*6) = 1/3 出現機率,看程式有啥隨機函式能用)
然後放棋子,怎麼放同上,只是要記得減機率的分母,至於要先放棋子再寶物隨您,
或甚至[棋子+寶物]放不放一個隨機,放哪種在一個隨機也都好 ╮( ̄﹏ ̄)╭
: 2.運作方式:在方格地圖中進行,地圖裡隱藏r個寶物(r為遊戲開始時設定),
: 一個棋子只能拿一個寶物。因此遊戲的關鍵在於,當棋子
: 遇到同伴時(即在相臨方格接觸時)能夠交換資料,得知其
: 他寶物地點,然後讓身上沒寶物的棋子去爭取。
「...........」 現在才看到寫說隱藏r個寶物 @#$%^&*
喔,前面忘了說,棋子啊...... 看要怎樣定,我大概是玩家定 1,電腦定 -1
要移動時,是先選要動哪個,選定時以判定大於零...... 到這邊我後悔啦~~
我希望玩家 定成 3 電腦定成 -3 ...... 不喜歡?咬我啊 ╮(╯▽╰)╭
然後玩家選定時判定是否大於 2
(其實當初選判定是否等於 1 也是可以啦~~人真是善變的動物......|||)
是的話,就準備移動囉~~
我大概會先準備讀入 4 個值備用,也就是選定棋子的上下左右座標的數值。
至於是哪個座標?也許您可以固定初始座標 ( x, y ),當往哪邊就加減 x 或 y
哪邊當原點就看個人囉,不過建議是四個角啦,這樣另一邊多遠也比較好算。6 x 6 嘛
然後移動時確認是可移動位置才給移動,例如加絕對值後小於 3 (有絕對值這功能吧?)
(此時...... 想起有人說過乘除是蠻耗時間的東西...... (心虛)喔,再說啦)
此時!我又後悔啦 XDDDDD 我希望~~空地座標的值是 1 (囧rz)
然後~~移動過去是將目標座標的值 *= 移動的物件
例如 移動的玩家棋子為 3,目標空地值是 1,移過去後 1 *= 3,所以就變 3 囉;
但若 移動的玩家棋子為 3,目標寶物值是 2,移過去後 2 *= 3,所以是變 6 的。
這下您可以了解我方才所下的伏筆了吧 (謎之聲:真爛的方法) 囧rz
而電腦是 -3,所以都是負的...... 至於這邏輯好不好...... 亂想的,天知道 囧
而離開的原地,通通就都放空地 1 囉~~
至於您說的交換資料?! 這方面就同前面回文,我是假設不存在的啦 (懶)
如是假設可轉東西...... ( a 把寶物轉到 b 上),
那就 b = a,a = 3 囉 (反正玩家就是 3 嘛) (←不過要寫電腦就要改囉)
不過我可能會把轉東西不列為[一步],為什麼?單純覺得這樣應該比較好寫吧... |||
好像這部份就完了...... 嗯,換下部份。
: 3.勝利條件:一方先取得過半的寶物數量即獲勝。
: 不限製作語言,不過老師是提議我用Visual C++,但我本身比較熟flash(但也
: 不到做遊戲的水準),因此希望各位高手能夠建議我,這樣的遊戲該怎麼學習製
: 作比較好,謝謝。
勝利條件嘛~~就一個個座標判斷大於 5 (或等於 6) 的有幾個,有沒有過半囉
判斷就設在每次動作結束時呼叫的函式,用迴圈從頭掃到尾
裡面用 if 或啥類似的判斷說玩家有寶物的就哪個值++,電腦有寶物就另個值++
當哪個值達一半則宣佈哪邊贏...... 就這樣,ptt的歷史又翻過了一頁。
函式名稱 ()
{
float player = 0 ; // 這只是宣告兩個存數量的
float com = 0 ;
if ( 寶物數%2 != 0 ) // 判斷奇偶數
{
寶物數++ ;
}
for ( int x = 0, x++, x <= 陣列的寬 )
{
for ( int y =0, y++, y <= 陣列的高)
{
if ( 陣列名稱[x][y] == 6 ) // 這是計算擁有寶物的
{
player++ ;
}
else if ( 陣列名稱[x][y] == -6 )
{
com++ ;
}
if ( player >= 寶物數/2) // 這是判斷勝利
{
啥結束遊戲的函式 ;
cout << "玩家獲勝" << endl ;
}
else if ( com >= 寶物數/2)
{
啥結束遊戲的函式 ;
cout << "電腦獲勝" << endl ;
}
}
}
}
(檢查寶物奇偶數 跟 判斷勝利 可獨立出來再寫成個函式)
至於要不要分檔案寫或是用啥 x.判斷勝利 跟 y.判斷勝利......
還是那句:再說吧...... |||
ps: 那些啥數值、邏輯的僅供參考...... 不喜歡千萬別勉強,好記好用較重要。
--
之所以寫這些有的沒的,
純粹因為自己過去沒用功寫個自我彌補 囧
反正我現在的程度剛好跟新手差不多,
寫起來應該也剛好適合新手吧 Orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.141.141
推
07/28 13:34, , 1F
07/28 13:34, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 7 之 8 篇):
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
15
19
22
32