簡體   English   中英

讀取和寫入文本到硬盤上的單獨文件

[英]Read & write text to a separate file on the hard drive

我的代碼在這里有問題。 我的代碼應該(我想要做的)是在游戲結束后出現一個spritefont,該字體允許您輸入文本,一旦輸入了文本,便會將分數寫入文本文件。 但是,它當然不會這樣做。 如果有人可以幫助,那就太好了。

編輯這是我用來在游戲結束后嘗試輸入文本的內容(“游戲是太空侵略者”)也許這里也有問題。

SpriteFont Label;
string txt = ".";
Keys PrevKey;
string[] HighScores = new string[5];
int count = 0;

KeyboardState ks = Keyboard.GetState();
Keys[] k = ks.GetPressedKeys();
Keys tempKey = Keys.None;
string keyChar = "";

foreach (Keys q in k)
{
    Keys currentKey = q;

    if (ks.IsKeyUp(PrevKey))
    {
        if (!(q == Keys.None))
        {
            switch (q)
            {
                case Keys.Space: keyChar = " "; break;
                case Keys.Delete: txt = ""; break;
                case Keys.Back: txt = txt.Remove(txt.Length - 1); break;
                case Keys.Enter: HighScores[count] = txt; count++; txt = "";
                                 if (count == 5) count = 0; break;
                case Keys.End: WriteScores(); break;
                case Keys.Home: ReadScores(); break;
                default: keyChar = q.ToString(); break;
            }
            txt += keyChar;
        }
    }

    if (currentKey != Keys.None && ks.IsKeyDown(currentKey))
    {
        tempKey = currentKey;
    }
}

PrevKey = tempKey;
base.Update(gameTime);
}
}
}
}

public void WriteScores()
{
    StreamWriter Rite = new StreamWriter(@"C:\TheScores.txt");      
    for (int i = 0; i < HighScores.Length; i++)
    {
        Rite.WriteLine(HighScores[i]);
    }  
    Rite.Close();
}

public void ReadScores()
{
    if (File.Exists(@"C:\TheHighScores.txt"))
    {
        StreamReader Reed = new StreamReader(@"C:\TheScores.txt");
        for (int i = 0; i < HighScores.Length; i++)
        {
            txt += Reed.ReadLine() + "\n";
        }
        Reed.Close();
    }
}

將路徑更改為用戶文件夾,如Documents或AppData。 除非您以管理員身份運行程序,否則原樣的代碼將因權限不足而引發訪問沖突,因為C:\\的根只能在提升的上下文中使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM