2016-04-28 76 views
-1

對於不好的標題感到抱歉,因爲它表明我的代碼似乎有一個巨大的錯誤,直到我改變了從前一個屏幕加載數據的方法(將它從加載xml更改爲txt)之前,這一切都進展順利。看到所有這些錯誤後,我認爲這是我寫的代碼,所以我刪除它,它仍然無法正常工作。我的C#代碼有什麼問題?可能太多括號?

在之前的問題中搜索答案後,人們似乎認爲這是一個額外的括號或分號,但盡我最大的努力(即使我的眼睛不是驚人的),我似乎無法找到問題。

預先感謝您。我很欣賞它,雖然這看起來像一個愚蠢的問題,但我似乎無法找到問題。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 
using System.Xml; 
using System.Xml.Serialization; 
using System.IO; 

namespace Planet_of_fightcraft_final_build 
{ 
/// <summary> 
/// Interaction logic for PartySelectionScreen.xaml 
/// </summary> 
public partial class PartySelectionScreen : Window 
{ 
    public PartySelectionScreen() 
    { 
     InitializeComponent(); 
    } 

    // When the partySelectionScreen is loaded 
    // it will deserialize and read the NameData.xml file 
    // and will populate the charName and charStats textboxes 
    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 


     XmlSerializer sr = new XmlSerializer(typeof(NameSavingInformation)); 
     FileStream read = new FileStream("NameData.xml", 
      FileMode.Open, FileAccess.Read, FileShare.Read); 

     NameSavingInformation nameInfo = (NameSavingInformation)sr.Deserialize(read); 
     charNameTextBox.Text = nameInfo.GeneratedName; 

     // Setting the values of the user characters stats 
     // ucs = user class stats 
     userClassStats ucs = new userClassStats(); 

     /*------Character Stats------*/ 
     ucs.H = 200; 
     ucs.AP = 75; 
     ucs.CA = 125; 
     ucs.S = 100; 
     //---------------------------// 

     string health = "Health: " + ucs.H; 
     string attackPower = "Attack Power: " + ucs.AP; 
     string criticalAttack = "Critical Power: " + ucs.CA; 
     string speed = "Speed: " + ucs.S; 
     /*------Character Stats------*/ 

     string nl = "\n \n"; 
     charStatsTextBox.Text = 
      health + nl + 
      attackPower + nl + 
      criticalAttack + nl + 
      speed; 
    } 



    // This sets a limit on how many party memebers can be added into the listbox at one time 
    public int limit = 10; 
    public string limitMsg = "You have reached the maxmimum amount of party memebers, please delete some and try again."; 

    private void generatePartyButton_Click(object sender, RoutedEventArgs e) 
    { 
     // Array of party members that can be randomly generated into the listbox. 
     string[] partyMembers = 
     { 
      "Barbarian", 
      "Elf", 
      "Wizard", 
      "Dragon", 
      "Knight" 
     }; 

     Random r = new Random(); 


     // This checks to see if there are allready existing party members in the list box, if so it will 
     // prompt the user asking them for confirmation that they want to re - generate the list. 
     // If yes it will clear all the items and re add new ones. 
     if (partyMembersListBox.Items.Count <= limit) 
     { 
      partyMembersListBox.Items.Clear(); 

      for (int i = 0; i < 1; i++) 
      { 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
      } 

     } 



    } 

    // This will allow the user to edit the stats of the selected party memeber from the listbox 
    private void editStatsButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.SelectedItem.ToString() == "Barbarian") 
     { 
      BStatsEditing bStatsEditing = new BStatsEditing(); 
      bStatsEditing.Show(); 
     } 
     else if (partyMembersListBox.SelectedItem.ToString() == "Elf") 
     { 
      EStatsEditing eStatsEditing = new EStatsEditing(); 
      eStatsEditing.Show(); 
     } 
    } 

    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addBarbarianButton_Click(object sender, RoutedEventArgs e) 
    { 

     if (partyMembersListBox.Items.Count < limit) 
     { 
      // bc = Barbarian Character. 
      string bc = "Barbarian"; 

      partyMembersListBox.Items.Add(bc); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 

    } 


    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addElfButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.Items.Count < limit) 
     { 
      // ec = Elf Character. 
      string ec = "Elf"; 

      partyMembersListBox.Items.Add(ec); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 
    } 


    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addWizardButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.Items.Count < limit) 
     { 
      // wc = Wizard Character. 
      string wc = "Wizard"; 

      partyMembersListBox.Items.Add(wc); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 
    } 


    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addDragonButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.Items.Count < limit) 
     { 
      //dc = Dragon Character. 
      string dc = "Dragon"; 

      partyMembersListBox.Items.Add(dc); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 
    } 


    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addKnightButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.Items.Count < limit) 
     { 
      //kc = Knight Character. 
      string kc = "Knight"; 

      partyMembersListBox.Items.Add(kc); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 
    } 


    // This allows the user to delete one or more chosen characters from the listbox. 
    private void deletePartyMember_Click(object sender, RoutedEventArgs e) 
    { 
     if (this.partyMembersListBox.SelectedIndex >= 0) 
     { 
      this.partyMembersListBox.Items.RemoveAt(this.partyMembersListBox.SelectedIndex); 
     } 
    } 

    // This will save the current party members to the PartyData.txt file 
    private void savePartyButton_Click(object sender, RoutedEventArgs e) 
    { 
     System.IO.StreamWriter SaveFile = new System.IO.StreamWriter("PartyData.txt"); 
     foreach (var item in partyMembersListBox.Items) 
     { 
      SaveFile.WriteLine(item.ToString()); 
     } 
     SaveFile.Close(); 
    } 

    // This will search for the PartyData.txt file 
    // if it is found it will load the party data and populate the partyMembersListBox with said data 
    // if it cannot be found a messagebox will inform the user and prompt them to create a new party. 
    private void loadPartyButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (File.Exists("PartyData.txt")) 
     { 
      string[] lines = File.ReadAllLines("PartyData.txt"); 
      foreach (string line in lines) 
      { 
       partyMembersListBox.Items.Add(line); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Unable to find existing party data, please create a new party!"); 
     } 
    } 
} 
} 
+2

您的課程正好在您的Window_Loaded事件之後結束。我懷疑這是你想要的。 –

+0

查看此[頁面]上的示例部分(https://msdn.microsoft.com/en-us/library/system.io.streamwriter(v = vs.110).aspx)(右下角)正確使用流寫入器 –

+0

Thankyou非常不能相信我沒有發現!也謝謝你的資源將決定給它一個閱讀! – Ambitiousmilky

回答

0

你已經過早地關閉了你的班級。取決於您的編輯器,在您宣佈int limit之前,在您的Window_Loaded刪除一個近括號之前,您應該有一條紅色的波浪線。這是更新的代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 
using System.Xml; 
using System.Xml.Serialization; 
using System.IO; 

namespace Planet_of_fightcraft_final_build 
{ 
/// <summary> 
/// Interaction logic for PartySelectionScreen.xaml 
/// </summary> 
public partial class PartySelectionScreen : Window 
{ 
    public PartySelectionScreen() 
    { 
     InitializeComponent(); 
    } 

    // When the partySelectionScreen is loaded 
    // it will deserialize and read the NameData.xml file 
    // and will populate the charName and charStats textboxes 
    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 


     XmlSerializer sr = new XmlSerializer(typeof(NameSavingInformation)); 
     FileStream read = new FileStream("NameData.xml", 
      FileMode.Open, FileAccess.Read, FileShare.Read); 

     NameSavingInformation nameInfo = (NameSavingInformation)sr.Deserialize(read); 
     charNameTextBox.Text = nameInfo.GeneratedName; 

     // Setting the values of the user characters stats 
     // ucs = user class stats 
     userClassStats ucs = new userClassStats(); 

     /*------Character Stats------*/ 
     ucs.H = 200; 
     ucs.AP = 75; 
     ucs.CA = 125; 
     ucs.S = 100; 
     //---------------------------// 

     string health = "Health: " + ucs.H; 
     string attackPower = "Attack Power: " + ucs.AP; 
     string criticalAttack = "Critical Power: " + ucs.CA; 
     string speed = "Speed: " + ucs.S; 
     /*------Character Stats------*/ 

     string nl = "\n \n"; 
     charStatsTextBox.Text = 
      health + nl + 
      attackPower + nl + 
      criticalAttack + nl + 
      speed; 
    } 



    // This sets a limit on how many party memebers can be added into the listbox at one time 
    public int limit = 10; 
    public string limitMsg = "You have reached the maxmimum amount of party memebers, please delete some and try again."; 

    private void generatePartyButton_Click(object sender, RoutedEventArgs e) 
    { 
     // Array of party members that can be randomly generated into the listbox. 
     string[] partyMembers = 
     { 
      "Barbarian", 
      "Elf", 
      "Wizard", 
      "Dragon", 
      "Knight" 
     }; 

     Random r = new Random(); 


     // This checks to see if there are allready existing party members in the list box, if so it will 
     // prompt the user asking them for confirmation that they want to re - generate the list. 
     // If yes it will clear all the items and re add new ones. 
     if (partyMembersListBox.Items.Count <= limit) 
     { 
      partyMembersListBox.Items.Clear(); 

      for (int i = 0; i < 1; i++) 
      { 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
       partyMembersListBox.Items.Add(partyMembers[r.Next(0, 4)]); 
      } 

     } 



    } 

    // This will allow the user to edit the stats of the selected party memeber from the listbox 
    private void editStatsButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.SelectedItem.ToString() == "Barbarian") 
     { 
      BStatsEditing bStatsEditing = new BStatsEditing(); 
      bStatsEditing.Show(); 
     } 
     else if (partyMembersListBox.SelectedItem.ToString() == "Elf") 
     { 
      EStatsEditing eStatsEditing = new EStatsEditing(); 
      eStatsEditing.Show(); 
     } 
    } 

    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addBarbarianButton_Click(object sender, RoutedEventArgs e) 
    { 

     if (partyMembersListBox.Items.Count < limit) 
     { 
      // bc = Barbarian Character. 
      string bc = "Barbarian"; 

      partyMembersListBox.Items.Add(bc); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 

    } 


    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addElfButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.Items.Count < limit) 
     { 
      // ec = Elf Character. 
      string ec = "Elf"; 

      partyMembersListBox.Items.Add(ec); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 
    } 


    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addWizardButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.Items.Count < limit) 
     { 
      // wc = Wizard Character. 
      string wc = "Wizard"; 

      partyMembersListBox.Items.Add(wc); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 
    } 


    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addDragonButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.Items.Count < limit) 
     { 
      //dc = Dragon Character. 
      string dc = "Dragon"; 

      partyMembersListBox.Items.Add(dc); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 
    } 


    // The user can choose their team without random generation. 
    // this will check to see if the count of items in the list box is less than the limit 
    // if so it will manualy add the - character, else it will show a messagebox informing them 
    // they have reached the maximum amount of characters and must delete some. 
    private void addKnightButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (partyMembersListBox.Items.Count < limit) 
     { 
      //kc = Knight Character. 
      string kc = "Knight"; 

      partyMembersListBox.Items.Add(kc); 
     } 
     else 
     { 
      MessageBox.Show(limitMsg); 
     } 
    } 


    // This allows the user to delete one or more chosen characters from the listbox. 
    private void deletePartyMember_Click(object sender, RoutedEventArgs e) 
    { 
     if (this.partyMembersListBox.SelectedIndex >= 0) 
     { 
      this.partyMembersListBox.Items.RemoveAt(this.partyMembersListBox.SelectedIndex); 
     } 
    } 

    // This will save the current party members to the PartyData.txt file 
    private void savePartyButton_Click(object sender, RoutedEventArgs e) 
    { 
     System.IO.StreamWriter SaveFile = new System.IO.StreamWriter("PartyData.txt"); 
     foreach (var item in partyMembersListBox.Items) 
     { 
      SaveFile.WriteLine(item.ToString()); 
     } 
     SaveFile.Close(); 
    } 

    // This will search for the PartyData.txt file 
    // if it is found it will load the party data and populate the partyMembersListBox with said data 
    // if it cannot be found a messagebox will inform the user and prompt them to create a new party. 
    private void loadPartyButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (File.Exists("PartyData.txt")) 
     { 
      string[] lines = File.ReadAllLines("PartyData.txt"); 
      foreach (string line in lines) 
      { 
       partyMembersListBox.Items.Add(line); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Unable to find existing party data, please create a new party!"); 
     } 
    } 
} 
+0

工作完全謝謝你,我不相信我錯過了! – Ambitiousmilky

+0

@Ambitiousmilky我的榮幸:-)。請將所有答案標記爲將來參考的正確答案,也可以使用[CodeMaid](http://www.codemaid.net/)等語法突出顯示。它有助於作爲一個新的開發人員,並歡迎來到.NET的世界:D – RhysO