2014-02-26 147 views
0

這裏遇到了我的代碼問題。我的代碼應該是(我想要它做的)是在遊戲結束後出現一個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(); 
    } 
} 
+1

它是否會拋出任何異常? – selkathguy

回答

0

將路徑更改爲像Documents或AppData這樣的用戶文件夾。您的代碼原樣會觸發權限不足,除非您以管理員身份運行程序,因爲C:\的根目錄只能在提升的上下文中使用。

+0

我在最初的問題中添加了一段代碼,試圖讓事情更清晰。 – user3353568

相關問題