10.第二阶段x64游戏实战-添加计时器

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

上一个内容:9.第二阶段x64游戏实战-创建项目代码获取人物属性

效果图:

当前游戏中的文字使用的是char*也就是多字节,所以要设置一下,我们也要使用多字节,如果char*读取的字符串中文是乱码的就说明游戏使用的是多字节字符串,相反char*中文乱码的就说明游戏使用宽字节也就是Unicode字符集

这里采用MFC提供的计时器,首先如下图点击类向导

点击类向导的时候注意当前选中的文件

这里和选中的文件是对应的,我们要给MyDialog类添加计时器所以要选中MyDialog类也就是MyDialog.cpp或MyDialog.h文件

然后如下图红框进行选择

然后点击添加处理程序

然后点击确定或应用

然后就可以发现给我生成了OnTimer,这里面的代码就是计时器的代码

MyDialog.cpp文件的修改:新加 OnTimer函数(计时器),修改了OnBnClickedButton1函数(读取角色按钮点击之后执行的函数)

// MyDialog.cpp: 实现文件
//

#include "pch.h"
#include "第二阶段x64一.h"
#include "afxdialogex.h"
#include "MyDialog.h"
#include "GameData.h"

// MyDialog 对话框

GameData* pData = new GameData;

IMPLEMENT_DYNAMIC(MyDialog, CDialogEx)

MyDialog::MyDialog(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_DIALOG1, pParent)
{

}

MyDialog::~MyDialog()
{
}

void MyDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(MyDialog, CDialogEx)
	ON_BN_CLICKED(IDC_BUTTON1, &MyDialog::OnBnClickedButton1)
	ON_WM_TIMER()
END_MESSAGE_MAP()


// MyDialog 消息处理程序


void MyDialog::OnBnClickedButton1()
{
	CString str;
	CString str1;
	GetDlgItemText(IDC_BUTTON1, str);
	str1 = "读取角色";
	if (str == str1) {// 第一次点击按钮开启获取人物数据
		str = "读取中";
		LogW(L"读取中");
		SetDlgItemText(IDC_BUTTON1, str);

		/*
		 
			1位置表示事件名字
			1000表示间隔时间,也就是说1000毫秒执行一次OnTimer函数
			NULL位置表示用来指定处理 WM_TIMER 消息的函数,写NULL表示使用默认的
		  这里也就是说这里是用来设置计时器或者说添加一个计时器,计时器的名字是1,间隔执行时间是1000毫秒
		*/
		SetTimer(1, 1000, NULL);
	}
	else {// 第二次点击按钮关闭获取人物数据

		LogW(L"读取结束");
		// 把事件名叫1的计时器进行删除
		KillTimer(1);
		SetDlgItemText(IDC_BUTTON1, str1);
	}
}


void MyDialog::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	if (nIDEvent == 1) {
		Role_Stu Role = pData->Updata_Role(0);//更新角色
		CString str;
		str.Format("角色对象:%p\n角色名字:%s\n角色等级:%d\n角色状态:%d\n角色的ID:%d\n角色血量:%d/%d\n角色蓝量:%d/%d\n角色活力:%d/%d\n角色精力:%d/%d\n角色经验:%d/%d\n角色坐标 x:%f  z:%f  y:%f\n角色体力:%d\n角色定力:%d\n角色身法:%d\n角色潜能:%d\n角色力量:%d\n角色灵气:%d\n外功攻击:%d\n内功攻击:%d\n外功防御:%d\n内功防御:%d\n角色命中:%d\n角色闪避:%d\n会心攻击:%d\n会心防御:%d", Role.m_Objadr, Role.m_Name.c_str(), Role.m_Lv, Role.m_State, Role.m_ID, Role.m_HP.min, Role.m_HP.max, Role.m_MP.min, Role.m_MP.max, Role.m_Vitality.min, Role.m_Vitality.max, Role.m_Energy.min, Role.m_Energy.max, Role.m_Exp.min, Role.m_Exp.max, Role.fPos.x, Role.fPos.z, Role.fPos.y, Role.m_PStrength, Role.m_CStrength, Role.m_Footwork, Role.m_Potential, Role.m_power, Role.m_Reiki, Role.m_Out_attack, Role.m_In_attack, Role.m_Out_Defense, Role.m_In_Defense, Role.m_hit, Role.m_dodge, Role.m_HeartAttack, Role.m_HeartDefense);
		SetDlgItemText(IDC_STATIC, str);
	}
	CDialogEx::OnTimer(nIDEvent);
}


img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值