开发网页游戏入门教程之系统设计篇webgame+design(3)
服务端程序:
获得当前服务器时间。
获得当前需要更新城市。
判断服务器时间与$Money_time的时间差。(时间戳,具体的时间戳网上资料满多的。)
判断时间差是否大于$Action_Time。
大于,则更新资源。同时更新$Money_time。
小于,则无操作。
客户端程序:
获得当前服务器时间。
获得当前城市的$Money,$Money_time,$Action_Time。
使用javascript显示剩余时间的倒计时,以及增加的资源量。
客户端特殊情况触发:
因为客户端显示的资源情况是伪同步,所以当客户端使用该资源的时候。需要服务端将当前的实际资源更新,属于定时器处理的时间也需要更新。
即,当客户端触发涉及资源的情况时,立即更新当前资源。同时更新定时器中会用到的$Money_time。这样才不会造成,看的资源用不到,或者定时器重复产生资源。
总体来说。这部分程序都很简单。难点在C语言定时器的制作,以及前台javascipt倒计时的写法上。
C语言定时器,找个C语言程序员,超简单;前台的javascipt,网上有很多倒计时的代码,找个来改改就能用。
Code
1 <SCRIPT LANGUAGE="JavaScript">
2 var maxtime = 这里是你的时间差///一个小时,按秒计算,自己调整!
3 function CountDown(){
4 if(maxtime>=0){
5 minutes = Math.floor(maxtime/60);
6 seconds = Math.floor(maxtime%60);
7 msg = "你的文字说明"+minutes+"分"+seconds+"秒";//动态显示剩余时间。
8 document.all["timer"].innerHTML=msg;
9 //if(maxtime == 3) document.all["timer"].innerHTML='只剩3秒!';
10 --maxtime;
11 }
12 else{
13 clearInterval(timer);
14 document.all["timer"].innerHTML='时间到';
15 }
16 }
17 timer = setInterval("CountDown()",1000);
18 </SCRIPT>
19
20 <div id=timer></div>
21 这个是网上找的代码。稍微修改就可以用的。这里只是显示了倒计时。也可以改为显示资源的增加情况。
C语言里操作mysql数据库。
Code
1 // TODO: Add your control notification handler code here
2 bool bRes = m_dbConn.Connect("数据库ip地址", 3306 , "用户名", "密码", "数据库名");
3 if(!bRes)
4 {
5 AfxMessageBox("connect fail");
6 return;
7 }
8
9 string strSql = "select * from city limit 1";//所有显示或取值类的都用这段。中间的sql语句可以自己构造。
10 ResultSet* rs = m_dbConn.ExecuteQuery(strSql);
11 while(rs->Next())
12 {
13 string str = rs->GetString("username");
14 AfxMessageBox(str.c_str());
15 }
16 /*
17 strSql = "update city set money=money +100 where City_ID='xxx'";//所有的增加、删除、更新都用这段,中间的sql语句可以自己构造。
18
19 bRes = m_dbConn.ExecuteUpdate(strSql);
20 if(!bRes)
21 {
22 AfxMessageBox("ExecuteUpdate fail");
23 }
24 */
25 m_dbConn.Close();
26
27 定时器的主函数。
28 void CBeiLiDlg::Go()
29 {
30 while(true)
31 {
32 // AfxMessageBox("go");
33
34 Sleep(5*1000);//毫秒。定时器刷新时间。
35 }
36 }当然。这里的C的代码不能直接用。只是一部分。
新的方法是,通过php定时器类负责前台、时间到后,调用ajax执行完成。后台通过定时执行php定时器类的专用处理函数,处理前台掉线,前台未正常执行等情况。
如果我们的新游戏今年年底能正常上线的话。我可以公开这个类,没技术含量,但是很巧妙。
地图、城市、基本上算是有了。
接下来是城市里的建筑。

