C++ 游戏时钟定时器
C++ Game Clock Timer
我有这段代码可以制作一个非常适合我的游戏的工作计时器!它做的一切都正确,他们只是曾经的小问题。当 clockTicker 小于 10 时,时钟显示时间 0:4,而不是我希望它显示 0:04。我尝试了这段代码,cout << setfill('0') << setw(2) << clockTicker。哪个完美! 0只会在小于10的时候出现在数字前面!但我还需要将 clockTicker 保存在我的游戏的文本文档中,从技术上讲。 0 本身不在 int 前面 "save"。所以我的问题是,如果 clockTicker 小于零,我怎样才能在数字前面加一个 0,然后像这样将它保存到变量中。示例:0:08。 1:04
#include <iostream>
#include <Windows.h>
using namespace std;
void clickTime(int &, int, const int); // Timer for the display clock
//---- Display Clock----------------------------------------
const int Time = 0;
int Minute = 0;
int loopRepeats = 0;
int clockTicker = Time;
bool stoptimer = false;
// Set position of text
void CPos(int x, int y)
{
COORD cPos;
cPos.X = x;
cPos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cPos);
}
int main()
{
while(stoptimer == false)
{
clickTime(clockTicker,loopRepeats,Time);
loopRepeats++;
CPos(0, 0); cout << " Time is: ";
cout << Minute << ":" << clockTicker;
Sleep(100); // This is the game of the game's speed
}
return 0;
}
void clickTime(int &time, int loops, const int Time)
{
if(stoptimer == false)
{
// This tells the program after the loop repeats 7 times, to decrement a second!
if((loops % 8) == 7){
time++;
}
// This says if timer is 60 seconds, add a minute, reset time!
if(time == 60){
++Minute;
clockTicker = 0;
}
} // end if
}
你不知道。
数字是数字是数字是数字。不是十进制的、人类可读的表示形式。他们是 数字 。他们没有零填充。零填充仅影响 序列化 .
您已经正确地发现了如何在将数字序列化为 std::cout
时对数字进行零填充;现在,当您将其序列化为 std::ofstream
时,只需执行相同的操作即可。它们都是输出流,具有相同的界面:你正在流式传输到文本文件而不是控制台并不重要。
一个简单的 if 语句不能完成这项工作吗?
int main()
{
string separator; // separator variable
while(stoptimer == false)
{
clickTime(clockTicker,loopRepeats,Time);
loopRepeats++;
CPos(0, 0); cout << " Time is: ";
if(clockTicker < 10) // check if it is neccesary to adapt the separator
separator = ":0"; // include a 0 in the separator
else
separator = ":"; // else don't
cout << Minute << separator << clockTicker; // use a variable instead of a set value
Sleep(100); // This is the game of the game's speed
}
return 0;
}
我有这段代码可以制作一个非常适合我的游戏的工作计时器!它做的一切都正确,他们只是曾经的小问题。当 clockTicker 小于 10 时,时钟显示时间 0:4,而不是我希望它显示 0:04。我尝试了这段代码,cout << setfill('0') << setw(2) << clockTicker。哪个完美! 0只会在小于10的时候出现在数字前面!但我还需要将 clockTicker 保存在我的游戏的文本文档中,从技术上讲。 0 本身不在 int 前面 "save"。所以我的问题是,如果 clockTicker 小于零,我怎样才能在数字前面加一个 0,然后像这样将它保存到变量中。示例:0:08。 1:04
#include <iostream>
#include <Windows.h>
using namespace std;
void clickTime(int &, int, const int); // Timer for the display clock
//---- Display Clock----------------------------------------
const int Time = 0;
int Minute = 0;
int loopRepeats = 0;
int clockTicker = Time;
bool stoptimer = false;
// Set position of text
void CPos(int x, int y)
{
COORD cPos;
cPos.X = x;
cPos.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cPos);
}
int main()
{
while(stoptimer == false)
{
clickTime(clockTicker,loopRepeats,Time);
loopRepeats++;
CPos(0, 0); cout << " Time is: ";
cout << Minute << ":" << clockTicker;
Sleep(100); // This is the game of the game's speed
}
return 0;
}
void clickTime(int &time, int loops, const int Time)
{
if(stoptimer == false)
{
// This tells the program after the loop repeats 7 times, to decrement a second!
if((loops % 8) == 7){
time++;
}
// This says if timer is 60 seconds, add a minute, reset time!
if(time == 60){
++Minute;
clockTicker = 0;
}
} // end if
}
你不知道。
数字是数字是数字是数字。不是十进制的、人类可读的表示形式。他们是 数字 。他们没有零填充。零填充仅影响 序列化 .
您已经正确地发现了如何在将数字序列化为 std::cout
时对数字进行零填充;现在,当您将其序列化为 std::ofstream
时,只需执行相同的操作即可。它们都是输出流,具有相同的界面:你正在流式传输到文本文件而不是控制台并不重要。
一个简单的 if 语句不能完成这项工作吗?
int main()
{
string separator; // separator variable
while(stoptimer == false)
{
clickTime(clockTicker,loopRepeats,Time);
loopRepeats++;
CPos(0, 0); cout << " Time is: ";
if(clockTicker < 10) // check if it is neccesary to adapt the separator
separator = ":0"; // include a 0 in the separator
else
separator = ":"; // else don't
cout << Minute << separator << clockTicker; // use a variable instead of a set value
Sleep(100); // This is the game of the game's speed
}
return 0;
}