游戏设计规则
按“开始游戏”后,商品展台将出现一款产品,计时器开始计时,必须在一分钟内猜出商品的价格。将所猜的价格输入到编辑框中,按回车键或[确认输入]键,计算机将对输入值进行判断,给出三种结果,即“高了”、“低了”及“完全正确”。根据提示做下一步判断,如果判断正确,则给出下一件商品,直到耗时结束。除了时间限制,限制每种商品竞猜的次数不超过十五次。要想过关可不那么容易!
原理及功能实现
本程序可以分成几个功能模块,游戏启动模块、计时模块、提交答案模块、商品显示模块。下面具体介绍一个各模块的功能。
成员变量:
int Imagecounter; //控制计时器
int random[9]; //实现记忆已选商品
int totalnum=0; //控制猜价次数
int tmprandom; //标识当前商品号
int recordersuccess; //标识猜对次数
IDI_time1~IDI_time13代表了每隔5秒的各种计时器状态图标ID号;
IDI_commondity1~IDI_commondity10代表以上十种商品的图标ID号;
1、游戏启动模块
该模块的启动是对应于图1中的[开始游戏]按钮,主要是设置计时时钟,初始化一些变量参数,并激活价格输入编辑控件框,同时为玩家随机调入第一件商品。
2、计时模块
它利用发送的WM_TIMER消息,来处理关于游戏计时方面的事务,在该消息的响应函数OnTimer()中处理每隔5秒的图标动态调入,这样在对话框界面上会出现时钟,直观地提示玩家用时量,当出现超时,计时器消失,输入编辑控件转成非激活状态,同时弹出一个对话框提示。
3、提交答案模块
该模块的启动是对应于图1中的[确定输入]按钮,它负责处理用户输入的价格,并将它同商品的实际价格比较,并做出提示。如果正确,它将调用“商品显示模块”再次在商品展台上显示另一种商品,在这个模块中我们加入了对一件商品所猜次数的记录,并做出了相应的处理,这也是为了增加游戏的难度。
//判断结果
void CMyguessDlg::Onyes()
{
double tmpinputprice,tmprealprice;
char tmpcharinputprice[10],*end;
CString mystate;
//将对话框输入传给它所捆绑的变量
totalnum++;
UpdateData(TRUE);
m_digitalcontrol.SetFocus();
m_digitalcontrol.SetSel(0,-1,FALSE);
//如果没有输入价格则提示出错
if(m_mydigital=="")
{
MessageBox("请输入您猜的价格!","猜价格",MB_OK);
return ;
}
