我的代码太麻烦了,我该如何修复它?

  • 本文关键字:何修复 代码 麻烦 c++
  • 更新时间 :
  • 英文 :


我的代码类似于CTRL + C + CTRL + V,表面上我不喜欢它。

在代码中,只有一个变量改变了,其他的都是一样的。有哪些方法可以缩短这段代码?

struct offsets {
std::vector<DWORD> energy = { 0x168, 0x1B8, 0x30, 0x8 };
std::vector<DWORD> minerals = { 0x168, 0x1B8, 0x30, 0x10 };
std::vector<DWORD> foods = { 0x168, 0x1B8, 0x30, 0x18 };
std::vector<DWORD> influence = { 0x168, 0x1B8, 0x30, 0x38 };
std::vector<DWORD> unity = { 0x168, 0x1B8, 0x30, 0x40 };
std::vector<DWORD> alloys = { 0x168, 0x1B8, 0x30, 0x4C };
std::vector<DWORD> consumer_goods = { 0x168, 0x1B8, 0x30, 0x54 };
};
struct cheats{
bool energy = false;
bool minerals = false;
bool foods = false;
bool influence = false;
bool unity = false;
bool alloys = false;
bool consumer_goods = false;
};
cheats hackMenu;
uintptr_t* energy = readOffset(finallyAddress, offsetsList.energy);
uintptr_t* minerals = readOffset(finallyAddress, offsetsList.minerals);
uintptr_t* foods = readOffset(finallyAddress, offsetsList.foods);
uintptr_t* influence = readOffset(finallyAddress, offsetsList.influence);
uintptr_t* unity = readOffset(finallyAddress, offsetsList.unity);
uintptr_t* alloys = readOffset(finallyAddress, offsetsList.alloys);
uintptr_t* consumer_goods = readOffset(finallyAddress, offsetsList.consumer_goods);
if (hackMenu.minerals)
{
*minerals += add_resource;
hackMenu.minerals = false;
std::this_thread::sleep_for(std::chrono::milliseconds(130)); // analog Sleep()
}
if (hackMenu.influence)
{
*influence += add_resource;
hackMenu.influence = false;
std::this_thread::sleep_for(std::chrono::milliseconds(130));
}
if (hackMenu.alloys)
{
*alloys += add_resource;
hackMenu.alloys = false;
std::this_thread::sleep_for(std::chrono::milliseconds(130));
}
if (hackMenu.unity)
{
*unity += add_resource;
hackMenu.unity = false;
std::this_thread::sleep_for(std::chrono::milliseconds(130));
}
if (hackMenu.foods)
{
*foods += add_resource;
hackMenu.foods = false;
std::this_thread::sleep_for(std::chrono::milliseconds(130));
}
if (hackMenu.consumer_goods)
{
*consumer_goods += add_resource;
hackMenu.consumer_goods = false;
std::this_thread::sleep_for(std::chrono::milliseconds(130));
}

如何减少if的数量并将其全部添加到函数中?如何减少if的数量并将其全部添加到函数中?

有了函数,你可以做

void foo(bool& m, uintptr_t* ptr, uintptr_t add_resource)
{
if (m)
{
*ptr += add_resource;
m = false;
std::this_thread::sleep_for(std::chrono::milliseconds(130));
}
}

foo(hackMenu.minerals, minerals, add_resource);
foo(hackMenu.influence, influence, add_resource);
foo(hackMenu.alloys, alloys, add_resource);
foo(hackMenu.unity, unity, add_resource);
foo(hackMenu.foods, foods, add_resource);
foo(hackMenu.consumer_goods, consumer_goods, add_resource);

你甚至可以为不同的变量创建一个集合来做一个循环。

最新更新