用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桌面程序.下图是做成之后的效果: 我是 ...
随机推荐
- Cacti添加threshold、monitor和setting
Cacti版本:Version 0.8.8b 一.插件介绍: monitor:通过简单明了的图标提供服务器的运行状态 settings:给不同的插件提供一些共用的信息,如邮件信息,dns信息thold ...
- 015_xml_函数
015_xml_函数 --环境准备******************************************************************* USE test --f:/t ...
- Swift - 25 - 控制转移和二维数组
//: Playground - noun: a place where people can play import UIKit // fallthrough // fallthrough会在当前c ...
- 如何修改Linux系统下的PATH(如何添加自己的路径到PATH)
修改Linux的PATH方法有三(添加用户的路径到PATH): 方法一: 直接在命令行中输入:#PATH=$PATH:/etc/apache/bin.这种方法只对当前会话有效,也就是说每当登出或注销系 ...
- 深入浅出理解QTimeLine类
网上找了下QTimeLIne类的介绍,要么就是代码一贴自己看去,要么就是说不到重点,正巧自己项目遇到这个类,在这里写一下,给需要的同学看下. 因为我最近需要有动画方面配合时间间隔触发QGraphics ...
- 在VMware安装Centos再安装Oracle数据库(个人学习使用)
打开VMware 选择稍后安装 自定义安装 小生安装的是64位的Centos 给虚拟机设置名称和安装位置 设置虚拟机打处理器并分配内存(oracle12G我建议内存为2G以上) 网络类型选择仅主机模式 ...
- angularJS内置指令一览
基础ng指令 ng-href ng-src ng-disabled ng-readonly ng-checked ng-selected ng-class ng-style ng-show ng-hi ...
- int string convert
C++ int与string的转化 int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释.缺省 情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀 ...
- 水仙花 AC 杭电
水仙花数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- lua curl动态链接库编译安装
关于lua curl的资料网上并不是很多.找来找去就那么几个,所以我绝得很有必要把我的经验记下来,以防下次忘记 ...