模仿中YUKI的紧急逃脱程序

Yuki的紧急逃脱程序

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

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

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

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

下载地址 :

点我下载

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

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;                          //返回循环
            }
        }
    }
}

简简单单!圣诞快乐!

这个圣诞~最好的礼物!
我就是Gundam ! 泪流满面 Gundam 00 剧场版!


下载地址 : 点我下载

附上 澄空Sumisora【初音ミク】圣诞发布的3DPV!

祝自己圣诞快乐~顺便, 《让子弹飞》确实挺赞的。

o(∩_∩)o 平安夜

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

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

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

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

程序用的是C#写的啦。

附上代码~~

 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链接库,只能返回一个值
因此决定改进一下
用数组来返回多个结果
更改结果如下

        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;