模仿中YUKI的紧急逃脱程序

Yuki的紧急逃脱程序

先吐槽下,为什么阿虚在时间扭曲的世界中,文艺部的计算机装的windows 95系统啊,还有这还原度也太高的说。
吐槽结束,下面进入重点。
YUKI的紧急逃脱程序,就是一个DOS界面,然后出现类似打字的效果,最后判断 按键输入 来执行 紧急逃脱程序的。

打字效果嘛~ 两年前,曾经用VB写了一个打字效果的安慰信给一个小女生,把小姑娘感动的泪流满面的说。唉唉~
现在不用VB了,而且VB似乎没有控制台模式的样子。

看完大萌神的紧急逃脱程序后,也想模仿这做一遍。正好手头上的C#能提供大部分的功能。 不过实现的方法,还是挺繁琐的啦

今天更新了一下,采用了for循环来输出一行字符串,比以前的不断输出,不断清屏有很大的效率提升,不过用for循环后,字符输入光标这些细节就无法表现出来了,这是还原的一大遗憾呢。看来要完美还原,果然还是要用土办法啊,不断输出,不断清屏。

下载地址 :

点我下载

啊啊~由于没有安装日文输入法,也搜索不到紧急程序的日文原文,就直接使用了SOSG字幕组的中文翻译了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ConsoleApplication3
{
    class Program
    {
        static void output(string s,int ta=100,int tb=3000)
        {
            for(int i=0;i<s.Length;i++)
            {
                Thread.Sleep(ta);
                Console.Write(s[i]);
            }
            Console.WriteLine("");
            Thread.Sleep(tb);
        }
        static void shutdown(int time)
        {
            System.Diagnostics.Process.Start("shutdown.exe", "-s -t "+time+"");
        }
        static void Main(string[] args)
        {
            Console.Title = "紧急启动程序!";
            string str = "<YUKI.N>当你看到这排文字、n        我已经不再是我了吧。";
            output(str);
            str = "<YUKI.N>这个讯息会出现、n        就表示你、我、凉宫春日、朝比奈实玖留、n        古泉一树应该都在场。";
            output(str);
            str = "<YUKI.N>这是紧急逃脱程序。n        要启动的话就直接按Enter键、n        不启动就按其他键后再按Enter。n        启动之后、n        你会得到修正时空的机会。n        但不保证一定成功。n        也不保证你能顺利归来。";
            output(str);
            str = "<YUKI.N>这个程序只能启动一次。n        执行一次后就会被删除。n        若选择不执行、则会被直接删除。n        Ready?";
            output(str);
            int key = Console.Read();
            if (key == 'r')
            {
                int time = 0;
                shutdown(time);
            }
            else
            {
                str = "正在自我卸载......";
                output(str);
                str = "卸载完毕!";
                output(str);
                return;
            }
        }
    }
}

旧版的超级无效率的代码版本:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace ConsoleApplication2
{
    class Program
    {
        [DllImport("kernel32.dll", ExactSpelling = true)]

        private static extern IntPtr GetConsoleWindow();
        private static IntPtr ThisConsole = GetConsoleWindow();

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]

        private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
        private const int HIDE = 0;
        private const int MAXIMIZE = 3;
        private const int MINIMIZE = 6;
        private const int RESTORE = 9;
        static void shutdown()
        {
            System.Diagnostics.Process.Start("shutdown.exe", "-s -t 0");
        }
        static void Main(string[] args)
        {
            Console.SetWindowSize(Console.LargestWindowWidth, Console.LargestWindowHeight);
            ShowWindow(ThisConsole, MAXIMIZE);
            Console.Beep();
            Console.WriteLine("<AoiCocoon>:");
            Thread.Sleep(500);
            Console.Clear();
            Console.WriteLine("<AoiCocoon>:_");
            Thread.Sleep(500);
            Console.Clear();
            Console.WriteLine("<AoiCocoon>:");
            Thread.Sleep(500);
            Console.Clear();
            Console.WriteLine("<AoiCocoon>:_");
            Thread.Sleep(500);
            Console.Clear();
            Console.WriteLine("<AoiCocoon>:");
            Thread.Sleep(500);
            Console.Clear();
            Console.WriteLine("<AoiCocoon>:_");
            Thread.Sleep(500);
            Console.Clear();
            Console.WriteLine("<AoiCocoon>:D_");
            Thread.Sleep(100);
            Console.Clear();
            Console.WriteLine("<AoiCocoon>:Do_");
            Thread.Sleep(100);
            Console.Clear();
            Console.WriteLine("<AoiCocoon>:Do _");
/* 剩下一堆打字代码忽略...毫无营养的说 */
  M:   Console.WriteLine("Ready?<y/n>");
         Console.Beep();
            string str = Console.ReadLine();
            if (str == "y" || str == "Y") //判断输入的是否是 Y或是 y, 动画中是要判断是否输入的是 Enter键
            {                                  //可以通过string str=Console.ReadKey()来读取Enter的Ascii码做判断
                Console.WriteLine("Good Bye!");
                shutdown();                 //直接执行关机,哈哈~ 挺恶趣味的,紧急逃脱嘛~关机就好啦。
            }
            else if (str == "n" || str == "N")
            {
                return;                         //退出程序,不解释
            }
            else
            {
                Console.WriteLine("Bad Command!");
                goto M;                          //返回循环
            }
        }
    }
}

o(∩_∩)o 平安夜

嘛嘛~难得的平安夜呐,居然跟咱宿舍一爷们去橘园洲大桥散步…冒着雨走了3公里的说…脚都走疼了。

然后~然后~,还两个爷们去新华都的麦当劳吃二人情侣套餐…这给力的感觉是怎么回事啊!!!

回家之后,看到在硬盘里躺了好几天的 《初恋这件小事 》一直听周围人说很赞,就打开来看看,确实很不错的说,很久没看这种纯爱片子啦。嗯嗯,明年有时间的话,就好好爱一场吧。

刚刚看完片子,这真空期该干嘛呢?想起自己笔记本联想V450的音乐播放按键,默认是打开windows 自带的媒体播放器,widows media player.觉得很不人性化,我更喜欢用自己的Foobar2000的说。 上网搜索下解决方法,都是说把自己喜欢的播放器安装到 window meida player播放器的目录下,然后改名字。 觉得这样好麻烦啊,系统盘还会很乱,很臃肿。索性!就自己写个调用程序好了。

程序用的是C#写的啦。

附上代码~~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 private void Form1_Load(object sender, EventArgs e)
        {
                System.Diagnostics.ProcessStartInfo sp = new System.Diagnostics.ProcessStartInfo();
                sp.FileName = "Foobar2000.exe";
                sp.WorkingDirectory = @"D:Program Files (x86)Foobar2000Foobar2000";
                System.Diagnostics.Process Proc;
                try
                {
                    Proc = System.Diagnostics.Process.Start(sp);
                    this.Close();
                }
                catch (System.ComponentModel.Win32Exception ex)
                {
                    MessageBox.Show("打开出错!" + ex);
                }
        }

然后把自己做的程序,复制到windows media player 替换原文件(原版要备份!)。这样以后按笔记本 播放 按键 ,就会通过我这个小程序,自动调用自己喜欢的播放器啦啦啦啦。

冬至~落寞的一人

今天在学校食堂看到到处都是汤圆的广告的时候就觉得很好奇,但是也没仔细琢磨。

回到家里,爸爸打电话来问我冬至怎么过的。我才发觉,原来今天是节日啊。

突然觉得很落寞呢,想起以前在一起的好友们,有的出国了,有的工作了,也不知道以后还能不能再见面呢。好伤感啊。

无意中输入了 51.net ,虎翼网。那个10年前,我建立的第一个网站,也是我的第一个论坛的空间提供商,居然还存在着,

看来经营的很好呢。不知不觉间,自己就二十几岁呢,再也回不到从前呐。

其实,自己一直在追求的完美,不过是逃避罢了。心里真正想要的并不是这些。

想起了,以前那些一起玩炫舞的好友们,几年前在之前的博客里的留言, 又突然好想他们。 仔细找找,那些留言的数据库还都在呢。找个好日子把数据都恢复了吧。

大家~如果以后再也见不到了,我也会永远的记住你们的,无论是你们的面孔,你们的声音,还是你们的文字。

类库返回用数组返回多个数据

之前的DLL链接库,只能返回一个值
因此决定改进一下
用数组来返回多个结果
更改结果如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
        public static string[] ExecnonQuery(string cmdtext, CommandType ct,SqlParameter[] param)
        {
            SqlConnection conn = new SqlConnection(con);
            SqlCommand comm = new SqlCommand(cmdtext, conn);
            comm.CommandType = ct;
            if (param != null)
            {
                foreach (SqlParameter sp in param)
                {
                    comm.Parameters.Add(sp);
                }
            }
            try
            {
                conn.Open();
                string[] array=new string[2];
                SqlDataReader sr = comm.ExecuteReader();
                if (sr.Read())
                {
                    array[0] = sr["ID"].ToString();
                    array[1] = sr["Sname"].ToString();
                    conn.Close();
                }
                return array;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                conn.Close();
            }
        }



调用DLL的命令也更改为如下


        private void button2_Click(object sender, EventArgs e)
        {
            string cmdtext = ("proc_student");
            SqlParameter[] param = new SqlParameter[1];
            param[0] = new SqlParameter("@ID", SqlDbType.Int, 10);
            param[0].Value = tid2.Text;
            string[] array = ClassLibrary1.Class1.ExecnonQuery(cmdtext, CommandType.StoredProcedure, param);
            tid2.Text = array[0].ToString();
            tname2.Text = array[1].ToString();
        }

调用DLL访问SQL数据库

这周上完C#课程之后,觉得好难好难。课堂上就听的很糊涂。

事后花了2小时研究了一下代码,感觉其实还是不难的。 课堂上听的晕,大概是因为老师自己也不熟练这份代码,一直修改的缘故吧。

首先是 课堂上 老师 在 SQL Server 2005 中写的存储过程

他的原句是:

create proc sp_count

as

begin

select count(*) from Students

end

我照着打了一遍,结果我的 sql server 2008里提示错误。

翻了一遍《sql自学自用教程》后,重写了2个存储过程

通过变量 @ID 来显示ID对应的数据
CREATE procedure [dbo].[proc_student]
@ID int
AS
SELECT * FROM MM WHERE ID=@ID

————–
继续阅读调用DLL访问SQL数据库

很失望..《守卫者传奇》虽然高分但是太过低龄了

基本信息
中文片名:猫头鹰王国:守卫者传奇
(根据超级畅销书《猫头鹰王国》第一到第三本改编)
英文片名:Legend of the Guardians
更多中文名:猫头鹰王国、猫头鹰家族守卫者
中文版书名:猫头鹰王国(马爱农领衔翻译,湖北少儿出版社独家授权出版)
更多外文名:Guardians of Ga’Hoole
国家/地区: 美国 / 澳大利亚
类型: 动画 / 奇幻 / 冒险
对白语言: 英语
———————————–
嘛嘛~ 之前关注了很久的《守卫者传奇》 再看了 IMDB的评分后,感觉似乎是一部很赞的动画,在看过《训龙高手》后,跟是期待这种冒险类的动画了。
而且呐~这个月又是片荒,没什么好片看,昨天突然看《守卫者传奇》的DVD出来了,立马下之,尔后看之。 失望,失望透顶啊。
虽然画面做的非常精美,比如 纯洁者的岛屿那像世界末日一般的天空, 守卫者的翡翠之树像天堂一般。 还有猫头鹰们互相厮杀的慢镜头特效,都还挺赞的。 但是里面很多细节都做的非常差。
片子开头,通过父亲给孩子们讲故事的方式,来介绍主要的出场人物,但对于第一次看动画的人来说,要一下子辨认出长相差不多的猫头鹰们,那些不同的名字,着实很棘手啊!!
之后呢,主角从纯洁者的巢穴跑出来去寻找 守卫者的援助 这一过程。 动画里面交代,这路途非常遥远,非常艰险,无比困难。可是一转眼,好吧似乎 1分钟不到,没遇到任何困难,就找到了守护者的翡翠之树附近,到这里才遇到暴风雪而已,然后立马就被守护者给救了。
然后呢,守护者和纯种者两军战斗。。数来数去,两方总数才不过20.。。。 这一点都不配那么精美的背景。 感觉就像一群小孩子,小打小闹一样。
最喜剧的就是,主角击杀敌方BOSS的时候,居然不是光明正大杀死的,而是对方冲的太猛,一头撞进了着火的木棍上。而且也没有挣扎什么的,立刻就被秒杀了。 这不吭爹嘛。。
唉~本来挺好的一个故事的,就在这样被导演给毁掉了,该重点描写的,一笔带过。 不重要的,渲染那么久。。使得这部片子没有一点使人激动地方。
so~ 推荐大家, 还是别看这片了。 当然,这个月确实没啥片子看的话,就将就看看吧。

话说~上周做C#作业。。。

话说~上周做C#作业。。。在连接数据库的时候,直接用access 建立个数据库,是accdb格式。

啊啊~于是我用老办法 Microsoft.Jet.OLEDB.4.0, 无法链接的说

结果害我不得不改用 mdb格式的数据库。

刚刚~真的,就在刚刚,百度了一下,发现原来还是可以支持的,只要改一下驱动程序。

Cons = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\CS\sdu.accdb”; 就行啦

Microsot.ACE.OLEDB.12.0 以后要记住啦啦啦。

一个图片控制UI.

今天在群里,看到一个人做了一个基于flash的图片编辑器。只有简单的功能,比如裁剪,放大,缩小,和旋转

于是呢~自己也试着做了一下,来是实现这些功能,做起来其实一点都不难。很快就做好了。

用鼠标拖动下面的黑色方块 左右移动来旋转图片。

图片的放大和缩小挺简单的就不写了。

基本上就是 假设图片封装在mc的影片剪辑里。

点击放大-缩小 按钮后

mc.width*2;

mc.height*2;

———-

mc.width/2;

mc.height/2;