不开花的树

魔鬼敲着键盘

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  12 随笔 :: 0 文章 :: 2 评论 :: 0 Trackbacks
摘录自网页游戏集中营www.vwebgame.com

二、一个详细的例子。

单纯的讨论数据流程是件痛苦的事情。
讨论程序而不给代码也是比较痛苦。
这里用的是php+mysql的。

那就按一个超简单的webgame的方式来讨论。配上适当的代码。应该有所帮助。不足的地方也请大家指出,对我个人也是帮助。

我们不去考虑游戏的可玩性,数值平衡等等问题。我们先只考虑一个简单例子的实现。

那么一个webgame的基本内容需要些什么呢?

数据库:玩家、地图、城市、建筑、武器、士兵。

功能:登陆、升级、个人战斗、士兵之间的战斗、与城市的战斗、修建建筑、打造武器、买卖道具。
(注意:每一个功能,必然对应1个或多个数据表。上面数据库中所列的只是基础中的基础。)


首先是地图、城市、建筑。
这里认为,地图可以有多张,城市在地图上,建筑在城市内。


地图表
Map  :Map_ID ,X坐标, Y坐标,City_ID(城市ID),描述。
其中Map_ID是指地图的id。不是自动编号。一张地图就是一个Map_ID,可以重复。

城市表
City:City_ID,城市名字,城市所有人,城市等级,城市资源,描述。

建筑表
Build:ID,City_ID,建筑名称,建筑等级,建筑功能。

其中,地图表确定城市的位置,城市表确定城市的相关数据以及所有人,建筑表内的多条信息属于某一个城市。

建表后,显示出来。
一个for循环。把地图表整个取出来就ok。
跟普通网站的新闻列表没太大区别。不同的是,你需要取得X坐标和Y坐标定位。可以用tabel也可以用div。


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坐标]."px;";
   echo "height:".$rs[Y坐标]."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坐标]."_".$rs[Y坐标].">";
   echo "<img src=".$rs[Map_bg]." border=0 title=".$rs[ID]."></div>";
  
  }
   
}
}

上面是一个很简单的地图类。代码可能不太正确,意思是正确的。就是根据map表中的坐标,生成了一组div层,以及这一组层的css。
你可以改为table的。你可以也把坐标放到一个字段里,用数组的形式取。

使用的时候,用

new map;
map(N);

其中N是map表里的地图Map_ID.

城市内的建筑也类似。如果要显示出来的话。

posted on 2009-01-02 16:23 墨墨 阅读(128) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。