欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php 網(wǎng)頁(yè)游戲開發(fā)入門教程一(webgame+design)

 更新時(shí)間:2009年10月26日 17:41:32   作者:  
網(wǎng)頁(yè)游戲開發(fā)入門教程一 webgame+design , 大家可以參考下。

一、簡(jiǎn)單的程序框架。
webgame程序構(gòu)成:
三大部分。
第一是數(shù)據(jù)流程。第二是程序。第三是美術(shù)。
其中,數(shù)據(jù)流程包括了功能。也只有在功能中才能體現(xiàn)數(shù)據(jù)流程。
數(shù)據(jù)流程相當(dāng)?shù)穆闊竺嬖儆懻摗?
比如最簡(jiǎn)單的賣買產(chǎn)品。
要實(shí)現(xiàn)這個(gè)功能。
那么需要有產(chǎn)品基礎(chǔ)表、產(chǎn)品詳細(xì)表、商店表、背包表。如果擴(kuò)展性更強(qiáng),相應(yīng)的雙表是少不不了的。
表的問(wèn)題都簡(jiǎn)單了。關(guān)鍵是這個(gè)物品有什么用。這樣物品的來(lái)源,一大堆數(shù)據(jù),物品的走向,又是一大堆數(shù)據(jù)。
最后,這些數(shù)據(jù)得繞成一個(gè)圈。
繞圈是一件困難的事情。特別是功能和道具多了起來(lái)的時(shí)候。難度是2的n次方。

在繞圈之前,如果你比較熟練設(shè)計(jì)模式。那么這個(gè)過(guò)程可以簡(jiǎn)化。難度由2的n次方變?yōu)?。
只需要有控制器、事件工廠、抽象道具工廠這三個(gè)虛類;再加上定時(shí)器,任務(wù)編輯器,這兩個(gè)通用類。即可以構(gòu)建一個(gè)健壯、高擴(kuò)展的webgame。
在webgame里控制器幾乎可以等同于頁(yè)面。隨便采用一種模板技術(shù)即能很方便的處理。
事件工廠是一個(gè)抽象類,所有的事件,如打工、戰(zhàn)斗、移動(dòng)等都由事件工廠的生產(chǎn)。并且接口相同,方便控制器控制。工廠模式。
抽象道具工廠是一個(gè)抽象類,所有的道具,如城市、地圖、裝備等,都由抽象道具工廠生產(chǎn)。并且接口相同,工廠模式,事件與道具的結(jié)合又是一個(gè)橋接模式。

美術(shù):
UI。簡(jiǎn)潔漂亮的界面總會(huì)有好處。小圖標(biāo)。道具,地圖,裝備。一類至少10個(gè)吧?大體上百把個(gè)是需要的。
程序分5個(gè)部分:
服務(wù)器定時(shí)器。(C語(yǔ)言或自己設(shè)定服務(wù)器)定時(shí)循環(huán)執(zhí)行某一段代碼。而這段代碼主要是根據(jù)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行更新。這個(gè)可以找個(gè)C語(yǔ)言程序員來(lái)做。對(duì)于C語(yǔ)言程序員來(lái)講,這個(gè)功能是相當(dāng)?shù)暮?jiǎn)單。當(dāng)然,具體的處理數(shù)據(jù)的判斷和操作數(shù)據(jù)庫(kù),需要你自己寫。讓C語(yǔ)言程序員給你段標(biāo)準(zhǔn)代碼就行了。完全支持sql語(yǔ)句的。
php的話,可以配置corn實(shí)現(xiàn)。但是不管是什么操作系統(tǒng),配置的時(shí)間最低是1分鐘。所以,如果你要處理1秒鐘刷新一次的情況。你還需要專門的定時(shí)器程序來(lái)處理,或者被定時(shí)執(zhí)行的php需要包含sleep().當(dāng)然,即使有即時(shí)交互,可以不管服務(wù)器端。只處理交互的雙方的客戶端。js和ajax實(shí)現(xiàn)。
功能頁(yè)面、功能函數(shù)。主要就是數(shù)據(jù)存取,判斷,數(shù)據(jù)走向。
用上抽象類,會(huì)比較輕松。不過(guò)子類的爆炸是少不了的了。
ajax函數(shù)。(可選)某些需要偽即時(shí)的功能要用到。
為了讓游戲看起來(lái)酷一點(diǎn)。用吧。
javascript函數(shù)。(可選)模擬客戶端的數(shù)據(jù)計(jì)算。也就是webgame的與時(shí)間相關(guān)的數(shù)據(jù)。分為兩部分。一部分是真實(shí)數(shù)據(jù),是由服務(wù)器端的定時(shí)器計(jì)算的。另一部分是只有初始值,客戶端顯示用的。不需要即時(shí)同步,僅僅需要模擬同步就行。
這里還包括一些漂亮的UI特效。畢竟是游戲。
數(shù)據(jù)庫(kù)。一大堆基礎(chǔ)數(shù)據(jù)表和詳細(xì)數(shù)據(jù)表。基礎(chǔ)數(shù)據(jù)表:比如等級(jí)1到等級(jí)100的用戶的屬性初始值。詳細(xì)數(shù)據(jù)表:每個(gè)用戶的具體屬性。
數(shù)據(jù)庫(kù)上,盡量?jī)?yōu)化。結(jié)構(gòu)上能用1字節(jié)的就別用2字節(jié)。

二、一個(gè)詳細(xì)的例子。
單純的討論數(shù)據(jù)流程是件痛苦的事情。
討論程序而不給代碼也是比較痛苦。
這里用的是php+mysql的。同時(shí),這個(gè)例子沒(méi)有用到類。如果時(shí)間充足的話,今年年底,我會(huì)提供一個(gè)帶即時(shí)交互的簡(jiǎn)單webgame代碼和核心類來(lái)說(shuō)明使用了設(shè)計(jì)模式的好處。
那就按一個(gè)超簡(jiǎn)單的webgame的方式來(lái)討論。配上適當(dāng)?shù)拇a。應(yīng)該有所幫助。不足的地方也請(qǐng)大家指出,對(duì)我個(gè)人也是幫助。
我們不去考慮游戲的可玩性,數(shù)值平衡等等問(wèn)題。我們先只考慮一個(gè)簡(jiǎn)單例子的實(shí)現(xiàn)。
那么一個(gè)webgame的基本內(nèi)容需要些什么呢?
數(shù)據(jù)庫(kù):玩家、地圖、城市、建筑、武器、士兵。
功能:登陸、升級(jí)、個(gè)人戰(zhàn)斗、士兵之間的戰(zhàn)斗、與城市的戰(zhàn)斗、修建建筑、打造武器、買賣道具。
(注意:每一個(gè)功能,必然對(duì)應(yīng)1個(gè)或多個(gè)數(shù)據(jù)表。上面數(shù)據(jù)庫(kù)中所列的只是基礎(chǔ)中的基礎(chǔ)。)
首先是地圖、城市、建筑。
這里認(rèn)為,地圖可以有多張,城市在地圖上,建筑在城市內(nèi)。
地圖表
Map :Map_ID ,X坐標(biāo), Y坐標(biāo),City_ID(城市ID),描述。
其中Map_ID是指地圖的id。不是自動(dòng)編號(hào)。一張地圖就是一個(gè)Map_ID,可以重復(fù)。
城市表
City:City_ID,城市名字,城市所有人,城市等級(jí),城市資源,描述。
建筑表
Build:ID,City_ID,建筑名稱,建筑等級(jí),建筑功能。
其中,地圖表確定城市的位置,城市表確定城市的相關(guān)數(shù)據(jù)以及所有人,建筑表內(nèi)的多條信息屬于某一個(gè)城市。
建表后,顯示出來(lái)。
一個(gè)for循環(huán)。把地圖表整個(gè)取出來(lái)就ok。
跟普通網(wǎng)站的新聞列表沒(méi)太大區(qū)別。不同的是,你需要取得X坐標(biāo)和Y坐標(biāo)定位。可以用tabel也可以用div。


Code

復(fù)制代碼 代碼如下:

class Map//地圖類
{
var $Map_ID;
function Map_bg_css($Map_ID) {

$this->Map_ID = $Map_ID;

mysql_select_db($db_name,$link);
$sql="select * from map where Map_ID='".$this->Map_ID."' limit 1";
$result=mysql_query($sql,$link);
echo "<style type="."text"."/"."css>";
$rs=mysql_fetch_array($result);

echo "#map{";
echo "position:absolute;";
echo "width:".$rs[X坐標(biāo)]."px;";
echo "height:".$rs[Y坐標(biāo)]."px;";
echo "z-index:0;";
echo "left:0px;top:0px;}";

}

function Map_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 "<div id=Layer_bg_".$rs[X坐標(biāo)]."_".$rs[Y坐標(biāo)].">";
echo "<img src=".$rs[Map_bg]." border=0 title=".$rs[ID]."></div>";

}

}
}


上面是一個(gè)很簡(jiǎn)單的地圖類。代碼可能不太正確,意思是正確的。就是根據(jù)map表中的坐標(biāo),生成了一組div層,以及這一組層的css。
你可以改為table的。你可以也把坐標(biāo)放到一個(gè)字段里,用數(shù)組的形式取。
使用的時(shí)候,用

new map;
map(N);
其中N是map表里的地圖Map_ID.
城市內(nèi)的建筑也類似。如果要顯示出來(lái)的話。
關(guān)于地圖,現(xiàn)在我采用的方式更為簡(jiǎn)單。通過(guò)坐標(biāo)來(lái)判斷需要哪些圖,然后直接顯示出來(lái)。當(dāng)然沒(méi)有碰撞什么的,因?yàn)闀簳r(shí)不需要。至于人物走動(dòng)什么的,不在本文討論范圍。
有了地圖和城市后。涉及到的問(wèn)題就是城市里資源的產(chǎn)生。
這時(shí)候,City表里需要有可供判斷的時(shí)間和數(shù)量的字段。
比如:產(chǎn)生資金量Money,產(chǎn)生資金花費(fèi)的時(shí)間Action_Time,上次產(chǎn)生資金時(shí)間Money_time。
這兩個(gè)字段的數(shù)值應(yīng)該在City_base表里出現(xiàn)。(即城市基礎(chǔ)表,不同等級(jí),不同類型城市的對(duì)應(yīng)數(shù)值。這是給策劃填數(shù)據(jù)用的,建好表后就等策劃去頭痛吧。如果你身兼數(shù)職。。。)
如何自動(dòng)產(chǎn)生資源呢?
我們可以在城市所有人改變的時(shí)候,寫入一個(gè)時(shí)間?;蛘咴诔鞘谐跏蓟臅r(shí)候?qū)懭胍粋€(gè)時(shí)間。

$Now_Time=date('Y-m-d H:i:s');
(說(shuō)明:$開頭是變量的意思。php里特有的。如果是asp的話可以寫成。Now_Time=Now() )
把$Now_Time寫入到Money_time里。

update("UPDATE City SET Money_time='$Now_Time WHERE City_ID='$City_ID' LIMIT 1;");
$City_ID是你自己定義的。指某一個(gè)城市。如:$City_ID=1;
我們假定當(dāng)前城市產(chǎn)生資金量為100。即$Money=100;(具體的數(shù)值,應(yīng)該是由City_base表里取出的。)
假設(shè)間隔時(shí)間為$Action_Time,我們?cè)偌俣ㄊ敲啃r(shí)執(zhí)行一次。即$Action_Time=3600;(具體的數(shù)值,是根據(jù)你的初始化表里取得的。也可以根據(jù)城市等級(jí)或者用戶等級(jí)取得。反正隨便你自己怎么設(shè)定。)
這時(shí)候,有基礎(chǔ)時(shí)間了。有基礎(chǔ)資金產(chǎn)量了。有間隔時(shí)間了。讓它循環(huán)執(zhí)行起來(lái)就行了。
上面說(shuō)過(guò),服務(wù)端用C語(yǔ)言定時(shí)器??蛻舳擞胘avascript。
服務(wù)端,資源定時(shí)器設(shè)定為5分鐘執(zhí)行一次。那么我們的誤差就是5分鐘。對(duì)網(wǎng)頁(yè)游戲來(lái)說(shuō),可以接受。(戰(zhàn)斗的定時(shí)器得1分鐘吧。當(dāng)然服務(wù)器夠牛的話,幾秒鐘都可以。)
當(dāng)然,可以完全php寫,然后配置php的corn?,F(xiàn)在我在做的程序就是直接用php寫了。包括任意長(zhǎng)時(shí)間的定時(shí)器類,專門控制抽象事件用的。C的定時(shí)器暫時(shí)沒(méi)用。
每次執(zhí)行什么代碼呢?
首先得新建一個(gè)定時(shí)器任務(wù)的表。目的就是讓定時(shí)器知道需要執(zhí)行哪些程序和數(shù)據(jù)的更新。表內(nèi)容比如:城市資源更新。當(dāng)然,這個(gè)表可要可不要。建立的好處是方便處理類似保護(hù)狀態(tài)不產(chǎn)生資源之類的問(wèn)題。


服務(wù)端程序:
獲得當(dāng)前服務(wù)器時(shí)間。
獲得當(dāng)前需要更新城市。
判斷服務(wù)器時(shí)間與$Money_time的時(shí)間差。(時(shí)間戳,具體的時(shí)間戳網(wǎng)上資料滿多的。)
判斷時(shí)間差是否大于$Action_Time。
大于,則更新資源。同時(shí)更新$Money_time。
小于,則無(wú)操作。

客戶端程序:
獲得當(dāng)前服務(wù)器時(shí)間。
獲得當(dāng)前城市的$Money,$Money_time,$Action_Time。
使用javascript顯示剩余時(shí)間的倒計(jì)時(shí),以及增加的資源量。

客戶端特殊情況觸發(fā):
因?yàn)榭蛻舳孙@示的資源情況是偽同步,所以當(dāng)客戶端使用該資源的時(shí)候。需要服務(wù)端將當(dāng)前的實(shí)際資源更新,屬于定時(shí)器處理的時(shí)間也需要更新。
即,當(dāng)客戶端觸發(fā)涉及資源的情況時(shí),立即更新當(dāng)前資源。同時(shí)更新定時(shí)器中會(huì)用到的$Money_time。這樣才不會(huì)造成,看的資源用不到,或者定時(shí)器重復(fù)產(chǎn)生資源。

總體來(lái)說(shuō)。這部分程序都很簡(jiǎn)單。難點(diǎn)在C語(yǔ)言定時(shí)器的制作,以及前臺(tái)javascipt倒計(jì)時(shí)的寫法上。
C語(yǔ)言定時(shí)器,找個(gè)C語(yǔ)言程序員,超簡(jiǎn)單;前臺(tái)的javascipt,網(wǎng)上有很多倒計(jì)時(shí)的代碼,找個(gè)來(lái)改改就能用。

Code
復(fù)制代碼 代碼如下:

<SCRIPT LANGUAGE="JavaScript">
var maxtime = 這里是你的時(shí)間差///一個(gè)小時(shí),按秒計(jì)算,自己調(diào)整!
function CountDown(){
if(maxtime>=0){
minutes = Math.floor(maxtime/60);
seconds = Math.floor(maxtime%60);
msg = "你的文字說(shuō)明"+minutes+"分"+seconds+"秒";//動(dòng)態(tài)顯示剩余時(shí)間。
document.all["timer"].innerHTML=msg;
//if(maxtime == 3) document.all["timer"].innerHTML='只剩3秒!';
--maxtime;
}
else{
clearInterval(timer);
document.all["timer"].innerHTML='時(shí)間到';
}
}
timer = setInterval("CountDown()",1000);
</SCRIPT>

<div id=timer></div>

這個(gè)是網(wǎng)上找的代碼。稍微修改就可以用的。這里只是顯示了倒計(jì)時(shí)。也可以改為顯示資源的增加情況。

C語(yǔ)言里操作mysql數(shù)據(jù)庫(kù)。

Code
復(fù)制代碼 代碼如下:

// TODO: Add your control notification handler code here
bool bRes = m_dbConn.Connect("數(shù)據(jù)庫(kù)ip地址", 3306 , "用戶名", "密碼", "數(shù)據(jù)庫(kù)名");
if(!bRes)
{
AfxMessageBox("connect fail");
return;
}

string strSql = "select * from city limit 1";//所有顯示或取值類的都用這段。中間的sql語(yǔ)句可以自己構(gòu)造。
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 where City_ID='xxx'";//所有的增加、刪除、更新都用這段,中間的sql語(yǔ)句可以自己構(gòu)造。

bRes = m_dbConn.ExecuteUpdate(strSql);
if(!bRes)
{
AfxMessageBox("ExecuteUpdate fail");
}
*/
m_dbConn.Close();

定時(shí)器的主函數(shù)。
void CBeiLiDlg::Go()
{
while(true)
{
// AfxMessageBox("go");

Sleep(5*1000);//毫秒。定時(shí)器刷新時(shí)間。
}
}

當(dāng)然。這里的C的代碼不能直接用。只是一部分。
新的方法是,通過(guò)php定時(shí)器類負(fù)責(zé)前臺(tái)、時(shí)間到后,調(diào)用ajax執(zhí)行完成。后臺(tái)通過(guò)定時(shí)執(zhí)行php定時(shí)器類的專用處理函數(shù),處理前臺(tái)掉線,前臺(tái)未正常執(zhí)行等情況。

如果我們的新游戲今年年底能正常上線的話。我可以公開這個(gè)類,沒(méi)技術(shù)含量,但是很巧妙。

地圖、城市、基本上算是有了。
接下來(lái)是城市里的建筑。
上面講的資源增加,其實(shí)定位在建筑上更準(zhǔn)確。不過(guò)建筑的分類和數(shù)值會(huì)復(fù)雜很多。那是策劃考慮的問(wèn)題。
建筑上,只講一個(gè)前臺(tái)的修建效果。
當(dāng)然,這個(gè)效果是可有可無(wú)。你可以直接給個(gè)類似新聞列表的顯示,再加個(gè)倒計(jì)時(shí)就行。
顯示的效果就是,點(diǎn)修建后。不刷新頁(yè)面,調(diào)入一張動(dòng)畫圖片。并在時(shí)間到后自動(dòng)轉(zhuǎn)換為其他圖片。


Code
復(fù)制代碼 代碼如下:

<script language='javascript'>
function xiujian()
{
top.abc.document.getElementById('前臺(tái)建筑位置所在圖片的id').src='修建后建筑的圖片地址';
//顯示修建后的建筑圖片??梢约由虾笈_(tái)時(shí)間判斷。其中abc,是建筑所在層的id,
}
function xiujian1()
{
setTimeout('xiujian()',5000);//動(dòng)畫時(shí)間5秒。這里也可以加入時(shí)間判斷。當(dāng)時(shí)間不到的完成的時(shí)候,繼續(xù)調(diào)用動(dòng)畫。
}
function donghua()
{
top.abc.document.getElementById('前臺(tái)建筑位置所在圖片的id').src='建筑動(dòng)畫所在的地址';//顯示修建動(dòng)畫。
}
donghua();
xiujian1();
</script>

附帶講一下。如果要考慮多瀏覽器兼容,那么用prototype.js。如果只需要ff和ie。那么用而jqury.js
或盡量自己寫。因?yàn)?20k的prototype.js不算小。
后臺(tái)部分,把時(shí)間到,增加資源的代碼,改為時(shí)間到,增加或更新建筑就行了。又是增加N個(gè)表。。
新的方法是,增加事件子類。

建筑基礎(chǔ)表:產(chǎn)出,類型,圖片等等。。
建筑詳細(xì)表:屬于哪個(gè)城市,可以在城市表里關(guān)聯(lián)。關(guān)聯(lián)的方式不同會(huì)對(duì)程序有很大的影響。各種關(guān)聯(lián)方式都行,但是一旦關(guān)聯(lián)方式確定后,最好別改動(dòng)。
現(xiàn)在建筑也有了。用類似的定時(shí)方式,打工,征兵等等都可以實(shí)現(xiàn)。
戰(zhàn)斗,
兵的參數(shù):兵種,數(shù)量,攻擊,防御等等。
戰(zhàn)斗的臨時(shí)表:誰(shuí)的兵,打誰(shuí),出發(fā)時(shí)間,戰(zhàn)斗時(shí)間,戰(zhàn)斗結(jié)果。
這里的幾個(gè)字到是簡(jiǎn)單。實(shí)際的表會(huì)復(fù)雜一些。
webgame中,戰(zhàn)斗的過(guò)程分兩種,一種是給出雙方參數(shù),時(shí)間到,就根據(jù)公式計(jì)算結(jié)果。一種是半即時(shí)或者即時(shí)的戰(zhàn)斗,可以邊打邊喝藥邊用技能的那種。

第一種流程。
點(diǎn)出兵。這時(shí)候,兵的參數(shù),出發(fā)時(shí)間,到達(dá)時(shí)間,都記錄進(jìn)戰(zhàn)斗臨時(shí)表。
定時(shí)器中,處理戰(zhàn)斗的部分,判斷時(shí)間是否到開打的時(shí)候。到開打的時(shí)間了,則取得被攻擊方的兵的參數(shù)。然后通過(guò)幾個(gè)公式計(jì)算結(jié)果。處理結(jié)果,比如誰(shuí)的兵掛了多少,戰(zhàn)場(chǎng)掉落了多少錢,城市被誰(shuí)搶到了。一大堆判斷以及updata。(這里的定時(shí)器處理和獲得資源的定時(shí)器處理是很類似的。)
最后把結(jié)果分別發(fā)給雙方。(又涉及到一個(gè)短信息系統(tǒng)。)

第二種流程。
點(diǎn)攻擊。馬上就處理數(shù)據(jù)。打打npc好做。玩家之間對(duì)戰(zhàn),也可以把被攻擊的玩家當(dāng)成npc來(lái)處理。
兩個(gè)人或兩人以上即時(shí)戰(zhàn)斗。需要用到ajax了。目前在技術(shù)上和理論上是沒(méi)問(wèn)題的,還沒(méi)實(shí)際寫代碼,所以不好講。

現(xiàn)在,技術(shù)上已經(jīng)確定可以很好的實(shí)現(xiàn)了。
很簡(jiǎn)單的公式,兩種戰(zhàn)斗都可以用到:

intval(sqrt($User_B_AP)-sqrt($User_A_DP));
根號(hào)下攻擊-根號(hào)下防御=傷害。
具體寫的時(shí)候,公式肯定會(huì)復(fù)雜不少,不過(guò)這頭痛的事,還是交給策劃去做吧。
戰(zhàn)斗的具體參數(shù),其實(shí)已經(jīng)不是程序考慮的了。
程序只需要考慮從數(shù)據(jù)表A取得數(shù)據(jù),存入臨時(shí)表B。然后當(dāng)時(shí)間到了后(通過(guò)定時(shí)器實(shí)現(xiàn)),再?gòu)臄?shù)據(jù)表C取得數(shù)據(jù),通過(guò)公式計(jì)算,最后刪除臨時(shí)表B或者把臨時(shí)表B存到另外一個(gè)地方備份。
這里的思路其實(shí)就是定時(shí)器類。
數(shù)據(jù)是哪些?找策劃要。有幾個(gè)表?找策劃要。戰(zhàn)斗公式?找策劃要。
有地圖、城市、建筑、士兵、戰(zhàn)斗后,道具的出現(xiàn)就有必要了。
為什么呢?
有了城市能做什么?產(chǎn)生資源,產(chǎn)生錢,產(chǎn)生兵。
有了士兵做什么?可以搶資源,搶錢。
資源和錢做什么?買道具。
買道具做什么?更好的搶資源和搶錢。
(同時(shí),搶資源,搶錢的時(shí)候,資源會(huì)被消耗)
這是一個(gè)很簡(jiǎn)單的循環(huán)。就是繞成了一個(gè)圈,雖然這個(gè)圈很小。有部分策劃想得非常好,就是繞不成圈,那樣沒(méi)任何意義。

首先,需要一個(gè)道具的基礎(chǔ)表。自動(dòng)ID,道具類型,道具屬性,說(shuō)明。在道具的處理上,可以在玩家表里增加更多字段,道具跟隨玩家。也可以單獨(dú)建一個(gè)道具的詳細(xì)表。用類似背包的方式實(shí)現(xiàn)。
背包的方式有兩種,一是用數(shù)組存儲(chǔ),二是用橫向表存儲(chǔ)。都挺麻煩的。不過(guò)從道具流通和買賣上考慮。用背包的方式是值得的。接下來(lái)的功能。
商店。拍賣行。基本上跟一般的網(wǎng)站應(yīng)用很類似。只不過(guò)產(chǎn)品變?yōu)榱擞螒蚶锏牡谰摺X泿攀怯螒驇拧?

三、總結(jié)
上面的小例子,思路上是基本完善,沒(méi)問(wèn)題的。程序代碼上只給了一小部分,能真正理解這一小部分。其他部分的程序應(yīng)該不是問(wèn)題。
webgame重要的還是數(shù)據(jù)流的繞成圈,以及可玩性。
現(xiàn)在講為:程序的健壯和數(shù)據(jù)流的清晰。
上面的功能,真的做出來(lái),是不夠玩的。就是沒(méi)什么可玩性,做出來(lái)都沒(méi)意義。
但是,僅僅是做出來(lái),仍然是一件困難的事情。
游戲里涉及的東西太多。即使是很簡(jiǎn)單的游戲,即使webgame看上去很簡(jiǎn)單,甚至實(shí)際也很簡(jiǎn)單;做出來(lái),非常困難。
沒(méi)有過(guò)開發(fā)webgame經(jīng)驗(yàn)的人,來(lái)策劃webgame或者說(shuō)開發(fā)webgame。會(huì)覺(jué)得很簡(jiǎn)單。大功能其實(shí)就那么幾個(gè)。思路上也容易繞成圈。
實(shí)際情況是,一個(gè)非常簡(jiǎn)單的功能,當(dāng)它需要繞圈的時(shí)候;當(dāng)它需要交互的時(shí)候。這個(gè)功能就不再簡(jiǎn)單,而是復(fù)雜,相當(dāng)?shù)膹?fù)雜。
這是當(dāng)你不太明白設(shè)計(jì)模式的時(shí)候,如果你精通設(shè)計(jì)模式,那么功能就會(huì)簡(jiǎn)單起來(lái)。

特別是你想制作一款有足夠的可玩性,能面向市場(chǎng)的產(chǎn)品,即使是初期思路非常簡(jiǎn)單,功能也很單純。但你實(shí)際策劃的時(shí)候,實(shí)際編程的時(shí)候。大量的數(shù)據(jù)、數(shù)值需要你去處理,大量的交互需要你去處理。這時(shí)候,開始的簡(jiǎn)單,已經(jīng)變得復(fù)雜了。雖然從程序的角度講,技術(shù)含量不高。
更準(zhǔn)確的講,是繁瑣,非常繁瑣。

優(yōu)秀的策劃是可以把數(shù)據(jù)表列出來(lái),把數(shù)據(jù)走向清晰的列出來(lái),放在你面前。這樣的策劃不多的。
當(dāng)然,他不一定列得很準(zhǔn)確,但是程序員能比較準(zhǔn)確的理解他的意思。

相關(guān)文章

  • 淺談php fopen下載遠(yuǎn)程文件的函數(shù)

    淺談php fopen下載遠(yuǎn)程文件的函數(shù)

    下面小編就為大家?guī)?lái)一篇淺談php fopen下載遠(yuǎn)程文件的函數(shù)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • 采用thinkphp自帶方法生成靜態(tài)html文件詳解

    采用thinkphp自帶方法生成靜態(tài)html文件詳解

    thinkphp本身自帶了一個(gè)有效的生成靜態(tài)頁(yè)的方法,這篇文章主要介紹了采用thinkphp自帶方法生成靜態(tài)html文件
    2014-06-06
  • PHP array_key_exists檢查鍵名或索引是否存在于數(shù)組中的實(shí)現(xiàn)方法

    PHP array_key_exists檢查鍵名或索引是否存在于數(shù)組中的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇PHP array_key_exists檢查鍵名或索引是否存在于數(shù)組中的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • PHP插入排序?qū)崿F(xiàn)代碼

    PHP插入排序?qū)崿F(xiàn)代碼

    插入排序的基本操作就是將一個(gè)數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個(gè)新的、個(gè)數(shù)加一的有序數(shù)據(jù)。
    2013-04-04
  • LaravelS通過(guò)Swoole加速Laravel/Lumen詳解

    LaravelS通過(guò)Swoole加速Laravel/Lumen詳解

    這篇文章主要給大家介紹了關(guān)于LaravelS通過(guò)Swoole加速Laravel/Lumen的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • smarty循環(huán)嵌套用法示例分析

    smarty循環(huán)嵌套用法示例分析

    這篇文章主要介紹了smarty循環(huán)嵌套用法,結(jié)合實(shí)例形式分析了Smarty模板嵌套循環(huán)的實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-07-07
  • PHP中的插件機(jī)制原理和實(shí)例

    PHP中的插件機(jī)制原理和實(shí)例

    這篇文章主要介紹了PHP中的插件機(jī)制原理和實(shí)例,文中例子主要借鑒了網(wǎng)上一些網(wǎng)友的方式做了稍微的改造,需要的朋友可以參考下
    2014-07-07
  • linux系統(tǒng)下php安裝mbstring擴(kuò)展的二種方法

    linux系統(tǒng)下php安裝mbstring擴(kuò)展的二種方法

    這篇文章主要介紹了linux系統(tǒng)環(huán)境下,php安裝mbstring擴(kuò)展的二種方法,大家參考使用吧
    2014-01-01
  • 美圖秀秀web開放平臺(tái)--PHP流式上傳和表單上傳示例分享

    美圖秀秀web開放平臺(tái)--PHP流式上傳和表單上傳示例分享

    最近需要開發(fā)一個(gè)頭像上傳的功能,找了很多都需要授權(quán)的,后來(lái)找到了美圖秀秀,功能非常好用。
    2014-06-06
  • thinkPHP模板引擎用法示例

    thinkPHP模板引擎用法示例

    這篇文章主要介紹了thinkPHP模板引擎用法,結(jié)合實(shí)例形式分析了thinkPHP模板的基本原理與相關(guān)使用技巧,需要的朋友可以參考下
    2016-12-12

最新評(píng)論