我有一个游戏,其中涉及一个计时器。每经过两分钟,不同玩家之间的新一轮就开始了。所以,我有一个从 00:00 开始的文本框,并且每秒更改一次,直到等于 02:00。
现在,如果用户关闭表单,我想在一轮中间保存游戏状态。我需要做的是,在加载时,文本框从用户上次离开游戏的时间开始,并正常持续到 02:00。
我怎样才能做到这一点?
到目前为止,这就是我所拥有的,其中锦标赛是形式
public Tournament()
{
_timer = new System.Windows.Forms.Timer();
_timer.Interval = 1000;
_timer.Tick += Timer_Tick;
_myDateTime = DateTime.Now;
newDate = new DateTime();
newDate = newDate.AddMinutes(2.00);
_timer.Start();
InitializeComponent();
}
void Timer_Tick(object sender, EventArgs e)
{
var diff = DateTime.Now.Subtract(_myDateTime);
this.textBox1.Text = diff.ToString(@"mm\:ss");
DateTime dt = Convert.ToDateTime(diff.ToString());
if (newDate.Minute == dt.Minute)
{
_timer.Stop();
_myDateTime = DateTime.Now;
displayPointsOrResults();
this.textBox1.Text = diff.ToString(@"mm\:ss");
}
}
在我的 LoadGame 方法中:其中 timePassed 是我在文本框中写的
string[] splitted6 = timePassed.Split(':');
if (splitted6[0] == "00")
{
int remainingTime = 120 - Convert.ToInt32(splitted6[1]);
DateTime time = DateTime.Now.Date;
time = time.AddMinutes(remainingTime);
_myDateTime = time;
}
else
{
int leftTime = Convert.ToInt32(splitted[0].Trim('0') + splitted[1]);
int remainingTime = 120 - leftTime;
DateTime time = DateTime.Now.Date;
time = time.AddMinutes(remainingTime);
_myDateTime = time;
}