游戏技术文章

C# 控制台倒计时

时间:2017-2-26 12:01:32  作者:棋牌资源网  来源:棋牌资源网  查看:7856  评论:0
内容摘要:年前经常聊天的大佬群里有人写了窗体的倒计时来计算下班时间和放假时间:)简直就是在嘲讽我这种没有工作的人,哈哈哈窗体的倒计时相当的没有技术含量,主要是不够炫酷,不能够体现我们程序员的身份。那什么才叫炫酷?必须是控制台啊!电视剧上黑客噼里啪啦噼里啪啦滚屏的画面多炫酷!所以,研究了一下...
年前经常聊天的大佬群里有人写了窗体的倒计时来计算下班时间和放假时间:)

简直就是在嘲讽我这种没有工作的人,哈哈哈

窗体的倒计时相当的没有技术含量,主要是不够炫酷,不能够体现我们程序员的身份。

那什么才叫炫酷?必须是控制台啊!

电视剧上黑客噼里啪啦噼里啪啦滚屏的画面多炫酷!

所以,研究了一下怎么样在控制台上计时。

百度到了msdn的老帖子,所有的回答都是使用线程。那就用线程吧。

 

主要的计时方法就是使用 Thread.Sleep(1000); 方法,使主线程停止一秒。

然后循环使用线程调用传参方法 Thread thread = new Thread(delegate() { GetTime(dt); });

这个方法计算时间差然后输出时间。

这样就会完成一个bug(比心,用心创造BUG),虽然计算一下时间,再输出,基本上是用不了多少时间的,

但是几百次几千次以后就会导致两次输出时间里少了一秒,但对于最后的结果来说并无大碍。

 

(后知后觉,不用线程调用方法应该也可以,主要还是Thread.Sleep(1000);)

 

 
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading;
 6 
 7 namespace Timer
 8 {
 9     class Program
10     {
11         static bool isEnd = false;
12 
13         static void Main(string[] args)
14         {
15             //控制台标题
16             Console.Title = "Timer";
17             //控制台宽度
18             Console.WindowWidth = 50;
19             //控制台高度25是最低
20             Console.BufferHeight = 25;
21             Console.WriteLine("现在的时间是");
22             Console.WriteLine(DateTime.Now);
23             Console.WriteLine("输入截至时间");
24 
25             //获取设定时间
26             DateTime dt = Convert.ToDateTime(Console.ReadLine());
27             //获取开始时间
28             DateTime dtNow = Convert.ToDateTime(DateTime.Now);
29 
30 
31             //调用线程获取时间
32             while (isEnd == false)
33             {
34                 Thread thread = new Thread(delegate() { GetTime(dt); });
35                 thread.Start();
36                 Thread.Sleep(1000);
37             }
38             Console.ReadLine();
39         }
40 
41 
42 
43         //输出计时剩余时间
44         static void GetTime(DateTime dt)
45         {
46             //获取开始时间
47             DateTime dtNow = Convert.ToDateTime(DateTime.Now);
48             TimeSpan ts = dt - dtNow;
49             Console.ForegroundColor = ConsoleColor.Green;
50             Console.SetCursorPosition(8, 5);
51             Console.WriteLine(ts);
52             if (ts.TotalSeconds <= 1)
53             {
54                 Console.SetCursorPosition(0, 9);
55                 Console.WriteLine("计时已完成");
56                 isEnd = true;
57             }
58         }
59     }
60 }
 

 

Console.ForegroundColor = ConsoleColor.Green; 改变输出字符的颜色为绿色。

Console.SetCursorPosition(8, 5); 是改变光标的位置的语句,代表光标第5行第8个字符,这时候再进行输出就是在这里输出了。

 

这程序还是到处是BUG的,毕竟一天到晚写的是BUG,不是程序。

我的程序,使用的是.NET Framework 4.0,各位电脑上应该都有。

(密码:C2fyaK)

https://share.weiyun.com/076fa80d5a5b270c3f73b90e3fd77d48

输出的结果依然是原始详细的时间格式,不过稍作修改就会更美观一点,下面是一些有关时间的输出语句。

C#_控制台倒计时 View Code
标签:C#控制台倒计时 

欢迎加入VIP,【VIP售价:只要288元永久VIP会员】畅享商业棋牌游戏程序下载,点击开通!

下载说明


☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,

☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!

☉唯一站长QQ:1004003180  [人格担保-本站注重诚信!]

☉购买建议E-mail:1004003180@qq.com   源码收购 E-mail:1004003180@qq.com    

☉本站文件解压密码  【文章内都自带解压密码,每个密码不同!】


本站提供的所有源码,均来源站长提供,仅学习交流 浙ICP备09009969号

由此产生不良后果和法律责任与本站无关,如果侵犯了您的版权,请来信告知 1004003180@qq.com 将及时更正和删除! 

Copyright © 2008-2021 棋牌资源网,你身边的棋牌资源下载站    All Rights Reserved