<\/script>');
龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

开发网页游戏入门教程之系统设计篇webgame+design(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
Code 1 class Map//地图类 2 { 3 var $Map_ID; 4 function Map_bg_css($Map_ID) { 5 6 $this-Map_ID = $Map_ID; 7 8 mysql_select_db($db_name,$link); 9 $sql="select * from map where Map_ID='".$this-Map_ID.

Code
 1 class Map//地图类
 2 {
 3 var $Map_ID;
 4 function Map_bg_css($Map_ID) {
 5
 6   $this->Map_ID = $Map_ID;
 7    
 8   mysql_select_db($db_name,$link);
 9   $sql="select * from map where Map_ID='".$this->Map_ID."' limit 1";   
10   $result=mysql_query($sql,$link);  
11   echo "<style type="."text"."/"."css>";
12   $rs=mysql_fetch_array($result); 
13  
14    echo "#map{";
15    echo "position:absolute;";
16    echo "width:".$rs[X坐标]."px;";
17    echo "height:".$rs[Y坐标]."px;";
18    echo "z-index:0;";
19    echo "left:0px;top:0px;}";
20  
21   }
22  
23 function Map_bg($Map_ID){
24
25   $this->Map_ID = $Map_ID;
26   
27   $sql="select * from map where Map_ID='".$this->Map_ID."'";    
28   $result=mysql_query($sql,$link);
29   while($rs=mysql_fetch_array($result)) 
30   {
31    echo "<div id=Layer_bg_".$rs[X坐标]."_".$rs[Y坐标].">";
32    echo "<img src=".$rs[Map_bg]." border=0 title=".$rs[ID]."></div>";
33  
34   }
35   
36 }
37 }
38 上面是一个很简单的地图类。代码可能不太正确,意思是正确的。就是根据map表中的坐标,生成了一组div层,以及这一组层的css。
你可以改为table的。你可以也把坐标放到一个字段里,用数组的形式取。
使用的时候,用

new map;
map(N);其中N是map表里的地图Map_ID.
城市内的建筑也类似。如果要显示出来的话。
关于地图,现在我采用的方式更为简单。通过坐标来判断需要哪些图,然后直接显示出来。当然没有碰撞什么的,因为暂时不需要。至于人物走动什么的,不在本文讨论范围。
有了地图和城市后。涉及到的问题就是城市里资源的产生。
这时候,City表里需要有可供判断的时间和数量的字段。
比如:产生资金量Money,产生资金花费的时间Action_Time,上次产生资金时间Money_time。
这两个字段的数值应该在City_base表里出现。(即城市基础表,不同等级,不同类型城市的对应数值。这是给策划填数据用的,建好表后就等策划去头痛吧。如果你身兼数职。。。)
如何自动产生资源呢?
我们可以在城市所有人改变的时候,写入一个时间。或者在城市初始化的时候写入一个时间。
$Now_Time=date('Y-m-d H:i:s');(说明:$开头是变量的意思。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是你自己定义的。指某一个城市。如:$City_ID=1;
我们假定当前城市产生资金量为100。即$Money=100;(具体的数值,应该是由City_base表里取出的。)
假设间隔时间为$Action_Time,我们再假定是每小时执行一次。即$Action_Time=3600;(具体的数值,是根据你的初始化表里取得的。也可以根据城市等级或者用户等级取得。反正随便你自己怎么设定。)
这时候,有基础时间了。有基础资金产量了。有间隔时间了。让它循环执行起来就行了。
上面说过,服务端用C语言定时器。客户端用javascript。
服务端,资源定时器设定为5分钟执行一次。那么我们的误差就是5分钟。对网页游戏来说,可以接受。(战斗的定时器得1分钟吧。当然服务器够牛的话,几秒钟都可以。)
当然,可以完全php写,然后配置php的corn。现在我在做的程序就是直接用php写了。包括任意长时间的定时器类,专门控制抽象事件用的。C的定时器暂时没用。
每次执行什么代码呢?
首先得新建一个定时器任务的表。目的就是让定时器知道需要执行哪些程序和数据的更新。表内容比如:城市资源更新。当然,这个表可要可不要。建立的好处是方便处理类似保护状态不产生资源之类的问题。


精彩图集

赞助商链接