当前位置: 首页 > news >正文

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

相关文章:

  • Mysql概述
  • MCP 认证考试常见技术难题实战分析与解决方案
  • Python(14)Python内置函数完全指南:从基础使用到高阶技巧
  • 爱普生EV7050EAN在ONT交换机的应用
  • GPT-SoVITS:5 步实现 AI 语音克隆
  • 测试用例如何编写
  • 破产计划:ESP32s3+UVC+ov2640实现免驱摄像头
  • CExercise_12_单链表面试题_3合并两条有序的单向链表,使得合并后的链表也是有序的 (要求: 不能额 外申请堆内存空间)
  • 数字人:开启医疗领域的智慧变革新时代(5/10)
  • 计算机三级第一章:信息安全保障概述(以时间节点推进的总结)
  • 【Linux】进程概念(一):冯诺依曼体系结构 + 操作系统
  • ElementNotInteractableException原因及解决办法
  • 基于大模型的轻症急性胰腺炎全流程预测与诊疗方案研究报告
  • java操作redis库,开箱即用
  • 【C++】map与set
  • Vue 技术解析:从核心概念到实战应用
  • ArrayList 和 数组 的区别
  • Vue 3 + TypeScript 实现一个多语言国际化组件(支持语言切换与内容加载)
  • 【Linux系统】进程概念
  • qt designer 创建窗体选择哪种屏幕大小
  • 魔都眼丨人形机器人“华山论剑”:拳击赛缺席,足球赛抢镜
  • 王宝强谈《棋士》:饰演这个灰度人物有一种被割裂的痛苦
  • 中国铝业首季“开门红”:净利润超35亿元,同比增加近六成
  • 广东东莞调整普通住宅价格标准:一类镇街上浮300余元/平方米
  • 范福生受审:任高密市长、市委书记时滥用职权,致公共财产利益重大损失
  • 北朝时期的甲胄