欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    VC++课程设计.docx

    • 资源ID:1205005       资源大小:900.05KB        全文页数:27页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VC++课程设计.docx

    1、VC+课程设计24点游戏1设计目的VC+程序设计课程设计是计算机科学与技术专业的VC+程序设计课程的综合性实践环节。VC+程序设计是一门实用性很强的学科,是进行软件开发的主要工具,只有进行实际操作,才能将理论知识和实际应用有机的结合起来,锻炼学生分析解决实际问题的能力,提高学生实际运用的能力,为学生毕业设计,日后工作中的软件开发打下良好的基础。2功能描述由三个难度级别数,分别为一级、二级和三级。每次发牌前可进行难度设置,若不设置,系统默认为难度级别数为二级。难度级别设置完后,点击“发牌”按钮,桌面上显示四张翻开的扑克牌,并且游戏开始计时,进度条开始前进。在规定的时间内,用户可以在输入算式编辑框

    2、中输入想好的算式,并按下“验算”按钮。如果不输入任何数字和算符,会弹出“表达式有问题!”,然后再弹出一个对话框,显示“对不起,您的输入不正确!”;如果输入的数字与给出的不符或者符号不合法,会弹出“对不起,您的输入不正确!”;如果输入的数字与四张牌相符、字符亦合法但是答案不正确,就会出现“ The result is: ! ”;如果输入算式经运算后所得答案正确,则会弹出“你做对了!”。点击弹出对话框的确定按钮,会出现本轮的用时和分数。如果在规定的时间内,没有点击验算按钮,则会弹出一个对话框,上面显示“Time Over!”。在结束本轮游戏后,如果用户想继续游戏,点击“重新发牌”按钮即可重新发牌;

    3、如果用户想结束游戏,点击“结束”按钮即可结束游戏。3方案论证 3.1总体设计3.1.1功能流程图24点游戏的具体流程图如下图1所示,下面对流程图进行详细的说明。在游戏开始前有难度设置选项,用户可根据自己的实际水平进行设置。难度级别有三个级别,分别为一级、二级和三级。三个级别是通过时间来区别的,级别越高,可用时间越少。三个级别的对应时间分别是100秒、60秒和50秒。该设置不是必选项。如果用户不设置,系统默认为难度级别二。按下“发牌”,游戏开始,通过调用srand()和rand()函数,桌面上会随机显示出4张纸牌,这四张牌从110这10张牌中随机调出。同时,标识耗时时标的进度条开始前进(m_Pr

    4、ogress1-SetPos(m_Progress1-GetPos()+1),计时同步开始(SpendTime+)。由于三个等级设置的时间不一样,进度条在三种情况下的步长也不相同。游戏设置了时间限制,该设置是通过比较函数m_Progress1-GetPos()的返回值和参数m_Hardlevel的大小。如果函数的返回值小于参数m_Hardlevel,代表游戏还没结束,用户还有时间进行思考。否则,本轮游戏结束,在函数OnTimer()的作用下,会弹出对话“Time Over!”。若用户在规定时间内点击了“验算”按钮,系统通过对SubCompute()和TotalCompute()两函数的调用进行

    5、相应运算,紧接着系统调用OnYanSuan()函数对编辑框中运算出的结果进行验算,根据验算情况给出相应的结果。出现的结果有以下四中情况:(1)如果用户没在输入算式中输入算式,直接按“验算”按钮,会弹出“表达式不能为空白!”的提示对话框。(2)如果输入的数字与给出的不符或者符号不合法,会弹出“你的输入不正确!”的提示对话框。(3)如果输入的数字与四张牌相符、字符亦合法但是答案不正确,会弹出“The result is: !”。(4)如果输入算式经运算后所得答案正确,则会弹出“你做对了!”在以上任意一种情况下,点击弹出框中的“确定”按钮,系统会自动给出本局的得分和耗时。游戏的耗时使用SSpendT

    6、ime.Format(%d,SpendTime)这个函数进行显示,游戏得分是在综合考虑游戏级别、游戏所耗费时间的基础上给出(m_score=100*(m_Hardlevel-SpendTime) /m_Hardlevel)。于是,本轮游戏结束。本轮游戏结束后,用户可以选择重新开始,否则,可以点击“结束”按钮退出游戏。3.2软件设计3.2.1设计步骤24点游戏的具体设计步骤如下:创建MFC AppWizard(exe)工程,键入对应的工程名(luochao),在应用程序类型中选择基本对话框,其余的都采用默认选项,完成对话框的创建。通过插入资源Bitmap加载图片,图片通过拷贝和复制等操作加载完成

    7、。加载完成的图片在对应的工作区可以找到,选中对其名字进行修改。在对话框中添加4个图像、9个按钮、3个编辑框、1个进度条和3个单选按钮。然后,根据属性对以上所添加的控件进行属性修改,主要是对其进行重命名。图像内的属性修改除改名外,还要添加位图。下一步是对以上控件建立类向导,主要包括Add Function、Add Variable和Edit Code这三项的添加。在类的原文件中添加实现功能所需要的各种函数,并添加相应的代码,同时在头文件中添加对各种函数及变量的声明。对完成的程序进行保存,然后开始调试,根据错误进行修改,直至程序不在报错,并且可以实现预计的各种功能。3.2.2 程序界面设计24点游

    8、戏所用控件说明图如下:表1 控件类型、ID及相关说明对象IDCaption或说明变量名按钮IDC_OK退出按钮IDC_PARENL_BUTTON(按钮IDC_ADD_BUTTON+按钮IDC_SUB_BTTON-按钮IDC_MUL_BUTTON*按钮IDC_DEVIDE_BUTTON/按钮IDC_PARENR_BUTTON)进程IDC_PROGRESS1耗时m_Progress1静态文本IDC_STATIC静态文字说明一级单选按钮IDC_RADIO1一级m_Hardleve二级单选按钮IDC_RADIO2二级三级单选按钮IDC_RADIO3三级位图IDC_Picture0位图位图IDC_Pic

    9、ture1位图位图IDC_Picture2位图位图IDC_Picture3位图编辑框IDC_EDIT1输入计算m_Edit1编辑框IDC_STATIC10时间SpendTime编辑框IDC_STATIC11得分m_score按钮IDC_Start开始按钮IDC_YanSuan验算图2 24点游戏运行界面图3.3 关键功能的实现3.3.1 发牌功能的实现首先,通过BOOL CluochaoDlg:OnInitDialog()中,根据纸牌对应的ID号加载纸牌,例如:Bitmap7.LoadBitmap(IDB_BITMAP7)这条语句加载标有7的纸牌。利用该函数加载了标号110的十张纸牌和两张背景

    10、纸牌。然后运行中的以下一段代码,即可在图像框中得到四张铺开的纸牌。代码如下:srand(int)time(0);for(int i=0;iSetBitmap(HBITMAP(BitmapNumber0); (CStatic*)GetDlgItem(IDC_Picture1)-SetBitmap(HBITMAP(BitmapNumber1);(CStatic*)GetDlgItem(IDC_Picture2)-SetBitmap(HBITMAP(BitmapNumber2);(CStatic*)GetDlgItem(IDC_Picture3)-SetBitmap(HBITMAP(BitmapNu

    11、mber3);srand(seed)用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand ()产生的是假随机数字,每次执行时是

    12、相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。3.3.2 计时功能的实现首先,在void CluochaoDlg:OnStart()中,通过m_Progress-SetStep(1)和m_Progress-SetPos(0)设置进度条的步长为1,进度条的初始位置居左。然后调用void CluochaoDlg:OnTimer(UINT nIDEvent)来完成计时功能。利用函数if(m_Progress1-GetPos()=m_Hardlevel)来判断即使结束了没有,如果括号中的条件满足,则计时结束,跳出“Time Over!”的提示框。如果括号中的条件不满足,则执行

    13、以下代码:CProgressCtrl* m_Progress1=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1);m_Progress1-SetRange(0,m_Hardlevel);m_Progress1-SetPos(m_Progress1-GetPos()+1); 上述代码表示,如果时间没到,时间每流逝1秒,进度条就前进一步。当游戏时间即将结束的时候,进度条亦前进到最后一步。3.3.3 计算功能的实现对于输入结果的验算,主要是通过int LastPos(CString Str),int FirstPos(CString Str),char FirstF

    14、(CString Str),int SubCompute(CString Str),int TotalCompute(CString Str)等函数来来确定运算式各符号优先级和最终计算出输入算式的结果。现摘两段代码进行详细说明。代码1:int PluPos=Str.Find(+)+1;int Pos=200;if(PluPos=0)PluPos=200;if(PosPluPos)Pos=PluPos;char Result=-;int tempPos=SubPos;if(PluPosSetWindowText(+Sscore+分); UpdateData(FALSE);OnYanSuan()函

    15、数来对编辑框中运算出的结果进行验算,如果Result=24,则if语句被执行。语句m_score=100*(m_Hardlevel-SpendTime)/m_Hardlevel;说明用户花费时间越长或者游戏剩余时间占总时间比重越小,则本局游戏得分也相应越小。而通过语句Sscore.Format(%d,m_score);的作用则将int量m_score转换为Cstring量Sscore。同时,SetWindowText()函数发挥作用,显示出分数Sscore。4运行结果与分析4.2 测试结果4.2.1 在规定时间内完成点击“验算”按钮操作测试过程中,由于既涉及到纸牌点数和运算符,又会涉及到运算式

    16、结果,于是相应地会显示出四种结果,分别是:如果用户没在输入算式中输入算式,直接按“验算”按钮,会弹出“表达式不能为空白!”的提示对话框;如果输入的数字与给出的不符或者符号不合法,会弹出“你的输入不正确!”的提示对话框;如果输入的数字与四张牌相符、字符亦合法但是答案不正确,会弹出“The result is: !”;如果输入算式经运算后所得答案正确,则会弹出“你做对了!”。下面用图形做相应说明:1输入算式为空,点击“验算”,显示“表达式不能为空白!”,如下图所示:图3 输入表达式为空而出现的游戏界面2输入的数字与给出的不符或者符号不合法,点击“验算”,会弹出“你的输入不正确!”,如下图所示:图4

    17、 输入字符错误而出现的游戏界面3如果输入的数字与四张牌相符、字符亦合法但是答案不正确,点击“验算”,会弹出“The result is: !”,如下图所示:图5 输入字符正确而运算结果不正确出现的游戏界面4如果输入算式经运算后所得答案正确,点击“验算”,则会弹出“你做对了!”,如下图所示:图6 输入结果正确而出现的游戏界面4.2.2 在规定时间内未完成点击“验算”按钮操作规定时间内未进行输入,或输入后未完成点击“验算”按钮操作,显示“Time Over!”,如下图所示:图7 点击验算后结果界面5.结论与心得体会VC+的课程设计终于接近尾声了,又到了写课程设计报告的时间了。这次课设比以往的课设任

    18、务重、安排紧。首先,这次课设对VC+起到温故知新的作用。课程设计之初,思路全无,举步维艰,对于理论知识学习不够扎实的我深感“书到用时方恨少”。于是,重新捡起课本,对照课本基本控件这一章,将计算器和菜单栏制作这两个范例做了几遍。对于进程条的设置不清楚,又找同学复制了以前的课件来看,经与同学的再三讨论,终于弄清了进程条的设置。至于编程这一块,那是忘得更多了,于是又借了基本参考书来看,遇到难处先是仔细的思考然后在向同学请教。可以说开始的那么几天都是在查找资料,翻阅相关的书籍。其次,这次课设让我明白了实践出真理的道理。最初答辩弄完后,还有一些程序不知道怎么写。于是,又从网上收集相关程序,经分析、查询资

    19、料仍有一些地方看不懂。只能采用尝试往对话框中添加相应代码的方法。根据一大段的分析,感觉程序执行某个功能,将这段代码添加到对应位置。所有的代码添加完后,运行、调试,开始会有很多错误出现。我记得最多的时候有63个错误,逐条进行修改,再进行运行和调试。也不知道改了多少次和重做了多少次,终于做出了完美的游戏界面。再者,让我学会了如何创新。得到游戏界面后,我又从网上下了几个24点游戏与我的相比较。相比较发现,网上的游戏出牌比较合理,我的游戏出牌很杂乱,很多情况都是无解,我也相应做了调整。再者,我发现很多游戏都是倒计时,我也进行了尝试。除此,我发现有些游戏也加了四张牌的按钮,一发牌,对应的牌就显示在快捷键

    20、上,这点我也做了尝试。以上三点,就是我关于本次课设的创新,虽然最后没能实现,但这个过程的实践是快乐的,代表我开动了脑筋。最后,这是一场毅力的考验。课设开始给人感觉很难,但很庆幸我们都没有畏惧,还是尽力去查资料、想办法解决。怎么说,“态度决定一切”,我们终于跨越了这道障碍,圆满完成了课设。6.参考文献1 刘於勋等.C+程序设计M.北京:科学出版社,2007:24-1252 荣钦科技.Visual C+游戏编程基础M.北京:电子工业出版社,2004:42-1153 揣锦华.面向对象程序设计与VC+实践M.西安:电子科技大学出版社,2005:40-1014 罗伟坚.Visual C+经典游戏程序设计

    21、M.北京:人民邮电出版社,2006:20-855 郑莉. C+语言程序设计案例教程M.北京:清华大学出版社,2005.7:30-1117附录(关键源代码) BOOL CluochaoDlg:OnInitDialog() CDialog:OnInitDialog(); Bitmap0.LoadBitmap(IDB_BITMAP13); Bitmap1.LoadBitmap(IDB_BITMAP1); Bitmap2.LoadBitmap(IDB_BITMAP2); Bitmap3.LoadBitmap(IDB_BITMAP3); Bitmap4.LoadBitmap(IDB_BITMAP4);

    22、Bitmap5.LoadBitmap(IDB_BITMAP5); Bitmap6.LoadBitmap(IDB_BITMAP6); Bitmap7.LoadBitmap(IDB_BITMAP7); Bitmap8.LoadBitmap(IDB_BITMAP8); Bitmap9.LoadBitmap(IDB_BITMAP9); Bitmap10.LoadBitmap(IDB_BITMAP10); Bitmap11.LoadBitmap(IDB_BITMAP11); Bitmap12.LoadBitmap(IDB_BITMAP12);CProgressCtrl*m_Progress1=(CPro

    23、gressCtrl*)GetDlgItem(IDC_PROGRESS1); m_Progress1-SetRange(0,1); m_Progress1-SetPos(0); GetDlgItem(IDC_YanSuan)-EnableWindow(FALSE); CheckRadioButton(IDC_RADIO1,IDC_RADIO3,IDC_RADIO2); UpdateData(FALSE); void CluochaoDlg:OnStart() S=1; m_Edit1= _T(); m_score=0; UpdateData(FALSE); srand(int)time(0);

    24、for(int i=0;iSetBitmap(HBITMAP(BitmapNumber0); (CStatic*)GetDlgItem(IDC_Picture1)-SetBitmap(HBITMAP(BitmapNumber1); (CStatic*)GetDlgItem(IDC_Picture2)-SetBitmap(HBITMAP(BitmapNumber2); (CStatic*)GetDlgItem(IDC_Picture3)-SetBitmap(HBITMAP(BitmapNumber3); GetDlgItem(IDC_Start)-SetWindowText(重新开始); GetDlgItem(IDC_YanSuan)-EnableWindow(TRUE); int iRADIO=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3); if(iRADIO=IDC_RADIO1) m_Hardlevel=100; else if(iRADIO=IDC_RADIO2) m_Hardlevel=60; else if(iRADIO=IDC_RADIO3) m_Hardlevel=50; CP


    注意事项

    本文(VC++课程设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开