服务端程序:
获得当前服务器时间。
获得当前需要更新城市。
判断服务器时间与$Money_time的时间差。(时间戳,具体的时间戳网上资料满多的。)
判断时间差是否大于$Action_Time。
大于,则更新资源。同时更新$Money_time。
小于,则无操作。
客户端程序:
获得当前服务器时间。
获得当前城市的$Money,$Money_time,$Action_Time。
使用javascript显示剩余时间的倒计时,以及增加的资源量。
客户端特殊情况触发:
因为客户端显示的资源情况是伪同步,所以当客户端使用该资源的时候。需要服务端将当前的实际资源更新,属于定时器处理的时间也需要更新。
即,当客户端触发涉及资源的情况时,立即更新当前资源。同时更新定时器中会用到的$Money_time。这样才不会造成,看的资源用不到,或者定时器重复产生资源。
总体来说。这部分程序都很简单。难点在C语言定时器的制作,以及前台javascipt倒计时的写法上。
C语言定时器,找个C语言程序员,超简单;前台的javascipt,网上有很多倒计时的代码,找个来改改就能用。
Code
<SCRIPT LANGUAGE="JavaScript">
var maxtime = 这里是你的时间差///一个小时,按秒计算,自己调整!
function CountDown(){
if(maxtime>=0){
minutes = Math.floor(maxtime/60);
seconds = Math.floor(maxtime%60);
msg = "你的文字说明"+minutes+"分"+seconds+"秒";//动态显示剩余时间。
document.all["timer"].innerHTML=msg;
//if(maxtime == 3) document.all["timer"].innerHTML='只剩3秒!';
--maxtime;
}
else{
clearInterval(timer);
document.all["timer"].innerHTML='时间到';
}
}
timer = setInterval("CountDown()",1000);
</SCRIPT>
<div id=timer></div>
这个是网上找的代码。稍微修改就可以用的。这里只是显示了倒计时。也可以改为显示资源的增加情况。
C语言里操作mysql数据库。
Code
// TODO: Add your control notification handler code here
bool bRes = m_dbConn.Connect("数据库ip地址", 3306 , "用户名", "密码", "数据库名");
if(!bRes)
{
AfxMessageBox("connect fail");
return;
}
string strSql = "select * from city limit 1";//所有显示或取值类的都用这段。中间的sql语句可以自己构造。
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语句可以自己构造。
bRes = m_dbConn.ExecuteUpdate(strSql);
if(!bRes)
{
AfxMessageBox("ExecuteUpdate fail");
}
*/
m_dbConn.Close();







