最近学习了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。的更多相关文章

  1. 一个简单的猜大小的小游戏 python

    初学python,用python写了一个简单的猜大小的小游戏 #!/usr/bin/env python #-*- coding:utf-8 -*- print "------------- ...

  2. 用C写一个简单的推箱子游戏(一)

    我现在在读大二,我们有一门课程叫<操作系统>,课程考查要求我们可以写一段程序或者写Windows.iOS.Mac的发展历程.后面我结合网上的资料参考,就想用自己之前简单学过的C写一关的推箱 ...

  3. 一个简单的Eclipse调试Debug流程(四)

    本文链接:https://blog.csdn.net/u011781521/article/details/55000066    http://blog.csdn.net/u010075335/ar ...

  4. 通过myclipse建立一个简单的Hibernate项目(PS:在单元测试中实现数据的向表的插入)

    Hibernate的主要功能及用法: Ⅰ.Hibernate封装了JDBC,使Java程序员能够以面向对象的思想对数据库进行操作 Ⅱ.Hibernate可以应用于EJB的J2EE架构,完成数据的持久化 ...

  5. JS事件 编程练习-自制计算器 使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。

    编程练习 使用JS完成一个简单的计算器功能.实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除. 提示:获取元素的值设置和获取方法为:例:赋值:document.getElement ...

  6. C - 一个C语言猜字游戏

    下面是一个简陋的猜字游戏,玩了一会儿,发现自己打不过自己写的游戏,除非赢了就跑,最高分没有过1000. 说明:srand(time(NULL))和rand(),srand,time和rand都是函数, ...

  7. 用C写一个简单的推箱子游戏(二)

    下面接着上一篇随笔<用C写一个简单的推箱子游戏(一)>来写 tuidong()函数是用来判断游戏人物前方情况的函数,是推箱子游戏中非常重要的一个函数,下面从它开始继续介绍推箱子的小程序怎么 ...

  8. 基于MFC的一个简单计算器

    写一个简单的计算器并不是什么很难的事,主要目的是要通过这个程序来学习和分析其中的核心算法.这个简易计算器的核心部分就是对输入的表达式的正确性判断与求值,其中包括对表达式的解析.中缀表达式转后缀表达式. ...

  9. [MFC] 梳理一个简单的图片处理桌面软件中用到的MFC控件技巧

     前言 前些天应好友之拖,帮忙设计一个简单的图像处理的小软件.朋友把核心算法封装好了,但是是用openCV类似于console的编程环境,要我在此基础上改成MFC桌面程序.下图是做成之后的效果: 我是 ...

随机推荐

  1. jquery/js当前URL对当前栏目高亮突出显示

    html: 1 <div class="nav"> 2 <ul> 3 <li><a href="index.html" ...

  2. Webview的使用和注意事项

    1.webView是一个展示web网页的控件,继承 AbsoluteLayout 2.webview的俩个回调应用层: 1)webViewClient 这个对象的创建 WebViewClient my ...

  3. Message,MessageQueue,Looper,Handler ——由view.post(runnable想到的)

    近日看到代码有view.post(runable),发现对handler机制又有些模糊,故做些复习. 这里就不再对具体的源码原理做深入复习了,就抄一些基本的结论吧. 1.基本概念 Message:基本 ...

  4. [技术翻译]Guava官方文档Ordering

    关于排序 Guava的链式比较器 例子 assertTrue(byLengthOrdering.reverse().isOrdered(list)); 梗概 Ordering是Guava的链式比较器类 ...

  5. cocos2d-x 音乐播放猜想

    "SimpleAudioEngine.cpp": void SimpleAudioEngine::playBackgroundMusic(const char* pszFilePa ...

  6. poj3620

    #include<iostream>#include<string>#include<stack>#include<vector>#include< ...

  7. mysql启动不了:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket

    ps aux |grep mysql kill所有列出的进程,然后重启 service mysql start 原因有可能是mysqld没启动:service mysqld start. 持续出现此问 ...

  8. shell脚本中的括号和实例

    1.单圆括号和双圆括号 “双圆括号”命令允许将高级的数学表达式放入比较中.格式如下: (( expression )) 除了 test命令(if-then [])使用的标准数学运算符外, 双圆括号还支 ...

  9. Js监控回车事件

    标题通俗的说,也就是绑定当用户按下回车键要执行的事件. 下面,入正题. 第一步,先编写简单的页面代码,这里我们只需要一个按钮就足够了.当然,还有按钮事件. <html> <head& ...

  10. powerpoint取色器有什么用|ppt取色器使用教程

    在使用powerpoint过程中常常发现一些功能我们很少用到,其实是自己不会用的原因,关于powerpoint取色器有什么用呢?接下来我们一起来学一下ppt取色器使用教程. powerpoint取色器 ...