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

Google
最近有個程式寫了很久~不過實在有點迷惘...

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念
上一篇主題 :: 下一篇主題  
發表人 內容
fire231
散播福音的祭司


註冊時間: 2007-09-15
文章: 152

322.55 果凍幣

發表發表於: 2007-10-8, PM 9:55 星期一    文章主題: 最近有個程式寫了很久~不過實在有點迷惘... 引言回覆

C++寫了3個禮拜了吧

1個小型的RPG遊戲

雖然沒用到win32API

不過我很想做出有選單的樣子

但是我唯一想到最簡單的方式就是使用goto來跳躍各個選項

到現在也寫了1萬多行了

雖然沒有啥大問題~不過聽說很多人對於goto抱持反對意見

有點迷惘...

而我又不知道如何修改

因為程式碼太多PO不上來~

b122894017@yahoo.com.tw

我的即時~希望有人能幫我看1下我的程式碼~順便給點意見

或是有人可以留下MSN或即時~可以讓我詢問

謝謝


另外

還有個問題~啥時要開始學WIN32API呢?~感覺C++不是很好用

在要寫出1個程式來講~因為C++是dos的模式

yag補充:fire231的程式碼下載(請按右鍵點選另存目標)


這個程式還沒完成~大約只完成了1半左右吧= =...


fire231 在 2007-10-9, PM 6:15 星期二 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
lsk
喜歡上這裡的冒險者


註冊時間: 2007-06-20
文章: 93

20.59 果凍幣

發表發表於: 2007-10-9, AM 3:20 星期二    文章主題: Re: 最近有個程式寫了很久~不過實在有點迷惘... 引言回覆

經過了那麼多年的被討厭,goto始終沒有被c++的compiler踢出去,表示它一定有它存在的價值。現在你剛剛開始學c++,如果所有人都跟你說「用goto一定是不好的!」那你可能就一輩子不會再用他,而且以後你還會跟其他的新手說:用goto是不好的。這樣是不是因此會錯過些什麼?我也不知道。不過,我的看法是,不論這個大家對這個工具的評價是什麼,學起來,然後用自己的經驗去判斷,在對的地方用它,就好了。"能配合團体"和"一味的跟隨主流"是兩碼子事,要有獨立思考的能力和精神才重要。最怕的就是人家說一就是一、說藍就不能綠,思想就很容易被誤導。

大家不愛goto就是因為它很容易讓程式碼不好讀。那你把它寫得很好讀,不就得了?舉例來說,我在wii官方給的範例碼裡面就有看到有人goto,而它應用的他方正是你想做的選單,寫得很簡單明瞭。當然,要怎麼到"很好讀"的地步,就要靠經驗慢慢累積了。

c++不是不好用,只是你還沒學到他好用的地方 Smile 要做視窗軟體真的不太可能一步登天的,當然你是可以先用VB或是用Visual C++玩玩看啦.... 沒有基本的概念,要讀視窗的程式真的是很硬很硬很硬喔~
回頂端
檢視會員個人資料 發送私人訊息
happylin
略有貢獻的成員


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

127.34 果凍幣

發表發表於: 2007-10-9, AM 9:19 星期二    文章主題: 引言回覆

哇寫了一萬多行了. 真是不簡單 .. .
不知道你是怎麼設計的阿...
一萬多行要管理也是很麻煩的事阿
回頂端
檢視會員個人資料 發送私人訊息
babu61509
散播福音的祭司


註冊時間: 2007-08-26
文章: 142

681.01 果凍幣

發表發表於: 2007-10-9, AM 9:21 星期二    文章主題: 引言回覆

想學建立WIN的API...
我覺得可以先去找本 C#的書 或是 C++/CLI 的書來看 (當然裡面要有能用程式碼寫出窗的教學,不是用視覺式的喔![視覺式就是表單出來給你拉那種])
這些書就會講到一些視窗運作的基礎.

等寫一陣子以後再去找 C++ API的書
用API建立視窗的步驟就比較多了...

從簡單(會用,了解基礎運作)到難(一步一步建立視窗)

學起來應該比較容易吧.

當然,你想直接挑戰用API建立也是OK的啦...

_________________
已經畢業了!!
回頂端
檢視會員個人資料 發送私人訊息
還是零分
散播福音的祭司


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

653.83 果凍幣

發表發表於: 2007-10-9, PM 5:56 星期二    文章主題: 引言回覆

dos視窗?
那畫面是256色囉?期待喔

至於winAPI的話.學會c++之後就可以學學看了
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
fire231
散播福音的祭司


註冊時間: 2007-09-15
文章: 152

322.55 果凍幣

發表發表於: 2007-10-9, PM 6:05 星期二    文章主題: 引言回覆

這個..

純文字說= =

我不會將圖片加入程式裡面..(就算會我也沒有圖可以加阿= =)
回頂端
檢視會員個人資料 發送私人訊息
還是零分
散播福音的祭司


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

653.83 果凍幣

發表發表於: 2007-10-9, PM 7:33 星期二    文章主題: 引言回覆

啊?
嗯...
喔!

至少檔案會很小!
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
fire231
散播福音的祭司


註冊時間: 2007-09-15
文章: 152

322.55 果凍幣

發表發表於: 2007-10-9, PM 9:07 星期二    文章主題: 引言回覆

你看看我上面的程式再說吧= =

經過yag大大的指點

其中有好多好多地方可以改進~~

本來寫這個遊戲只是想讓自己熟析一下C++的程式寫法= =

不過看來努力的地方還很多阿~
回頂端
檢視會員個人資料 發送私人訊息
vamper
對這略感興趣的新人


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

發表發表於: 2007-10-9, PM 9:41 星期二    文章主題: 沒有主題 引言回覆

既然作者提出來要抓出缺點,在下我不客氣啦!請沈住氣呀

大約看了一下,雖說一萬行,可惜只重「量」,不重「質」。

缺點:
1.程式碼重複性太多,沒有物件化。

2.goto太多。

3.一個函式最好別超過兩頁以上。

4.多讀資料結構吧!

5.一堆無意義的變數。

6.請多認識C++吧!會幫助你省很多事情。

7.還有軟體工程的問題。

缺點說明:
1.沒有彈性!沒有聚合性!請學一下物件導向吧~

2.goto的缺點很多,光是多一個goto要多認識一個空間名稱,
說明文件會寫到死,因為有一堆函式名稱和類別名稱,還有UML....等。
如果你想跟別人合作寫遊戲,別用吧!只有一種狀況會用,跟break有關。

3.跟第一點有關連,也為了看程式碼方便,而少用「斷點」。

4.你的內功不足,一些程式段很沒效率。(下面有範例)

5.HP10 ? HP50 ?..原來是物品呀!請善用struct,
光是這個,對你的資料流讀寫入的工作,減少許多負擔。

6.連struct都不用的話,enum....我看連這也不知道吧?

7.這我不談,請先把內功練好,再來看軟工。

///// 以下是我的建議 /////////////////

我建議你先別學Win32API or DirectX,也別摸什麼視窗。

那些都是工具,看看說明文件就知道怎用了。

先把內功練好,在好好用工具。

dos?你說的是console吧!我知道有一本書,

就是在console平台上寫遊戲的。(國外網站是五星評價)

不過.....是原文書。想要翻譯成中文的話,不可能!因為沒有人翻譯。

我好像沒看到指標喔?(雖然陣列跟指標有關)

我在某一篇文章看到,有人寫程式都不用指標的,搞的整個編程風格亂透了。

我當時真是佩服他,不用指標能寫出大型軟體。

最後,好好加油吧!在這論壇你最認真想學的,(除了壇主)

我喜歡這種人。(不是那種「喜歡」喔!)

以下是程式碼改進的地方:

代碼:

#include "stdafx.h"

enum enItemType
{
   HP10 = 0 ,
   HP50 ,
   HP100
};//名稱就依你的意思

struct stItemAtt
{
   char   *name ;
   int      hp ;
   int      mp ;
};//道具的基本資料

stItemAtt item[3] ;


short map[10][10]={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,3,0,0,
               0,0,0,0,0,0,0,0,0,0,
               0,0,0,0,0,0,0,0,0,0,
               2,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,0,0,0,0,0,0,0,0,
               0,0,0,0,0,1,0,0,0,0};   

char *graph[6] = { "□" , "○" , "洞" , "塔" , " ",  "村" } ;

int _tmain(int argc, _TCHAR* argv[])
{

   /////////      關於繪製地圖      ////////////////
   int x , y ;

      for(y=0;y<10;y++)
        {
            for(x=0;x<10;x++)
            {
            cout << graph[ map[y][x] ] ;

            } 
            cout << endl;
      }

      ////      關於資料方面      /////////////////
      item[HP10].name = "補血草" ;
      item[HP10].hp = 10 ;
      item[HP10].mp = 0 ;
      
      item[HP50].name = "補血粉" ;
      item[HP50].hp = 50 ;
      item[HP50].mp = 0 ;

      item[HP100].name = "補血丸" ;
      item[HP100].hp = 10 ;
      item[HP100].mp = 0 ;

}
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
fire231
散播福音的祭司


註冊時間: 2007-09-15
文章: 152

322.55 果凍幣

發表發表於: 2007-10-9, PM 9:50 星期二    文章主題: Re: 沒有主題 引言回覆

QQ~當初來這邊~就是想要學整個程式設計~也是yag大大推薦我來的

我當初是想要用C++寫

但是我寫了後才懂得如何使用struct......

至於大大說的enum~我就不知道是啥東西了

還有指標= =~我也是之後才學會使用的

這程式是我邊學邊拿來練習用的= =..

yag大大有提醒幾樣東西

例如函式可以分出去~不用寫在主程式 再用檔頭加進去就行了

還有重複的敘述太多...等等

簡單的來說~如果要修整這個程式

那幾乎就是要全部重寫了= =...

這1萬多行的程式~基本上用的語法都是土法煉鋼= =~~

沒啥快速的捷徑(畢竟第1次寫..)~所以就跟大大說的一樣

幾乎是用量疊起來的= =..


這個...彈性根聚合性是啥?

另外關於無意義的變數

你是指哪邊= =?

是指那些不林值嗎?
回頂端
檢視會員個人資料 發送私人訊息
vamper
對這略感興趣的新人


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

發表發表於: 2007-10-9, PM 11:06 星期二    文章主題: 引言回覆

先說一下指標好用處吧!

我說一個就行了:優化。

代碼:

const int x = 16 ; //最好2的次方
const int y = 16 ;

int map[x][y]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,6,
            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
            2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,6,
            0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,6};

//最後一的字串,存放「斷行」
char *graph[7] = { "□" , "○" , "洞" , "塔" , " ",  "村" , "\n"  } ;

int _tmain(int argc, _TCHAR* argv[])
{

   /////////      關於繪製地圖      ////////////////
        int *pptr = NULL ;
        int i = 0;
        for ( pptr = &map[0][0] ; pptr <= &map[x - 1][y - 1] ; ++pptr , i++ )
       {
             //少了之前寫的if( x % ....... )。%比/的運算子更花時間去運作
             cout << graph[*(pptr)] ;
       }


      ////      關於資料方面(不必要的變數的說明,是在此)       /////////////////
      item[HP10].name = "補血草" ;
      item[HP10].hp = 10 ;
      item[HP10].mp = 0 ;
      
      item[HP50].name = "補血粉" ;
      item[HP50].hp = 50 ;
      item[HP50].mp = 0 ;

      item[HP100].name = "補血丸" ;
      item[HP100].hp = 10 ;
      item[HP100].mp = 0 ;
      //這樣資料流方面,抓取資料,不用一個一個來,還有其他用途,不懂的話...自己想吧!
      //等你到了某種程度,就豁然開朗

      

}



簡單的說,

彈性:需求改變時,功能上(程式碼)能容易變更。
聚合:增加一個需求,整個程式碼的變更程度量。

還不懂的話,總有一天你會知道的。(等到你寫大型軟體時)
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
zwshen
對這略感興趣的新人


註冊時間: 2008-03-11
文章: 22
來自: Taiwan
0.00 果凍幣

發表發表於: 2008-3-11, PM 9:46 星期二    文章主題: 有趣的遊戲 引言回覆

fire231 您好

我有下載你這個RPG遊戲的程式碼下來看,雖然我沒有實際去執行,
可是的確能感覺得出來,您很有心在創造一個有趣的RPG game,還是可以說是單機版的mud遊戲 Wink


希望能看到這個遊戲完成後的樣子.. Smile
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

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


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