24点游戏的开发和实现—vc毕业设计内容摘要:
UpdateData(true)。 temp=m_edit。 timercount。 m_edit4=timercount。 UpdateData(FALSE)。 } if(timercount=0) {KillTimer(1)。 timercount=30。 (CButton*)CWnd::GetDlgItem(IDC_BUTTON5)EnableWindow(TRUE)。 } 查看如上函数,我们看到的关键函数就只有一个,那就是 KillTimer 函数。 我们从他的拼写可以看 到,其意思是消除时间。 其中还用到了控制时间秒数的变量 timercount,在如上函数中其最大直为 30,则说明游戏将在 30 秒内结束。 另外在时间控制下,其他一些控件也要实行相应的变化。 在如上程序中, id 为IDCBUTTON5 的空件在时间结束的时候要消除灰化。 游戏的开始和结束控制 每个游戏都有其游戏的开始控制和结束控制,当然 24 点游戏也不例外。 因此要控制游戏的开始结束也是游戏中必要的控件。 我们来看下其程序: void CWorkView::OnButton5() {if(istimer==false) {SetTimer(1,1000,NULL)。 (CButton*)CWnd::GetDlgItem(IDC_BUTTON5)EnableWindow(FALSE)。 (CButton*)CWnd::GetDlgItem(IDC_BUTTON3)EnableWindow(FALSE)。 (CButton*)CWnd::GetDlgItem(IDC_BUTTON2)EnableWindow(FALSE)。 (CButton*)CWnd::GetDlgItem(IDC_BUTTON4)EnableWindow(FALSE)。 }} 其中在控件中我们添加了控件 BUTTOM5,用于控制游戏的开始。 当按下开始按钮时,我们将控件 BUTTTON3, 2, 4都灰化。 这就实现了简单的游戏开始控制。 结束按钮和开始按钮大同小异,这里我们就不详细介绍了。 游戏的实现其具体的函数 游戏实现后的主要界面 完成了以上 4 大节工作之后,一个简单的 24 点游戏程序就基本生成了。 接着就是在程序上做简单的修改,查漏补缺。 通过游戏的连接,编译并运行。 运行没有出错,程序就运行如下。 从界面中我们看到了其中的主要功能都 具备了。 有相应的表达式输入功能,查看结果功能,显示正确答案功能,重新发牌,牌面设置以及定时控制。 在菜单中有文件和帮助两个主菜单。 其中文件菜单中有开始和结束控制。 如下分细节对系统实现进行分析,首先我们来看下按下设置牌面产生的效果。 我们看到,在按下了设置牌面的时候,弹出一个牌面设置的窗口。 在请输入牌面的输入框中默认了牌面数字全为 1,当然我么可以将其改写,比如我们改为 3 4 3 5 并按下确定,则弹出如下窗口。 我们可以看到按照如上的 要求我们实现了牌面的自定义功能。 接着我们来看看表达式输时产生的一些错误信息提示,包括语法错误,括号匹配,数字匹配等。 我在如下一一都显示出来。 其中的 3 个错误我们可以清楚的看到,当我们看到在第一个窗口中输入了与纸牌数字不正确的数字之后,提示了“请注意输入的数值是否正确”。 在第二个窗口中输入了左括号后直接点击“单机查看结果”键时弹出“括号不匹配”的错误提示。 在第三个窗口中输入“方法”俩汉字 的时候,我们看到了“输入语法错误”的提示。 以上我将所有的错误信息都做了很好的图文说明。 以下是输入正确表达式,并得出 24 点算法后的界面显示。 我们在牌面设置的时候输入 5 5 5 1 4 个数字的时候,显示正确结果的截面如下。 如上我们看到界面中弹出了“计算正确”的消息框,实现了 24 点游戏表达式的最后判别。 24 点算法的程序实现 //计算 24点的答案程序 BOOL Calc24(int iNum1, int iNum2, int iNum3, int iNum4, CStringamp。 strResult) // { //括号的几种情况 //无括号 //2 (a b) c d 同 a b (c d), 下省略 //3 (a b c) d //4 a (b c)d //5 (a b) (c d) //6 ((a b) c) d //7 (a (b c)) d int iNumArr[4]。 //定义一维数组 用于存放输入的数值 iNumArr[0] = iNum1。 iNumArr[1] = iNum2。 NumArr[2] = iNum3。 iNumArr[3] = iNum4。 if (CalcArray1(iNumArr, strResult))//调用 CalcArray1 函数判断其是否能算出24 { return TRUE。 } if (CalcArray2(iNumArr, strResult)) //调用 CalcArray2 函数判断其是否能算出24 { return TRUE。 } if (CalcArray3(iNumArr, strResult)) 调用 CalcArray3 函数判断其是否能算出24 { return TRUE。 } if (CalcArray4iNumArr, strResult)) 调用 CalcArray4 函数判断其是否能算出 { return TRUE。 } if (CalcArray6(iNumArr, strResult)) 调用 CalcArray6 函数判断其是否能算出 { return TRUE。 } if (CalcArray7(iNumArr, strResult)) 调用 CalcArray7 函数判断其是否能算出 { return TRUE。 } return FALSE。 } BOOL CalcArray1(int iNumInput[], CStringamp。 strResult)//没有括号的一个函 //数,类似的函数还有 6 个,这里不另外写上去了。 { // a * b * c * d 7 number int iNumMaths[7][2]。 //其中包括数值变量和运算符号有 7 个字符 for(int i=0。 i4。 i++)//循环语句判断输入的 4 个数字 { for(int j=0。 j4。 j++) { if(j==i) { continue。 } for(int k=0。 k4。 k++) { if(k==i||k==j) { continue。 } for(int l=0。 l4。 l++) { if(l==i||l==j||l==k) { continue。 } iNumMaths[0][0]=iNumInput[i]。 //将数值存入数组中 iNumMaths[2][0]=iNumInput[j]。 iNumMaths[4][0]=iNumInput[k]。 iNumMaths[6][0]=iNumInput[l]。 iNumMaths[0][1]=eNumber。 //将此字符代表数值还是运算符号的值存入数组 iNumMaths[2][1]=eNumber。 iNumMaths[4][1]=eNumber。 iNumMaths[6][1]=eNumber。 for (int oneOP = eAdd。 oneOP = eDiv。 oneOP++)//通过循环语句实现运算顺序 for (int twoOP=eAdd。 twoOP=eDiv。 twoOP++) for (int threeOP=eAdd。 threeOP=eDiv。 threeOP++) { iNumMaths[1][0] = oneOP。 //通过循环得到第一个字符的运算符号先 /, *后 + , iNumMaths[1][1] = eOperator。 //表明第一个输入的字符为变量还是运算符号 iNumMaths[3][0] = twoOP。 iNumMaths[3][1] = eOperator。 iNumMaths[5][0] = threeOP。 iNumMaths[5][1] = eOperator。 double dRes = CalcOneExpress(iNumMaths, 7)。 if(Equal24(dRes)) CombineResult(iNumMaths, 7, strResult)。 //合并结果 return TRUE。 } } } }//end for (int oneOP } } } } return FALSE。 } 24 点算法表达式的判别程序 int temp=0。 //用于控制 if 语句的判断 int total。 //用于判断输入数字和牌面数字是否匹配 rrorNum=3。 //3 种错误判断和一种正确结果的变量 CString s。 //用于在输入框中输入字符的变量 UpdateData(true)。 s=m_edit。 int length=()。 int dd。 UpdateData(FALSE)。 int nLength=()。 har * sz=new char[nLength]。 sz=(0)。 UpdateData(true)。 dd=eval_exp(sz)。 m_edit3=dd。 if(errorNum==0)// errorNum 有 4 个值,分别用以判断出错信息和正确消息 { MessageBox(输入语法错误 )。 } else if(errorNum==1) { MessageBox(输入括号不匹配 ) } else if(errorNum==2) { MessageBox(表达式不存在 )。 } else if(errorNum==3)//假如 errorNum 为 3则判断其表达式的长度 { for(j=0。 jlength1。 j++) { int getatq=(j)。 int getath=(j+1)。 if((getatq==39。 139。 )amp。 amp。 (getath==39。 039。 )) { (j,39。 a39。 )。 (j+1,1)。 length=()。 } if((getatq==39。 139。 )amp。 amp。 (getath==39。 139。 )) { (j,39。 b39。 )。 (j+1,1)。 length=()。 } if((getatq==39。 139。 )amp。 amp。 (getath==39。 239。 )) { (j,39。 c39。 )。 (j+1,1)。 length=()。 } if((getatq==39。 139。 )amp。 amp。 (getath==39。 339。 )) { (j,39。 d39。 )。 (j+1,1)。 length=()。 } } for(i=1。 i14。 i++)//循环语句判断输入值和牌面给定的牌是否匹配 { temp=0。 start=0。 while(temp!=(1)) { temp=(d[i],start)。 start=temp+1。 f(temp!=(1)) { a[i]++。 } } } for(i=1。 i14。 i++) { if(c[i]==m_iNum[0]) { a[i]。 } if(c[i]==m_iNum[1]) { a[i]。 } if(c[i]==m_iNum[2]) { a[i]。 } if(c[i]==m_iNum[3]) { a[i]。 } } total=abs(a[1])+abs(a[2])+abs(a[3])+abs(a[4])+abs(a[5])+abs(a[6]) +abs(a[7])+abs(a[8])+abs(a[9])+abs(a[10])+abs(a[11])+abs(a[12])+abs(a[13])。 if(total!=0) //利用 total 变量实现了数字匹配问题,假如 total 为 0则匹配正确 否则错误 Message。24点游戏的开发和实现—vc毕业设计
相关推荐
V754 1 台 6 恒温水域箱 上海 1 台 7 板框压滤机 杭州 1 台 8 搅肉机 JR50 1 台 小计 二 前期投入研发费用 自有 1 人员费用 2 实验用试剂、耗材 3 检测费用 4 其它费用 小计 合计 10 表 2 新增固定资产投资估算 单位 : 万元 序号 工程或费用名称 估算价值 建筑 工程 设备 购置 安装 工程 其它 费用 合计 其中 外币 (万美元) 备注 1 工程费用
1、高中物理资源下载平台世昌的博客 :B 卷 河北冀州中学20152016 学年高三期中考试高三年级物理试题 考试时间:90 分钟 试题分数:110 分 第卷(选择题 共 60 分)一、选择题(本题共 20 小题,共 60 分其中 112 题只有一个选项正确,13多选题全部选对的得 3 分,只选一个且正确的得 2 分,有选错或不答的得 0 分)1
当客户货单交割不能实现的时候,只有将货单实行转让,成交率比预期低,又回避了重要的价格问题。 企业的客户包括行业上、下游,中间贸易商,企业一方面提倡高交割率,但却满足不了所有客户的交割要求,交割率只能维持在20%至25%之间。 这样的交易模式造成的低交割率容易耽误消费厂家的生产安排,从而流失下游客商。 现货仓储与物流配送能力不高 现货仓储能力低XXX交易所坐落在广州市荔湾区。
项目建设方案 项目名称、建设性质及建设地点 项目名称:日产蛋 12 吨无公害蛋鸡养殖项目 建设性质:新建 建设地点: *****县 建设规模及产品(或经营)方案 其内容和规模为: 1 20 万只标准化、自动化健康蛋鸡养殖车间; 8 万只育雏育成蛋鸡养殖车间 2 自动化蛋鸡健康饲料车间。 3 生物有机肥车间。 技术、设备、建筑物(主体工程) 项目实现规模化、集约化,全进全出、密闭式饲养
t. LineSpaci ngLi nesToPoi ntselection. Par agr aphFor mat. LineSpacingLinesToPoi nt s(2)Sel ect .Li neSpaci ngLi nesToPoct agr aphForm neSpacingLinesToPoint s( 2Sel ect agr aphForm
1、高中物理资源下载平台世昌的博客 (二十二)电路电路的基本规律(45 分钟100 分)一、选择题(本题共 10 小题,每小题 7 分,共 70 分。 多选题已在题号后标出),当它们串联后接在电动势为 E 的电源上,通过一个电阻的电流为 I;若将它们并联后仍接在该电源上,通过一个电阻的电流仍为 I,则电源的内阻为() C. 析】选 B。 当两电阻串联接入电路中时 I=