我需要有关如何在它位于 do-while 循环内的情况下创建循环的帮助
Posted
技术标签:
【中文标题】我需要有关如何在它位于 do-while 循环内的情况下创建循环的帮助【英文标题】:I need help on how to make a loop inside a case that it is inside a do-while loop 【发布时间】:2022-01-23 22:52:04 【问题描述】:我正在尝试在一个带有 do-while 循环的案例中创建一个 while (true) 循环,但是当我将 while (true) 放在案例中时,菜单不会循环回控制台,我需要关闭调试器并再次运行它可以帮助我我是 C++ 新手。
这是我的代码:
do
std::cout << "[0] Quit\n"; // This is Option 0 of the Menu
std::cout << "[1] Infinite Health\n"; // This is Option 1 of the Menu
std::cout << "[2] Infinite Ammo\n"; // This is Option 2 of the Menu
std::cout << "[3] Infinite Rounds\n"; // This is Option 3 of the Menu
std::cin >> choice;
switch (choice) // This is to detect the Choice the User selected
case 0:
std::cout << "Why did you even open me to not use me :(\n";
return 0;
case 1:
std::cout << "You Have Activated Infinite Health!\n";
while (true)
int health = 1000;
WriteProcessMemory(phandle, (LPVOID*)(healthPtrAddr), &health, 4, 0);
break;
case 2:
std::cout << "You Have Activated Infinite Ammo On Primary Weapon!\n";
while (true)
int ammo = 500;
WriteProcessMemory(phandle, (LPVOID*)(ammoPtrAddr), &ammo, 4, 0);
break;
case 3:
std::cout << "You Have Activated Infinite Rounds On Primary Weapon!";
while (true)
int rounds = 200;
WriteProcessMemory(phandle, (LPVOID*)(roundsPtrAddr), &rounds, 4, 0);
break;
while (choice !=0);
【问题讨论】:
while (true)
永远不会完成,而且你没有做任何事情来打破它。你为什么要在这里使用它?
如何完成 while (true)?我正在用它来写内存,我可以删除中断但它没有做任何事情
while(true)
的意义何在?你想达到什么目的?
我正在尝试创建一个循环,例如,弹药始终为 100,但是当我单击该选项时,它显示无限弹药已激活,但它不会返回菜单
我认为大部分内容应该由 C++ 教程来解释。在任何情况下,如果您首先提取 minimal reproducible example 并将其和输出包含在您的问题中,以及您如何与程序交互的确切信息,将会有所帮助。作为新用户,请拨打tour阅读How to Ask。
【参考方案1】:
是的,它不会返回,因为它阻塞了程序。
要解决您的问题,您可以将循环放在另一个线程中。
如果您使用以下方法包含线程库:
#include <thread>
然后您必须定义应该运行的函数:
void keepHealth()
while (true)
int health = 1000;
WriteProcessMemory(phandle, (LPVOID*)(healthPtrAddr), &health, 4, 0);
您现在可以在另一个线程中执行此函数:
std::thread task1(keepHealth);
如果你想传递你的句柄之类的参数,你必须将它们写在函数头中:
void keepHealth(void* pHandle, void* healthPtrAddress)
while (true)
int health = 1000;
WriteProcessMemory(phandle, (LPVOID*)(healthPtrAddr), &health, 4, 0);
并像这样传递它们:
std::thread task1(keepHealth, pHandle, healthPtrAddress);
【讨论】:
我不明白你在说什么,就像我说我是 C++ 新手抱歉:) 好的,正在运行的进程将被 while-true 循环阻塞。那是因为您的 cpu 被困在其中并且无法执行进一步的指令,因为它一次运行一条指令。但是如果告诉 cpu 使用不同的内核,它将能够同时运行这些指令。我过度简化了这个,我建议你阅读更多关于这个主题 非常感谢! 你让它工作了吗? 是的,我做到了!谢谢以上是关于我需要有关如何在它位于 do-while 循环内的情况下创建循环的帮助的主要内容,如果未能解决你的问题,请参考以下文章