C# простая шахматная ошибка
у меня есть шахматная доска,в правой части у меня есть Combobox, textbox и кнопки, из combobox я должен выбрать тип фигуры,например` слон, пешка и так далее,в текстовом поле я должен написать ее координаты,например ' D5,а затем нажать на кнопку Create,но у меня есть также кнопка Test, которая проверяет, существуют ли все фигуры на доске, например, если у меня есть все фигуры на доске, кроме пешки, когда я нажимаю на кнопку Test, это даст мне ошибку MessageBox.
Как я могу это проверить?
Спасибо.
Что я уже пробовал:
Я пробовал это сделать, но это ложь.
private void Test_Click(object sender, EventArgs e) { if(comboBox1.SelectedItem != "Bishop" || comboBox1.SelectedItem != "Pawn") { MessageBox.Show("Error"); } }
private void Form1_Paint(object sender, PaintEventArgs e)//This is my Chess board { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if((i+j) % 2 != 0) gf.FillRectangle(Brushes.Black, (j + 1) * 50, (i+1)*50, 50, 50); } Label lb = new Label(); lb.Text = Convert.ToChar('A' + i).ToString(); lb.Font = new Font("Tahoma", 18); lb.Location = new Point(50 * (i + 1), 450); lb.Width = 50; lb.Height = 26; this.Controls.Add(lb); } for (int i = 8; i > 0; i--) { Label lab = new Label(); lab.Text = i.ToString(); lab.Font = new Font("Tahoma", 18); lab.Location = new Point(0, 50 *(9- i)); lab.Width = 50; lab.Height = 26; this.Controls.Add(lab); } } private void create_Click_1(object sender, EventArgs e) //This is my Create button { if (comboBox1.SelectedItem == "Bishop") { string position = textBox1.Text; string first_letter = position[0].ToString().ToUpper(); int x = (int)(first_letter[0] - 64); int y = int.Parse(position[1].ToString()); gf.DrawImage(Properties.Resources.Bishop, x * 50, (8 - y + 1) * 50, 50, 50); } else if(comboBox1.SelectedItem == "Pawn") { string position = textBox1.Text; string first_letter = position[0].ToString().ToUpper(); int x = (int)(first_letter[0] - 64); int y = int.Parse(position[1].ToString()); gf.DrawImage(Properties.Resources.Pawn, x * 50, (8 - y + 1) * 50, 40, 50); } }
Richard MacCutchan
Этот логический оператор должен быть &&
, нет ||
Но как насчет всех остальных частей?
Suren97
мне не нужны все части, теперь мне нужно только проверить, что две части ' Pawn и Бишоп, я также попробовал оператор && но это тоже не работает
Richard MacCutchan
Тогда вы делаете что-то не так. Но поскольку вы не дали никаких подробностей, мы не можем догадаться, что именно.
Suren97
я могу отправить вам свою функцию Form1_Paint
Richard MacCutchan
Если у вас есть полезная информация о вашей проблеме, то, пожалуйста, воспользуйтесь Улучшить вопрос ссылка выше, и добавить его к исходному запросу.
Suren97
Я обновил, можете посмотреть.
Richard MacCutchan
Почему ты звонишь ToString
на веревочках?
Suren97
Что ты имеешь в виду? потому что мне нужно позвонить Тапперу()
Richard MacCutchan
нет никакой необходимости звонить ToString
на элементе, который уже является строкой. В этом нет никакого смысла.
Вы также дублируете код без всякой причины. Независимо от того, является ли выбор "слоном" или "пешкой", требования одинаковы. Поэтому напишите один метод, который может быть вызван независимо от того, на какую часть вы ссылаетесь.
Suren97
но я не могу написать позицию[0].Таппер();
Richard MacCutchan
Перейдите в MSDN и ознакомьтесь с документацией по классам String и Char.
Suren97
ладно,я думаю,теперь это не важно, не поможете ли вы мне, что я должен написать в методе Test_click?
Richard MacCutchan
Я все еще не понимаю, что вы пытаетесь с этим сделать. Шахматная программа обычно создается путем рисования доски с изображениями в виде фигур, позволяя пользователю перетаскивать их для каждой игры.
Suren97
хорошо,спасибо :)
PeejayAdams
Попробуйте посмотреть на свойство SelectedValue, а не SelectedItem. && это определенно правильный оператор.
Suren97
хорошо я попробую сейчас
Suren97
Нет,он дает мне ошибку во всех случаях, теперь у меня есть Слон и пешка на доске, он не должен давать мне ошибку, но он снова дает мне ошибку
Suren97
Послушайте, у меня есть Слон и пешка в combobox, если я поставлю их на доску, а затем нажму на кнопку Test, это не должно дать мне ошибку messageBox
Suren97
Но если я не поставил никого из этого он должен дать мне ошибку messageBox