用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。
最近学习了MFC一些比较基础的知识,所以打算通过做一个简单的数字游戏来理解MFC的流程并进一步熟悉其操作。
在这里,我做了一个猜数字的小游戏。第一步当然是设计主界面,先给大家展示一下游戏界面:
主界面:

从这个主界面可以看到,它包含标题,菜单栏,工具栏。
标题是给人一个认识,这是什么游戏,标题设置为:“猜数游戏”;
而菜单栏和工具栏才是游戏的核心,它要保证能够完成游戏的基本功能。
菜单栏和工具栏是对应的,包含了”start“,"help","restart"这三个菜单响应。很明显”start“和"restart"这两个实现的是”开始游戏“和”重新开始游戏“;help是描述游戏规则。
点击”help“或者带有蓝色问号的图标,即可以读取关于游戏的信息,在这里我采用的是显示对话框来表达:

对话框显示猜数字游戏的规则,即输入四个不重复的数字,点确定按钮后结果显示在输出结果中。
输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。如果九次仍未猜中,则游戏结束。
点击确定后回到主界面。
所以,现在最主要的是"start"要实现游戏的功能,我们可以先自己在纸上设计游戏开始界面的大致模式。这个模式主要是指:游戏的输入参数,游戏的输出参数等等。
在这个过程中,我是根据需要实现的功能,先用C语言完成并进行测试。然后根据程序中的参数,自己设计一个比较清晰,便于用户操作的游戏开始界面。

根据对话框中的一些静态文本提示,可以知道我们只需要在”输入四位数:“后的文本框中输入四个不重复的数;点击“确定”按钮后,其他文本框会根据编好程序的运行结果进行显示。
记得在做测试时,一定要考虑所有可能出现的情况:如用户本身输入的四位数有重复,我们要提示他重新输入,即显示下面的画面:

现在来分析游戏的输出参数有:”输出结果“----描述格式为*A*B,如游戏规则中描述的;
”尝试次数“---代表猜的次数,因为游戏中最多限9次,这有提醒用户的作用,也从一定程度上反映用户的能力;
”游戏耗时“可以作为游戏水平的另一个指标”;
”正确答案“---有些用户玩到一半不想继续,或者游戏失败后,想看正确答案,则只需点击该按钮;
“历史记录”---是记录猜过的数以及与其对应的输出结果。

当然这个正确答案是由程序随机产生的,每次产生有不一样,且四位数是不重复的。
接下来,我们就尝试玩一下这个游戏,顺便测试游戏成功或者失败后有什么指标可以参考:

可以看出,历史记录中会记录每次输入的四位数以及它们的结果,目前尝试的次数为9,用时47s,但是还没有猜出来,则显示“很遗憾游戏失败!”对话框。

而现在这个操作,显示出“4A0B”即为成功,尝试次数为3,用时15s,并提示“祝贺你成功了!”。
如果你想继续玩,则点击“restart”,又可以重新游戏。
总而言之,这个游戏是比较简单的,涉及到MFC的菜单栏,工具栏,对话框,文字输出以及一些控件处理,当然还有一些地方做的不是很完美或者还有其他的功能没有,
但是关键在于掌握一个比较完整的MFC流程,以及在实现过程中各个模块的整合与一些细节处理!
用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。的更多相关文章
- 一个简单的猜大小的小游戏 python
初学python,用python写了一个简单的猜大小的小游戏 #!/usr/bin/env python #-*- coding:utf-8 -*- print "------------- ...
- 用C写一个简单的推箱子游戏(一)
我现在在读大二,我们有一门课程叫<操作系统>,课程考查要求我们可以写一段程序或者写Windows.iOS.Mac的发展历程.后面我结合网上的资料参考,就想用自己之前简单学过的C写一关的推箱 ...
- 一个简单的Eclipse调试Debug流程(四)
本文链接:https://blog.csdn.net/u011781521/article/details/55000066 http://blog.csdn.net/u010075335/ar ...
- 通过myclipse建立一个简单的Hibernate项目(PS:在单元测试中实现数据的向表的插入)
Hibernate的主要功能及用法: Ⅰ.Hibernate封装了JDBC,使Java程序员能够以面向对象的思想对数据库进行操作 Ⅱ.Hibernate可以应用于EJB的J2EE架构,完成数据的持久化 ...
- JS事件 编程练习-自制计算器 使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。
编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...
- C - 一个C语言猜字游戏
下面是一个简陋的猜字游戏,玩了一会儿,发现自己打不过自己写的游戏,除非赢了就跑,最高分没有过1000. 说明:srand(time(NULL))和rand(),srand,time和rand都是函数, ...
- 用C写一个简单的推箱子游戏(二)
下面接着上一篇随笔<用C写一个简单的推箱子游戏(一)>来写 tuidong()函数是用来判断游戏人物前方情况的函数,是推箱子游戏中非常重要的一个函数,下面从它开始继续介绍推箱子的小程序怎么 ...
- 基于MFC的一个简单计算器
写一个简单的计算器并不是什么很难的事,主要目的是要通过这个程序来学习和分析其中的核心算法.这个简易计算器的核心部分就是对输入的表达式的正确性判断与求值,其中包括对表达式的解析.中缀表达式转后缀表达式. ...
- [MFC] 梳理一个简单的图片处理桌面软件中用到的MFC控件技巧
前言 前些天应好友之拖,帮忙设计一个简单的图像处理的小软件.朋友把核心算法封装好了,但是是用openCV类似于console的编程环境,要我在此基础上改成MFC桌面程序.下图是做成之后的效果: 我是 ...
随机推荐
- 2015-09-21CSS:引入方式、选择器、注释、文字样式
1.HTML中引入CSS的方式 HTML中引入CSS的样式有4种:行内式.内嵌式.导入式和链接式. ⑴行内式 行内式是在标记的style属性中设定CSS样式.这种方式没有体现出CSS的优势,不推荐使用 ...
- 【转】iOS Developer:真机测试
摘要 申请真机调试证书全过程,最新更新:2014-05-19 2014-10-16记:由于现在 itunes 更新变化较大,本文可能不能很好地解决您的问题,而我现在不负责公司的发布调试问题,暂未及时更 ...
- 认识html文件基本结构
html文件的结构:一个HTML文件是有自己固定的结构的. <html> <head>...</head> <body>...</body> ...
- 键盘数字对应的ASCII码(keycode码)
keycode 1 = 鼠标左键keycode 2 = 鼠标右键keycode 3 = Cancelkeycode 4 = 鼠标中键keycode 8 = BackSpace keycode 9 = ...
- [转载]__type_traits
在STL中为了提供通用的操作而又不损失效率,我们用到了一种特殊的技巧,叫traits编程技巧.具体的来说,traits就是 通过定义一些结构体或类,并利用模板类特化和偏特化的能力,给类型赋予一些特性, ...
- href 里面 链接前面加/与不加的区别?(绝对路径与相对路径)
在写href链接时,有绝对路径与相对路径,href 里面 链接前面加/与不加的区别? href="/cp/images/lis.jpg" 相对路径 cp前面/会获取当前路径,组合成 ...
- mongoDB之用户及权限设置
之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB.在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问. 我部署的环境是ubuntu 1 ...
- python——BS解析器
- 浅谈iOS视频播放的N种解决方案
简 注册登录 添加关注 作者 Maru2016.03.22 20:46* 写了4349字,被135人关注,获得了207个喜欢 字数1621 阅读2895 评论43 喜欢159 header ...
- ecilipse Javadoc文档注释
— 标签 @param @param 空格后面跟上形参(不是数据类型)空格后跟着对该参数的描述. 在描述中第一个名字为该变量的数据类型 对于参数的描述是一个句子,最好不要首字母大写, 如果出现了句号这 ...