Премини към съдържанието

Препоръчан отговор


Здравейте ! Имам нужда от малко помощ. Имам задача да напиша програма на C#, която да може да чете PGN файл ред по ред и да в случай, че намери непозволен ход, да покаже съобщение. 
 
CODE
public chessForm()
       {
           InitializeComponent();
       }

       private void chessForm_Load(object sender, EventArgs e)
       {

       }

       private void button_exit_Click(object sender, EventArgs e)
       {
           Application.Exit();
       }

       private void button_play_Click(object sender, EventArgs e)
       {
           openFileDialog1.Filter = "Text Files|*.txt";
           openFileDialog1.FileName = String.Empty;
           DialogResult result = openFileDialog1.ShowDialog();
           if (result == DialogResult.OK)
           {
               Stream fs = openFileDialog1.OpenFile();
               StreamReader reader = new StreamReader(fs);
               reader.ReadToEnd();

               
               reader.Close();
           }
       }
   }


До тук имам бутон, при чието натискане мога да отворя произволен файл. 

Въпросът ми е как да направя списък с позволените ходове на всяка фигура /като отделни класове или?/ , така че при изчитане на файла да хвана грешен ход, ако има такъв? 

Извинявам се, ако е глупав въпроса, но съм в процес на обучение и са ми доста неясни нещата все още

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Няма логика позволените ходове да са отделни класове. По-скоро отделните фигури могат да са класове. Не съм запознат с този формат, но сега като го погледна набързо ми изглежда, че и просто низ за всеки ход ще ти е достатъчен. Основното ще бъде да пазиш правилно състоянието на цялата дъска, за да знаеш къде се намира всяка фигура след всеки един ход; за да не смяташ възможните ходове за всички фигури за всеки ход, може първо да вземеш фигурата, чийто ход искаш да валидираш, да сметнеш възможностите само за нея, да ги натрупаш примерно в масив, в който после да търсиш въпросния ход; още една стъпка на оптимизация би била да не трупаш предварително нищо, а директно да провериш хода, който ти е даден във файла.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

  • Разглеждащи това в момента   0 потребители

    Няма регистрирани потребители разглеждащи тази страница.

  • Подобни теми

    • от minavazatoka
      Опитвам се да добавя key за изпълнението на мое .exe . На моят компютър върви нормално , но на други се пуска аваста и пищи . Не мога да разбера защо . С Windows 10 съм , ако това има изобщо значение . Другото , което не разбирам е , защо върви само с папките на проекта а .exe - то не може като е самостоятелно при рънване да си набие ключ в регистъра . Тук трябва да кажа също и че програмата не е вирус , но аваст и други "анти-вирусни" като дефаултната на Windows ловят .exe - то без причина . Ето и линията , която ползвам за добавяне на ключ:
      RegistryKey addProcess = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); addProcess.SetValue("Leslie", "\"" + Application.ExecutablePath.ToString() + "\"");  
    • от Greenlife
      Здравейте, от няколко дни започнах с изучаването на C#, като нямам опит в програмирането. В сайта, от който се обучавам стигнах до секцията if , но не мога да разбера следния пример:
      int age = 18; if (age > 14) { if(age > 18) { Console.WriteLine("Adult"); } else { Console.WriteLine("Teenager"); } } else { if (age > 0) { Console.WriteLine("Child"); } else { Console.WriteLine("Something's wrong"); } } Конзолата ми отпечатва "Teenager", но защо? В първия if след Int, age e по-голямо от 14, защо тогава не изписва "Adult"?
      Ще съм благодарен. ако ми обясните с прости думи , за да го разбера. Благодаря : )
    • от coda
      Здравейте нов съм във програмирането и имам една доста елементарна задачка
      1.Write a program that reads a string, reverses it and prints the result at the console.
      Example: "sample" -> "elpmas"  
       
      Написах това
       
       
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;

      namespace ReverseStringAplication
      {
          public class Program
          {
              static void Main()
              {
                  string str = "Simple";
                  Console.WriteLine();
                  Console.ReadLine(reverse(str));  /Тук ми дава грешлата
                
              }
              private static string reverse(string str)
              {
                  char[] charove = str.ToCharArray();
                  int j = charove.Length;
                  for(int i=0;i<charove.Length/2;i++)
                  {
                      char temporary = charove;
                      charove = charove[j];
                      charove[j] = temporary;
                      j--;
                  }
                  return new String(charove);
              }
          }

      }
       
      И ми дава тази грекшка
      Error    1    No overload for method 'ReadLine' takes 1 arguments    C:\Users\MyPc\Desktop\ForTelerik\ReverseStringAplication\ReverseStringAplication\Program.cs    15    13    ReverseStringAplication
       
       
      Ще се радвам ако някой би бил така добър да ми помогне Благодаря
       
  • Дарение

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.