創作內容

3 GP

[C#]自動撥放文字_副程式

作者:羽翼│2012-12-19 00:41:16│巴幣:6│人氣:674
是個很常見的功能,有玩遊戲的人應該都不陌生。 對有玩galgame的人應該更是不陌生。
想寫看看的動機只是因為友人的專欄頁面好長,我又有點懶得用滑鼠慢慢滾。
所以就想寫個類似吉里吉里的東西。 (只是功能更單純)

=====可能會造成不適,有英文恐懼症或程式恐懼症的請往左上或右上出口離開=====
PS.影片中的文字我是先隨手拿文章貼的
覺得累贅的地方就直接砍掉吧。
我是因為後續要用到那些,所以才先寫起來放子。
對我來說是必要的,所以...我也不知道該說哪裡是多餘的,有請高人補充說明。

這個副程式簡單來說分成兩塊而已
  1. 文本讀取
  2. 打印字元
先說,這裡沒有放例外處理。 因為視窗化時,有些本來寫死的地方我會改成可以變動
也會強制要有東西才會繼續下去
當然歸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
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=1838251
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:C#|CSharp|小程式

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

3喜歡★rola1989 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:[C#]加入.NET F... 後一篇:[C++]在VS 201...

追蹤私訊切換新版閱覽

作品資料夾

happy545你好~~
午安,歡迎來我的小屋看看喔~~看更多我要大聲說昨天12:53


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】