网页版直接观看: http://www.dreamfairy.cn/blog/work/flash/nagato.html

点击屏幕即全屏

啊啊~之前想着反正都做了个挺好玩的东西了的态度,就发到 长门有希贴吧了

然后发现~~ 很多同学无法运行 C#编译版。。。看来大家很多都还在用Win XP啊。

有些能运行的,又因为不能真正全屏而纠结。。

嘛嘛~于是用FLASH重制了一遍,可以全屏了,但是取消了关机功能啦。

还有那个万恶的 长门有希 贴吧啊,居然限制每帖只能有20个回复了。。真恶心。。

附上FLASH+C#打包下载地址

点我下载

1.昨晚和朋友测试联机游戏的时候,发现本站的空间不支持每秒刷新100次,否则会封IP,看来要改进联机游戏算法了。不过嘛~这也有好处,能一定程度的防止DDOS攻击。当然~如果用人海战术的话,还是没辙

2.我的wordpress似乎有个问题,无法直接在后台安装插件否则会出现500错误,昨天一度想重装,后来直接用ftp上传插件再安装就没问题了。想想少点折腾吧,以后不后台直接安装插件了。

3.wordpress中文论坛上很多新博客,都是毫无营养的各种转载的别人文章的博客,他们的博客都是靠论坛上博主互访来提高访问量的。昨天看着自己冷清的blog,也参与了一次,但是这样好累,没法静下心写自己文章和新程序算法了。嘛嘛~还是自己做好博客,让博客自身的质量来吸引访客吧。

4.最后~发现以前《插错洞》的作者又出新歌了,叫《硬了硬了硬了硬了硬了硬了》果然又一神曲啊。发上来欣赏欣赏~啦啦啦~

昨天一个朋友要我做一个 输入名字后 随机配对一句话的小游戏

其实就是对数据的随机访问

实现起来挺简单的

下面是程序示例:数组内部有6个配对语句 “白痴”,”天才”,”悲剧”,”喜剧”,”茶几”,”笨蛋”

FLASH 中 Math.Random()是一个0-1之间的随机小数,申明一个整数变量来保存随机数,就能获得 0-1 之间的整数了;

然后通过 trace(数组[随机数]);的方式就能随机访问数组中的数据了。

今天~啊不,准确的说昨天…. 还是说刚刚吧。自己写的小程序被人下载了,然后被人叫神… 嘛嘛~好幸福的说。

不过也突然感慨一下~ 自己平时都一直活在小众里,为了自己的爱好不断专研技术,做些貌似很高端的东西…然后在同行人眼中很厉害的样子。

但今天突然觉得,假使自己真的写出了很厉害的程序,真的变成很厉害的人了,那也仅此而已。

真正要做的,就是做出一个能被大家接受,大家喜欢的程序啊,就算没有很高的技术含量,只要能给大家流畅的使用体验并且能让大家开心起来就够了。

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

嘛嘛~难得的平安夜呐,居然跟咱宿舍一爷们去橘园洲大桥散步…冒着雨走了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();
        }