是個很常見的功能,有玩遊戲的人應該都不陌生。 對有玩galgame的人應該更是不陌生。
想寫看看的動機只是因為友人的專欄頁面好長,我又有點懶得用滑鼠慢慢滾。
所以就想寫個類似吉里吉里的東西。 (只是功能更單純)
=====可能會造成不適,有英文恐懼症或程式恐懼症的請往左上或右上出口離開=====
PS.影片中的文字我是先隨手拿文章貼的
覺得累贅的地方就直接砍掉吧。
我是因為後續要用到那些,所以才先寫起來放子。
對我來說是必要的,所以...我也不知道該說哪裡是多餘的,有請高人補充說明。
這個副程式簡單來說分成兩塊而已
先說,這裡沒有放例外處理。 因為視窗化時,有些本來寫死的地方我會改成可以變動
也會強制要有東西才會繼續下去
當然歸label顯示的文字就沒有打上去了
【文本讀取】
就只是把資料從硬碟中讀到記憶體的Heap區,等著準備被處理而已
然後再用字串暫列暫存起來,方便之後隨時可以存取
【打印字元】
從剛剛一行一行存起來的字串,再轉成字元陣列,隨著設定速度慢慢打印出來
遇到標點符則會有停頓。
【學到的新知&忘掉的舊識】
System.Threading.Thread.Sleep(rate); -- 在這的效果和VBS中delay相同,引數值是毫秒
../ -- 往上一層目錄
@ -- 無視跳脫字元
char[] c = PartString[i].ToCharArray(); --可以將字串轉成字元陣列
Stream推完之後會變成null,還需要的話就要再充填一次
array讀取到null會error
using System;
using System.IO;
using System.Text;
using System.Threading;
namespace DialogReader
{
class Program
{
static int rate = 150;
static void Main(string[] args)
{
FileInfo fTxt = new FileInfo(Console.ReadLine());
StreamReader srTxt = fTxt.OpenText();
int TotalLine = Method.calTotalLine(srTxt);
srTxt = fTxt.OpenText();
String[] AllString = new String[TotalLine];
for (int i = 0; srTxt.Peek() >= 0; i++)
AllString[i] = srTxt.ReadLine();
for (int asc = 0; asc < AllString.Length; )
{
String[] PartString = new String[4];
for (int psc = 0; psc < 4 && asc < AllString.Length; psc++)
{
PartString[psc] = AllString[asc];
if (AllString[psc] == "")
{
asc++;
break;
}
else
asc++;
}
for (int i = 0; i < PartString.Length; i++)
{
if (PartString[i] == null)
{
Thread.Sleep(rate * 6);
continue;
Console.Out.WriteLine();
}
char[] c = PartString[i].ToCharArray();
for (int j = 0; j < c.Length; j++)
{
if (c[j] == '.' || c[j] == ',' || c[j] == '!' || c[j] == '?')
{
Console.Out.Write(c[j]);
Thread.Sleep(rate * 3);
}
else
{
Console.Out.Write(c[j]);
Thread.Sleep(rate);
}
}
Console.Out.WriteLine();
}
}
}
}
class Method
{
public static int calTotalLine(StreamReader srTxt)
{
int n = 0;
for (n = 0; srTxt.Peek() >= 0; n++)
srTxt.ReadLine();
return n;
}
}
}
也許有人會說:「阿~ 已經有現成的為什麼還要自己寫呢?」
我是覺得:「如果是我,我會怎麼寫呢? 」
要寫的比別人好很難,畢竟只是個剛進門的學徒。但是如果能讓自己更進步,那也值得了。
[memo] --純紀錄,和文章不一定有關http://www.csie.ntnu.edu.tw/~u91029/index.html