学习总结
物联 201211672109 黄润明
成果展示:
源码可以到我的百度云盘下载 http://pan.baidu.com/s/1qW9Qqo0
,用5以上的qt版本才能跑
建议手动将图片放到debug之后的源目录下
主界面
开发过程介绍:
这个小游戏因为时间的关系并没有太完善,耗时大概4-6小时。开发环境是C++qt5.4,creator3.3.
老师你没看错,就是C++,然而我真的没有打算去学C#,,先跟老师你道个歉。
然而C#真的是门好语言,然而对我来说实在是没有必要去学。
回归正题,开发游戏还是一件十分有趣的事情,这个游戏我还是会去慢慢完善的。
总体思路是这样的,建立3个Qlabel类的标签用于显示图片,用Qpixmap类来读取图片,用一个
QString类的QVector存放照片的名字,利用C/C++自带的随机函数从QVector中摇出对应字符串;
猜对错只是用了一个普通的判断,名字相同就猜对,否则反之。其实我是知道老师不太想看我写这些的,总体思路还是要说一下的。
Debug部分才是关键,当然有些问题到现在还没有处理好,例如图片如何去适应label的尺寸大小,图片没办法完成分辨率的缩放。
这次猜猜看并没有用数据库,而是采用本地文件流读取的方法。这样会遇到有些bug,例如还没有按start的时候,按下图片按钮会导致程序崩溃,后来想了一下,是因为没有start的时候QVector并没有初始化
里面的值是不可知的,进行匹配会导致出错。也有图片没有成功读取的问题,根本原因是图片名字的不匹配,因为每个输入法的编码的方法都不一样,Qt要求都用标准的utf8字符,必须要使用文字格式的转换才能保证图片都能被顺利读取。
代码解读
信 和槽机制是 Qt 的核心机制,可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信。
就我个人来理解,信 槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信 与槽来代替函数指针,使程序更安全简洁。
A对象声明信 (signal),B对象实现与之参数相匹配的槽(slot),通过调用connect进行连接,合适的时机A对象使用emit把信 带上参数发射出去,B对象的槽会就接收到响应。
信 槽机制有一些特点:
1. 类型安全:只有参数匹配的信 与槽才可以连接成功(信 的参数可以更多,槽会忽略多余的参数)。
2. 线程安全:通过借助QT自已的事件机制,信 槽支持跨线程并且可以保证线程安全。
3. 松耦合:信 不关心有哪些或者多少个对象与之连接;槽不关心自己连接了哪些对象的哪些信 。这些都不会影响何时发出信 或者信 如何处理。
4. 信 与槽是多对多的关系:一个信 可以连接多个槽,一个槽也可以用来接收多个信 。
下面是代码
收获
老师的要求里面有一些相当有趣的想法,但是具体还没有去实现,例如分数,排行榜,概率统计之类的功能。我以前就没有想过这些问题,以前总想写个猜猜看还不简单么,然后就直接无视了。其实能把简单的事都做好,那就是不简单了。作为一个程序员,我觉得最需要的品质之一就是学会创新,看了一下老师对于这个猜猜的想法,顿时发现自己太low了,自己也许太自以为是了一点。前段时间一直在投简历,找单位,复习。现在发现做个猜猜看确实是个很好的放松的方式,能使自己乐在其中。希望自己以后能找到个对口的工作,这样人生才不会太无趣。
学期初的时候选了两门编程类的mooc,是 易的,一门是C++初级程序设计,一门是paython,只能说水太深,我学c++也有一段时间了,然而那门初级C++我并不能轻松应付,一方面是我的基础确实不扎实,另一方面,他们的系统并不完善,许多方面需要改进,都是一些枯燥无趣的练习,完全没有坚持下去的动力,后来发现证书要交钱,100也确实不是个小数目,也就弃了,paython的话还是有在看的,视频质量还是相当不错的。
其实对本专业用C++作为第一语言感到非常的不解,难度不是一般的大,而且并没有真的把这门语言用上来。后来C51和stm32的课程都是使用C语言,到数据库课程要求的java,大部分人对此一无所知。至于后来的C#,大家都麻木了吧,没有一个更加专业和针对性的专业培养方案,作为一个普通的学生很容易迷茫。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!