[Visual Studio]MFC游戏开发之回合制对战系统二_by书訢

基于MFC的单机对游戏 我们知道,图像是由一个个像素点组成,如果像画出一个图像也就是把图像的每个点都画出来,但那种画法不能一次性将完整的图像呈现给你,所以我们就采用双缓冲技术画图,代码如下:【画图代码必须加在OnDraw()代码里】《算法原理》这堂课要结课了,这是通过这个课第一次接触C++,所以就用MFC设计一个小游戏(游戏可玩性还可以更丰富,主要是考试多加没时间,就没有加那么多,有兴趣的可以在此基础上丰富我的代码)if (HeroAttack.frame == 4) //到最后了再重头开始。 阅读详情

引子:

感谢阅读


这一篇博客是我们整个MFC游戏的实操第二篇,希望大家多多支持

项目总览地址:http://blog.csdn.net/sx_csu2016sw/article/details/76473309

项目下载地址在文章末尾,如果出现了问题请留言~~


希望作为读者的你们可以多多关注我的作品,并留言或者加我qq一起学习

因为之前自己在学习的时候总是觉得有些博主们讲的有些快,所以我会讲的比较详细,能力好的可以快速掠过~~

若需转载请注明来处:http://blog.csdn.net/SX_csu2016sw

希望你们多多留言,你们的鼓励与指出的不足都是懒癌青年前进的动力




 登陆注册界面预览







登陆与注册的界面实现

开始制作我们的登录界面以及我们的注册界面

现在默认大家都已经有了两个对话框以及绑定的两个类

大家可以先下载我在文章末尾的三个链接文件,整合代码以后打开VS2015进行查看代码(因为我会按照这个项目来进行讲述,可以打开自己的项目按照我之前的步骤操作一翻,等看完这篇以后进行自己的创造哦!切忌照搬,一定要自己打一遍才会有收获哦)

 

上面的类就是我们的登录窗口绑定类,下面的是我们的注册窗口绑定类

今天我们只看这两个类

登录界面:

1.登录的时候对用户一些奇葩操作的一些判断

2.贴图处理(背景图,按钮图....)

3.如果你已经运行了代码,你会发现,登录与注册按钮在鼠标移动上去的时候会改变颜

4.实现界面之间的跳转

注册界面同理

 

接下来讲解上面四个点是怎么实现的:

主要利用IO知识,如果IO流还不清楚的话,建议先找一篇IO流相关的博客进行学习

看到这里

void CjointeffortDlg::OnLButtonDown(UINT nFlags,CPoint point)

CString cstrName;//定义CString类型的变量存储账号密码

CString cstrPassword;

GetDlgItemText(IDC_number, cstrName);//通过我们的ID得到文本框上的输入

GetDlgItemText(IDC_password, cstrPassword);

string strName= CT2A(cstrName);//将CString类型装换为String类型以便后面使用

string strPassword = CT2A(cstrPassword);

 

之后的操作就是很熟悉的IO操作了吧,不管是什么语言转过来做这个想必都看的懂了吧~

下面是一些MFC的操作:

MessageBox(_T("登录成功"),_T("提示"), 1);//弹出一个提示框

SetDlgItemText(IDC_password,_T(""));//清除文本框组件的内容

 

对用户的一些操作判断还是挺简单的,代码应该写的还清楚

 

贴图需要在OnPaint中进行处理

贴图方式很多,可以使用直接贴图也可以使用双缓冲贴图方式。

 

CPaintDC dc(this);//窗口dc

CDC memdc; //内存dc

CBitmap hBmpbg; //位图

GetClientRect(&ClientRect);//设置一个矩形,用来保存窗口大小

//这边的ClientRect是在头文件定义的,这边是一个矩形类,来辅助指定一个区域

 

hBmpbg.CreateCompatibleBitmap(&dc, ClientRect.Width(), ClientRect.Height());

//这边利用之前得到确定大小的矩形类设置位图大小

memdc.CreateCompatibleDC(&dc);//关联c窗口dc与内存dc

CBitmap* OldBitmap = memdc.SelectObject(&hBmpbg);//设置位图

 

CImage imagebg; //背景图片

imagebg.Load(_T("theme//登录//登录总界面发光.png"));//加载背景图   410  505

imagebg.BitBlt(memdc, 0, 0, ClientRect.Width(), ClientRect.Height(), 0, 0, SRCCOPY);

 

dc.BitBlt(0, 0, ClientRect.Width(), ClientRect.Height(), &memdc, 0, 0, SRCCOPY);//进行绘图

 

//将内存dc绘制到窗口上 //还原画刷,删除多余画刷,释放内存dc

memdc.SelectObject(OldBitmap);//将内存DC设置的位图还原,这边是选择资源的函数,方便我们下次绘图使用

hBmpbg.DeleteObject();

memdc.DeleteDC();

 

这边这个画图的东东我再解释一下:

一个窗口有它的内存DC,将其设置一个位图,这样在之后的BitBlt函数中就可以进行绘画了

 

上面的代码是这样的,首先我们得到当前窗口的DC,并主动生成一个内存DC,用来作为缓冲之用,我们先画在缓冲区,之后一起画到窗口上。

 

通过我们头文件的矩形类对象ClientRect通过函数GetClientRect(&ClientRect)将窗口大小得到,之后位图通过我们的矩形类来进行设置大小,并与窗口DC绑定

 

同时CBitmap* OldBitmap = memdc.SelectObject(&hBmpbg)辅助我们保存尚未操作过的位图,以便下一次画图使用。

 

画图的函数中可见我们先画在了内存dc上,然后我们在最后的地方再将内存dc画在了我们的窗口dc上

当然最后不要忘记了再次选择位图资源方便下次使用,同时删除掉我们现在不需要的资源

相信这样之后画图就不是难事了吧

 

只需要计算好位置,找一张大小合适并且美观的图片那么我们的登录界面制作当然就完成了大部分咯


好了现在进入第三部分,书訢为你解答,如果实现鼠标移动到登录和注册界面就会产生变色效果呢?

答案很简单,使用一个变量来控制,在MouseMove中进行设置,通过得到鼠标的坐标来进行操作,如果在指定的矩形区域内就进行改变变量,同时在onpaint()中利用switch或者if来控制

 

但是还有很重要的一点就是:

如代码所示:

if (px < 724 && px > 621 && py <554 && py >496)//判断是否移动到了到注册界面

{

characterone = true;

//PostMessage(WM_PAINT);

charactertwo = false;

CRect buttonRect(621, 496, 724, 554);

InvalidateRect(buttonRect,false);//使得指定区域有效

this->OnPaint();

}

如代码所示,需要设置一个矩形区域并使它有效,并使用onpaint进行重绘这样才可以产生实时改变的效果

实现界面的跳转是十分简单的,可能你不会信但是它就是那么简单

 

之前说到了,每一个窗口都与一个类要进行绑定

我们只需要实例化类的对象,并调用DoModel();函数即可实现跳转

//进入游戏选择英雄与场景

if (interGame)

{

choose ch;

EndDialog(0);

ch.DoModal();

}

如代码块所示,choose类就是与我们选择英雄与场景的窗口绑定的类,同时EndDialog(0)就是关闭当前窗口,只要窗口大小适宜,这样就能实现界面只是变换了图片的感觉了,不会有突兀感。

 

 

 

因为我的等级问题,一共200+MB的文件我只能分多次上传,不便之处多多体谅

所以需要大家自己动手整合一下项目~!

Debug文件:http://download.csdn.net/detail/sx_csu2016sw/9917669

项目主文件:http://download.csdn.net/detail/sx_csu2016sw/9917650

资源文件theme:http://download.csdn.net/detail/sx_csu2016sw/9917643

在文件里面有如何整合文件的图片,按照步骤来,点击SLN后缀的文件即可在VS2015上实现项目的导入,如果有出现断点,可以留言联系我解决,也可检查资源文件theme的路径是不是正确,以及代码中路径是否正确。


MFC贪吃蛇游戏完整开发教程 本文还有配套的精品资源,点击获取 简介:MFC贪吃蛇游戏是一个利用MFC框架实现的经典游戏,注重用户体验,包括界面美化、排名保存和游戏音乐播放。本教程将深入讲解MFC游戏开发中的应用,涵盖MFC基础、贪吃蛇游戏逻辑、界面美化、游戏状态保存与加载、音频播放、错误处理与调试、多线程与并发以及测试与优化等内容。通过本教程,开发者将掌握C++编程、MFC框架的使用、游戏开发基础和... 阅读详情

相关推荐

深入学习MFC:制作坦克游戏

本文还有配套的精品资源,点击获取 简介:MFC(Microsoft Foundation Classes)是微软提供的C++类库,适合Windows程序开发。本项目以MFC坦克游戏为例,教授初学者如何使用MFC进行游戏开发。内容包括游戏逻辑构建、窗口和事件处理、图形绘制、动画效果实现、文件操作等。通过学习该项目,可以掌握MFC的基础知识和游戏开发的初级技巧,为进入游戏开发领...

weixin_31459297的博客 1065

基于MFC的RPG回合制游戏

玩家注册/登陆账号后进入游戏。地图上有NPC,传送点。通过在地图上移动随机遇敌,进入对界面。玩家控制角色攻击、释放技能,吃药等,胜利后有几率掉落物品。

MFC游戏开发中的实用技术指南

本文还有配套的精品资源,点击获取 简介:MFC作为微软提供的C++库,在游戏开发中扮演着基础支持角色,提供图形界面、输入处理、资源管理等功能。本指南通过MFC_游戏常用技术(一).ppt和MFC_游戏常用技术().ppt,介绍了MFC游戏开发中的关键技术和实践,包括窗口和视图、图形绘制、事件处理、多线程、资源管理、动画和定时器、网络编程、内存管理、数据持久化和调试工具。...

weixin_28895791的博客 558

学VC-MFC编游戏

学VC、编游戏非常 好的学习开发游戏的全套代码,从开始到完整的游戏分的较细,很好的教材(源码)

[Visual Studio]MFC游戏开发回合制系统_by

引子: 感谢阅读 接下来一段时间訢(xin)会为大家定时更新总结讲解前一段时间刚刚结束的MFC实训项目--回合制游戏 希望作为读者的你们可以多多关注我的作品,并留言或者加我qq一起学习 若需转载请注明来处:http://blog.csdn.net/SX_csu2016sw 介绍一下自己: 中部地区某985软件工程在读,2016级入学目前即将大,希望通过CSDN治疗懒癌的

SX_csu2016sw的博客 3247

模拟组合键 postmessage ctrl+v_《模拟江湖》:TapTap热门榜单第一,测试版评分8.0的汉家松鼠工作室新作...

出道首作《江湖X》获得2016年TapTap年度最佳游戏和最佳独立游戏双料提名,次年的《汉家江湖》荣获App Store年度本土最佳独立游戏,转PC平台的沙盒作品《部落与弯刀》获得Steam特别好评,草根出身的汉家松鼠工作室已经让他们所热衷的水墨武侠深入人心。汉家松鼠的作品几乎是近几年低画面高体验的独立游戏代表,放在国内更显得罕见,让人联想到欧美地区掀起的复古CRPG浪潮,充满经典RPG引人遐想...

weixin_39649405的博客 239

Windows游戏编程系列之3:MFC界面编程及游戏案例实

Windows游戏编程系列之3:MFC界面编程及游戏案例实我将带领大家认真学习MFC编程的知识,亲手创建第一个MFC程序,并详细讲解消息映射机制。然后介绍菜单栏、工具栏,重点讲解对话框、文档视图结构,然后进行俄罗斯方块的编程知识。在学习中大家要认真思考,多动手练习实践。遇到不会的问题,随时可以问我,多来交流。

MFC游戏开发》笔记一 系列简介

本系列文章由七十一雾央编写,转载请注明出处。 http://blog.csdn.net/u011371356/article/details/9299121 作者:七十一雾央 新浪微博:http://weibo.com/1689160943/profile?rightmod=1&amp;wvr=5&amp;mod=personinfo 鉴于有同学需要代码学习,我以后会把代码整体的...

nayao-net 535

[Visual Studio]MFC游戏开发回合制系统一_by

游戏开发的第一篇,实现MFC的基础操作,在之后会开始进入真正的游戏实,会尽可能的详细 在本文中也有我项目的源码,项目的总览可以在第一篇总览中查看,应该做的还是不错的~ 作为学习和交流之用,copyright are all reserved2333

SX_csu2016sw的博客 2050

项目:使用MFC实现c++贪吃蛇小游戏--预习报告

其中,在绘制时,要判断蛇是否吃到了食物,如果没有吃到,则向移动的方向画一格,并删除尾节点,如果吃到,则不用删除尾节点。现在,一个简单的贪吃蛇小游戏就制作完成了,上述全部代码仅为部分重要代码展示,即伪代码,并不能直接运行,需要进行补充。在对话框中依次添加picture control控件,显示难度和分数的输出窗口,并新建菜单。绘制食物的代码和绘制蛇的代码类似,但绘制食物时要注意:不能将食物绘制在蛇身上,每次蛇吃到食物,难度就会增加,并且随着难度的增加,每次吃到食物得分也增加。首先,做出贪吃蛇的ui。

qq_59241751的博客 564

MFC版 黄金矿工 游戏开发记录

MFC版 黄金矿工 游戏开发报告 龙宝矿工是本人在"游戏开发"课程中的大作业,断断续续用了两个星期完成。期间参考了课程中的案例代码,也查了挺多资料,感觉游戏开发的过程非常有趣,因为可以实时地感受自己努力的结果,很有成就感。但游戏开发也很烧脑,有时候晚上会想着明天要做哪一块的内容然后睡不着觉。特此记录一下开发的过程,希望能帮助到后来者。

longjie1107的博客 4449

【VC++游戏开发#八】2D篇 —— 动画:一个跑酷游戏的小Demo

最近两天稍微空闲点儿,故又有时间来写博客了由于对游戏编程的喜好,因此最近一直都在借用MFC框架来模拟2D游戏中常见的场景和效果,幻灯片、反弹、粒子系统、重力……当然也写了两个小游戏:空中大>、Hold On>,可能在后期还会出一个小游戏,敬请期待吧^_^……So,今儿来实现一个什么样的效果呢?一直关注本博客的朋友可能知道(我上期已经小有透露)——对,就是跑酷游戏的小Demo,实现游戏中常见的一个

走在游戏开发道路上的青年 —— BlueCoder(黎小华)的博客 1万+

基于MFC文档/视图架构开发8位码游戏完整代码

本文还有配套的精品资源,点击获取 简介:本文详细介绍了如何使用Microsoft Foundation Class (MFC) 框架中的文档/视图架构来构建8位码(滑动拼图)游戏。首先解释了文档/视图架构的核心概念,然后通过创建 CEightGameDoc 文档类和 CEightGameView 视图类来存储和显示游戏状态。同时,创建 C...

weixin_36231030的博客 754

基于MFC十一点(Blackjack)游戏开发项目

在C++中,类(class)是用户自定义的数据类型,用于封装数据和操作数据的方法。类是对现实世界中某类事物的抽象,而对象则是类的实例。在MFC项目中,几乎所有的控件、窗口、对话框等界面元素都以类的形式进行封装。// 花色:0-黑桃,1-红桃,2-梅花,3-方块int rank;// 点数:1-13public:// 构造函数// 获取花色// 获取点数// 展示牌信息逐行分析与参数说明:class Card:定义一个名为Card的类。

weixin_35516624的博客 777

VS2020使用MFC开发一个贪吃蛇游戏

贪吃蛇游戏按照如下步骤实现:。输出视图,即将最终生成的地图打印出来。Sleep(200) 暂停200毫秒之后在进行上面的。。进阶: 为该游戏开发外挂.外挂不能读取玩家无法正常得到的信息要求:。界面友好,函数能要划分好总体设计应画一流程图o.程序要加必要的注释要提供程序测试方案或无bug运行。

程序员象漂亮的博客 1038

C++ MFC拼图游戏开发(含详细注释)

默认窗口太丑?我们来定制!if (!// 可拉伸边框// 去掉灰边CS_DBLCLKS很重要——不然双击事件收不到!你可以用它来做“双击重新开始”。回过头看,MFC确实有些“古老”——没有现代UI框架的声明式语法,也没有响应式编程的优雅。但它教会我们的东西,至今仍然有价值:消息驱动模型是GUI的本质;资源管理意识决定程序稳定性;分层架构思想提升代码可维护性;RAII + 智能指针让C++不再是内存泄漏代名词。

weixin_42506884的博客 754

MFC学习之2048小游戏程序源码

MFC/C++小游戏源代码2048小游戏

分享型博主 2245

基于 C++ MFC 实现的的五子棋游戏

【代码】基于 C++ MFC 实现的的五子棋游戏。

神仙别闹的自留地 238
上一篇: [Visual Studio]MFC游戏开发之回合制对战系统一_by书訢
下一篇: java简单画图板实现
SX_csu2016sw
博客等级 码龄9年 50粉丝 31原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值