VC++ 2008开发网络百家乐街机游戏(下)
2009-02-27 20:03:11 来源:WEB开发网运行后导出格式截图如下:
4.3 游戏时钟端设计
游戏时钟控制台是控制的整个百家乐游戏启停运行的,操作人员通过游戏时钟控制台控制前台客户端游戏的运行与暂停,整个游戏的开局与倒计时皆可在此模块操控.
4.3.1 软件界面布置
打开Visual C++ 2008 IDE环境,新建以TH_ROUND_TIM命名的MFC Dialog工程方案,布置Dialog界面的控件如下图:
4.3.2 模块编码
根据该款百家乐街机游戏的设计思想,游戏时钟控制台通过网络数据源读取服务端的ACCESS 2007数据库,并由操控数据库中的th_round_time同步时钟记录表控制前台客户端的运行,因此采用定时进程的设计思想编写该模块的核心函数,编码如下:
void CTH_ROUND_TIMDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(bool_end)
{
CString strdjs,strsubdjs;
//读取游戏设置的倒计时数值
labelccdjs:
try
{
m_djs.GetWindowText(strdjs);
strsubdjs.Format("%d",atoi(strdjs.operator LPCTSTR())-1);
CDATABE_ADO m_ado;
m_ado.Open("TH_ROUND","admin/admin","flyingtjf");
m_ado.OpenTable("select * from th_round_time");
m_ado.SetField("djs",strsubdjs);
m_djs.SetWindowText(strsubdjs);
m_ado.Close();
}
catch(...)
{
goto labelccdjs;
}
if(atoi(strsubdjs.operator LPCTSTR())==10&&string_gameregular=="BTOC")
{
//在倒计时几秒时阻断前端客户机的一切上分操作
if(bool_sfcdpx)
{
run_cdpx();
}
else
{
if(bool_sfzdsc)
{
run_zdsf();
}
}
}
//将游戏时钟控制台置于等待状态
if(atoi(strsubdjs.operator LPCTSTR())==0)
{
labelstart:
try
{
CDATABE_ADO m_datado;
m_datado.Open("TH_ROUND","admin/admin","flyingtjf");
m_datado.OpenTable("select * from th_round_wait");
m_datado.SetField("reset","1");
m_datado.Close();
}
catch(...)
{
goto labelstart;
}
//在前台客户端游戏运行发牌动画时同步等待
Sleep(10000);
CString bool_waitmac="1";
do
{
label:
try
{
CDATABE_ADO m_ado;
m_ado.Open("TH_ROUND","admin/admin","flyingtjf");
m_ado.OpenTable("select * from th_round_wait");
bool_waitmac=m_ado.GetField("waitmac");
m_ado.Close();
}
catch(...)
{
goto label;
}
}
while(bool_waitmac=="1");
//下一轮游戏倒计时开始
CString bufferdjs;
{
label1:
try
{
CDATABE_ADO m_ado;
m_ado.Open("TH_ROUND","admin/admin","flyingtjf");
m_ado.OpenTable("select * from th_round_info");
bufferdjs=m_ado.GetField("倒计时");
string_gameregular=m_ado.GetField("游戏规则");
…
//读取设置的基础数据
}
//场次计数
CString string_bjcc;
m_bjcc.GetWindowText(string_bjcc);
labelccjs:
try
{
CDATABE_ADO m_ado;
……
m_datado.Close();
}
catch(...)
{
goto labelend;
}
//180局游戏运行完毕后,时钟控制台自动停止
if(atoi(string_bjcc.operator LPCTSTR())>=179)
{
KillTimer(1);
bool_end=false;
//总局数计数
…
MessageBox("本局场次已结束!","提示");
}
}
}
CDialog::OnTimer(nIDEvent);
}
更多精彩
赞助商链接