首页 → 经典 → 心灵鸡汤
網頁游戲制作平臺 網頁游戲制作哪個軟件好
日期:2023-02-15 04:17:57    编辑:网络投稿    来源:网络资源
大家好,今天農農來為大家解答以上問題。網頁游戲制作的軟件,網頁游戲制作教程很多人還不知道,現在讓我們一起來看看吧!1、一、簡單的程序框架。2、webgame程序構成:三大部分。3、
为你推荐:
  • 人生感悟(心里感悟的
  • 大家好,今天農農來為大家解答以上問題。網頁游戲制作的軟件,網頁游戲制作教程很多人還不知道,現在讓我們一起來看看吧!

    1、一、簡單的程序框架。

    2、webgame程序構成:三大部分。

    3、第一是數據流程。

    4、第二是程序。

    5、第三是美術。

    6、其中,數據流程包括了功能。

    7、也只有在功能中才能體現數據流程。

    8、數據流程相當的麻煩,后面再討論。

    9、比如最簡單的賣買產品。

    10、要實現這個功能。

    11、那么需要有產品基礎表、產品詳細表、商店表、背包表。

    12、如果擴展性更強,相應的雙表是少不不了的。

    13、表的問題都簡單了。

    14、關鍵是這個物品有什么用。

    15、這樣物品的來源,一大堆數據,物品的走向,又是一大堆數據。

    16、最后,這些數據得繞成一個圈。

    17、繞圈是一件困難的事情。

    18、特別是功能和道具多了起來的時候。

    19、難度是2的n次方。

    20、美術:UI。

    21、簡潔漂亮的界面總會有好處。

    22、小圖標。

    23、道具,地圖,裝備。

    24、一類至少10個吧?大體上百把個是需要的。

    25、程序分5個部分:服務器定時器。

    26、(C語言或自己設定服務器)定時循環執行某一段代碼。

    27、而這段代碼主要是根據數據庫的數據進行更新。

    28、這個可以找個C語言程序員來做。

    29、對于C語言程序員來講,這個功能是相當的簡單。

    30、當然,具體的處理數據的判斷和操作數據庫,需要你自己寫。

    31、讓C語言程序員給你段標準代碼就行了。

    32、完全支持sql語句的。

    33、功能頁面、功能函數。

    34、主要就是數據存取,判斷,數據走向。

    35、ajax函數。

    36、(可選)某些需要偽即時的功能要用到。

    37、javascript函數。

    38、(可選)模擬客戶端的數據計算。

    39、也就是webgame的與時間相關的數據。

    40、分為兩部分。

    41、一部分是真實數據,是由服務器端的定時器計算的。

    42、另一部分是只有初始值,客戶端顯示用的。

    43、不需要即時同步,僅僅需要模擬同步就行。

    44、數據庫。

    45、一大堆基礎數據表和詳細數據表。

    46、基礎數據表:比如等級1到等級100的用戶的屬性初始值。

    47、詳細數據表:每個用戶的具體屬性。

    48、二、一個詳細的例子。

    49、單純的討論數據流程是件痛苦的事情。

    50、討論程序而不給代碼也是比較痛苦。

    51、這里用的是php+mysql的。

    52、那就按一個超簡單的webgame的方式來討論。

    53、配上適當的代碼。

    54、應該有所幫助。

    55、不足的地方也請大家指出,對我個人也是幫助。

    56、我們不去考慮游戲的可玩性,數值平衡等等問題。

    57、我們先只考慮一個簡單例子的實現。

    58、那么一個webgame的基本內容需要些什么呢?數據庫:玩家、地圖、城市、建筑、武器、士兵。

    59、功能:登陸、升級、個人戰斗、士兵之間的戰斗、與城市的戰斗、修建建筑、打造武器、買賣道具。

    60、(注意:每一個功能,必然對應1個或多個數據表。

    61、上面數據庫中所列的只是基礎中的基礎。

    62、)首先是地圖、城市、建筑。

    63、這里認為,地圖可以有多張,城市在地圖上,建筑在城市內。

    64、地圖表Map :Map_ID ,X坐標,Y坐標,City_ID(城市ID),描述。

    65、其中Map_ID是指地圖的id。

    66、不是自動編號。

    67、一張地圖就是一個Map_ID,可以重復。

    68、城市表City:City_ID,城市名字,城市所有人,城市等級,城市資源,描述。

    69、建筑表Build:ID,City_ID,建筑名稱,建筑等級,建筑功能。

    70、其中,地圖表確定城市的位置,城市表確定城市的相關數據以及所有人,建筑表內的多條信息屬于某一個城市。

    71、建表后,顯示出來。

    72、一個for循環。

    73、把地圖表整個取出來就ok。

    74、跟普通網站的新聞列表沒太大區別。

    75、不同的是,你需要取得X坐標和Y坐標定位。

    76、可以用tabel也可以用div。

    77、class Map//地圖類{var $Map_ID;functionMap_bg_css($Map_ID) {$this->Map_ID = $Map_ID;mysql_select_db($db_name,$link);$sql=”select * from map whereMap_ID=’”.$this->Map_ID.”‘ limit 1″;  $result=mysql_query($sql,$link);  echo “”;$rs=mysql_fetch_array($result);   echo“#map{”;   echo “position:absolute;”;   echo“width:”.$rs[X坐標].”px;”;   echo “height:”.$rs[Y坐標].”px;”;   echo“z-index:0;”;   echo “left:0px;top:0px;}”;}functionMap_bg($Map_ID){$this->Map_ID = $Map_ID;$sql=”select * from map where Map_ID=’”.$this->Map_ID.”‘”;    $result=mysql_query($sql,$link);while($rs=mysql_fetch_array($result)){   echo “”;   echo“”;}}}上面是一個很簡單的地圖類。

    78、代碼可能不太正確,意思是正確的。

    79、就是根據map表中的坐標,生成了一組div層,以及這一組層的css。

    80、你可以改為table的。

    81、你可以也把坐標放到一個字段里,用數組的形式取。

    82、使用的時候,用new map;map(N);其中N是map表里的地圖Map_ID.城市內的建筑也類似。

    83、如果要顯示出來的話。

    84、有了地圖和城市后。

    85、涉及到的問題就是城市里資源的產生。

    86、這時候,City表里需要有可供判斷的時間和數量的字段。

    87、比如:產生資金量Money,產生資金花費的時間Action_Time,上次產生資金時間Money_time。

    88、這兩個字段的數值應該在City_base表里出現。

    89、(即城市基礎表,不同等級,不同類型城市的對應數值。

    90、這是給策劃填數據用的,建好表后就等策劃去頭痛吧。

    91、如果你身兼數職。

    92、)如何自動產生資源呢?我們可以在城市所有人改變的時候,寫入一個時間。

    93、或者在城市初始化的時候寫入一個時間。

    94、$Now_Time=date(’Y-m-d H:i:s’);(說明:$開頭是變量的意思。

    95、php里特有的。

    96、如果是asp的話可以寫成。

    97、Now_Time=Now())把$Now_Time寫入到Money_time里。

    98、update(”UPDATE City SET Money_time=’$Now_TimeWHERE City_ID=’$City_ID’ LIMIT 1;”);$City_ID是你自己定義的。

    99、指某一個城市。

    100、如:$City_ID=1;我們假定當前城市產生資金量為100。

    101、即$Money=100;(具體的數值,應該是由City_base表里取出的。

    102、)假設間隔時間為$Action_Time,我們再假定是每小時執行一次。

    103、即$Action_Time=3600;(具體的數值,是根據你的初始化表里取得的。

    104、也可以根據城市等級或者用戶等級取得。

    105、反正隨便你自己怎么設定。

    106、)這時候,有基礎時間了。

    107、有基礎資金產量了。

    108、有間隔時間了。

    109、讓它循環執行起來就行了。

    110、上面說過,服務端用C語言定時器。

    111、客戶端用javascript。

    112、服務端,資源定時器設定為5分鐘執行一次。

    113、那么我們的誤差就是5分鐘。

    114、對網頁游戲來說,可以接受。

    115、(戰斗的定時器得1分鐘吧。

    116、當然服務器夠牛的話,幾秒鐘都可以。

    117、)每次執行什么代碼呢?首先得新建一個定時器任務的表。

    118、目的就是讓定時器知道需要執行哪些程序和數據的更新。

    119、表內容比如:城市資源更新。

    120、當然,這個表可要可不要。

    121、建立的好處是方便處理類似保護狀態不產生資源之類的問題。

    122、服務端程序:獲得當前服務器時間。

    123、獲得當前需要更新城市。

    124、判斷服務器時間與$Money_time的時間差。

    125、(時間戳,具體的時間戳網上資料滿多的。

    126、)判斷時間差是否大于$Action_Time。

    127、大于,則更新資源。

    128、同時更新$Money_time。

    129、小于,則無操作。

    130、客戶端程序:獲得當前服務器時間。

    131、獲得當前城市的$Money,$Money_time,$Action_Time。

    132、使用javascript顯示剩余時間的倒計時,以及增加的資源量。

    133、客戶端特殊情況觸發:因為客戶端顯示的資源情況是偽同步,所以當客戶端使用該資源的時候。

    134、需要服務端將當前的實際資源更新,屬于定時器處理的時間也需要更新。

    135、即,當客戶端觸發涉及資源的情況時,立即更新當前資源。

    136、同時更新定時器中會用到的$Money_time。

    137、這樣才不會造成,看的資源用不到,或者定時器重復產生資源。

    138、總體來說。

    139、這部分程序都很簡單。

    140、難點在C語言定時器的制作,以及前臺javascipt倒計時的寫法上。

    141、C語言定時器,找個C語言程序員,超簡單;前臺的javascipt,網上有很多倒計時的代碼,找個來改改就能用。

    142、這個是網上找的代碼。

    143、稍微修改就可以用的。

    144、這里只是顯示了倒計時。

    145、也可以改為顯示資源的增加情況。

    146、C語言里操作mysql數據庫。

    147、// TODO: Add your control notification handlercode herebool bRes = m_dbConn.Connect(”數據庫ip地址”, 3306 , “用戶名”,“[email=d203!@#ghj]密碼[/email]“, “數據庫名”);if(!bRes){AfxMessageBox(”connect fail”);return;}string strSql = “select * from city limit1″;//所有顯示或取值類的都用這段。

    148、中間的sql語句可以自己構造。

    149、ResultSet* rs =m_dbConn.ExecuteQuery(strSql);while(rs->Next()){string str =rs->GetString(”username”);AfxMessageBox(str.c_str());}/*strSql= “update city set money=money +100 whereCity_ID=’xxx’”;//所有的增加、刪除、更新都用這段,中間的sql語句可以自己構造。

    150、bRes = m_dbConn.ExecuteUpdate(strSql);if(!bRes){AfxMessageBox(”ExecuteUpdatefail”);}*/m_dbConn.Close();定時器的主函數。

    151、voidCBeiLiDlg::Go(){while(true){//AfxMessageBox(”go”);Sleep(5*1000);//毫秒。

    152、定時器刷新時間。

    153、}}//相當的簡單..。

    154、當然。

    155、這里的C的代碼不能直接用。

    156、只是一部分。

    157、地圖、城市、基本上算是有了。

    158、接下來是城市里的建筑。

    159、上面講的資源增加,其實定位在建筑上更準確。

    160、不過建筑的分類和數值會復雜很多。

    161、那是策劃考慮的問題。

    162、建筑上,只講一個前臺的修建效果。

    163、當然,這個效果是可有可無。

    164、你可以直接給個類似新聞列表的顯示,再加個倒計時就行。

    165、顯示的效果就是,點修建后。

    166、不刷新頁面,調入一張動畫圖片。

    167、并在時間到后自動轉換為其他圖片。

    168、后臺部分,把時間到增加資源的代碼改為時間到增加或更新建筑就行了。

    169、又是增加N個表。

    170、建筑基礎表:產出,類型,圖片等等。

    171、建筑詳細表:屬于哪個城市,可以在城市表里關聯。

    172、關聯的方式不同會對程序有很大的影響。

    173、各種關聯方式都行,但是一旦關聯方式確定后,最好別改動。

    174、現在建筑也有了。

    175、用類似的定時方式,打工,征兵等等都可以實現。

    176、戰斗,兵的參數:兵種,數量,攻擊,防御等等。

    177、戰斗的臨時表:誰的兵,打誰,出發時間,戰斗時間,戰斗結果。

    178、這里的幾個字到是簡單。

    179、實際的表會復雜一些。

    180、webgame中,戰斗的過程分兩種,一種是給出雙方參數,時間到,就根據公式計算結果。

    181、一種是半即時或者即時的戰斗,可以邊打邊喝藥邊用技能的那種。

    182、第一種流程。

    183、點出兵。

    184、這時候,兵的參數,出發時間,到達時間,都記錄進戰斗臨時表。

    185、定時器中,處理戰斗的部分,判斷時間是否到開打的時候。

    186、到開打的時間了,則取得被攻擊方的兵的參數。

    187、然后通過幾個公式計算結果。

    188、處理結果,比如誰的兵掛了多少,戰場掉落了多少錢,城市被誰搶到了。

    189、一大堆判斷以及updata。

    190、(這里的定時器處理和獲得資源的定時器處理是很類似的。

    191、)最后把結果分別發給雙方。

    192、(又涉及到一個短信息系統。

    193、)第二種流程。

    194、點攻擊。

    195、馬上就處理數據。

    196、打打npc好做。

    197、玩家之間對戰,也可以把被攻擊的玩家當成npc來處理。

    198、兩個人或兩人以上即時戰斗。

    199、需要用到ajax了。

    200、目前在技術上和理論上是沒問題的,還沒實際寫代碼,所以不好講。

    201、很簡單的公式,兩種戰斗都可以用到:intval(sqrt($User_B_AP)-sqrt($User_A_DP));根號下攻擊-根號下防御=傷害。

    202、具體寫的時候,公式肯定會復雜不少,不過這頭痛的事,還是交給策劃去做吧。

    本文到此結束,希望對大家有所幫助。

    这里有更多你想看的
  • 人生哲理的句子經典
    • 本类最新
    • 精品图文
    • 时尚
    • 新闻
    • 生活
    • 视觉
    • 微爱
      栏目ID=88的表不存在(操作类型=0)

    头条推荐

    热门推荐

    特别推荐

    返回顶部