用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桌面程序.下图是做成之后的效果: 我是 ...
随机推荐
- 关于svn获取获取文件时 Unable to connect to a repository at URL"https://..."执行上下文错误:参数错误
错误提示: 下面的六种解决方案都未能解决: 1.不提示输入用户名和密码,不管重装多少次都一样. 2.TortoiseSVN的setting->Saved Data->Authenticat ...
- DHCP服务器
DHCP指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码.首先,DHCP服务器必须是一台安装有Windows 2000 Server/Advanced ...
- (转)ThinkPHP使用心得分享-分页类Page的用法
转之--http://www.jb51.net/article/50138.htm ThinkPHP中的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.clas ...
- linux术语解析(持续更新)
1.linux内核有个版本,分别是 longterm: 提供长期支持的内核版本 stable: 稳定版本 Beta 测试版
- Java并发编程之CAS
CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术.简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替 ...
- 记一次npapi插件无窗口(windowless )化下的妙巧思路然后解决问题的超爽体验过程
1:问题 集成第三方的ocx控件,用来做pdf显示和签名.如果用窗口化插件做,很简单,加载ocx到窗口中,再显示到网页即可.但这样有个缺点.就是这个窗口会浮动在网页元素的上面,导致遮挡住网页元素.比 ...
- hdu 3371 Connect the Cities (最小生成树Prim)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3371 题目不难 稍微注意一下 要把已经建好的城市之间的花费定义为0,在用普通Prim算法就可以了:我没 ...
- 『重构--改善既有代码的设计』读书笔记----Remove Assignments to Parameters
C++存在按值传递和按引用传递两种传递方式,Java严格按照按值传递这种方式来进行.以按值传递方式的角度来说,如果你 int test(int a) { ) { a = 1; } return a; ...
- Destoon QQ互联一键登录审核不通过的解决方案
在QQ互联上申请帐号之后提交了审核, 后台填写APPID和KEY之后自己申请的QQ号可以正常登录,但QQ互联审核的时候一直审核不通过说是“您的网站审核未通过,原因是“点击QQ登录按钮提示登录失败或出现 ...
- python抓取网页图片
本人比较喜欢海贼王漫画,所以特意选择了网站http://www.mmonly.cc/ktmh/hzw/list_34_2.html来抓取海贼王的图片. 因为是刚刚学习python,代码写的不好,不要喷 ...