Крестики-нолики: Не удаётся вставить изображения крестика, нолика и фона для кнопок - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Я недавно изучаю С#. Хочу написать игру "Крестики-нолики". За основу взяла чужой код с видеоурока. Не удаётся вставить изображения крестика, нолика и фона для кнопок. Ошибка: "Неявное преобразование типа "string" в "System.Drawing.Image" невозможно"". Т.е. при запуске игры, нажимая на кнопки полей, не появляются изображения крестика или нолика. И не появляется свойство ImageLocation. И ещё одна проблемка. Если я ставлю, например, "крестик"-"нолик"-"крестик" по диагонали, вертикали или же горизонтали один за другим, выскакивает MessageBox "Нолики выиграли" при том, что на самом деле не выиграл ещё никто. Вот код. Помогите найти ошибки.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication52
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        string x = "крестик.jpg"; //изображения крестика, нолика и фона
        string o = "нолик.jpg";
        string f = "фон.jpg";
 
        int temp; //количество ходов
        int flag; //кто сейчас ходит. По умолчанию 1, ибо снчала ходят крестики. 
 
        int[] m_1 = new int[9] {0,0,0,0,0,0,0,0,0}; //места клеткок, в которые будут помещены крестики и нолики
        int[] m_2 = new int[9] {2,2,2,2,2,2,2,2,2 }; // массив для проверки заполения крестиком или ноликом

        public void New_game() 
        {
            flag = 1; 
            temp = 0;
 
            for (int i = 0; i < 9; i++) //очистка полей
            {
                m_1[i] = 0;
                m_2[i] = 2;
 
                button1.ImageLocation = f; //установка фона на кнопках
                button2.ImageLocation = f;
                button3.ImageLocation = f;
                button4.ImageLocation = f;
                button5.ImageLocation = f;
                button6.ImageLocation = f;
                button7.ImageLocation = f;
                button8.ImageLocation = f;
                button9.ImageLocation = f;
 
            }

        }
 
        public void pobeda_x() //если победили крестики
        {
            MessageBox.Show("Победили крестики ");
            New_game();
        }
 
        public void pobeda_o() //если победили нолики
        {
            MessageBox.Show("Победили нолики ");
            New_game();
        }
 
        public void proverka() 
        {
            if (flag == 1 && temp < 9) //если ход крестиков и кол-во ходов меньше 9
            {
                if (m_2[0] == 1 && m_2[1] == 1 && m_2[2] == 1)  //если 1,2 и 3 кнопки — крестики
                {
                    pobeda_x();
                }
 
                if (m_2[3] == 1 && m_2[4] == 1 && m_2[5] == 1) //4,5,6
                {
                    pobeda_x();
                }
 
                if (m_2[6] == 1 && m_2[7] == 1 && m_2[8] == 1) //7,8,9
                {
                    pobeda_x();
                }

                if (m_2[0] == 1 && m_2[3] == 1 && m_2[6] == 1) //вертикаль
                {
                    pobeda_x();
                }
 
                if (m_2[1] == 1 && m_2[4] == 1 && m_2[7] == 1)
                {
                    pobeda_x();
                }
 
                if (m_2[2] == 1 && m_2[5] == 1 && m_2[8] == 1)
                {
                    pobeda_x();
                }

                if (m_2[0] == 1 && m_2[4] == 1 && m_2[8] == 1) //диагональ
                {
                    pobeda_x();
                }
 
                if (m_2[2] == 1 && m_2[4] == 1 && m_2[6] == 1)
                {
                    pobeda_x();
                }

             //то же самое для ноликов

                if (m_2[0] == 0 && m_2[1] == 0 && m_2[2] == 0)
                {
                    pobeda_o();
                }
                if (m_2[3] == 0 && m_2[4] == 0 && m_2[5] == 0)
                {
                    pobeda_o();
                }
                if (m_2[6] == 0 && m_2[7] == 0 && m_2[8] == 0)
                {
                    pobeda_o();
                }

                if (m_2[0] == 0 && m_2[3] == 0 && m_2[6] == 0)
                {
                    pobeda_o();
                }
 
                if (m_2[1] == 0 && m_2[4] == 0 && m_2[7] == 0)
                {
                    pobeda_o();
                }
 
                if (m_2[2] == 0 && m_2[5] == 0 && m_2[8] == 0)
                {
                    pobeda_o();
                }

                if (m_2[0] == 0 && m_2[4] == 0 && m_2[8] == 0)
                {
                    pobeda_o();
                }
 
                if (m_2[2] == 0 && m_2[4] == 0 && m_2[6] == 0)
                {
                    pobeda_o();
                }
 
            }
        }

        private void выходToolStripMenuItem_Click(object sender, EventArgs e) 
        {
            this.Close(); //выход
        }
 
        private void новаяToolStripMenuItem_Click(object sender, EventArgs e) 
        {
            New_game(); //новая игра
        }
 
        private void button1_Click(object sender, EventArgs e) 
        {
            if (flag == 1 && m_1[0] == 0) //если ходит крестик и поле не занято
            {
                button1.ImageLocation = x; //появляется изображение крестика
 
                flag = 0; //следующий ход — нолика
                m_1[0] = 0; 
                m_2[0] = 1; //теперь здесь крестик
                temp++; //кол-во ходов увеличивается на 1
 
                proverka(); //проверяется, вдруг кто-то выиграл
 
            }
 
            if (flag == 0 && m_1[0] == 0) //то же и для ноликов
            {
                button1.ImageLocation = o;
 
                flag = 1;
                m_1[0] = 0;
                m_2[0] = 0;
                temp++;
 
                proverka();
            }
        }
 
        private void button2_Click(object sender, EventArgs e) //и так для каждой кнопки
        {
            if (flag == 1 && m_1[1] == 0)
            {
                button2.ImageLocation = x;
 
                flag = 0;
                m_1[1] = 0;
                m_2[1] = 1;
                temp++;
 
                proverka();
 
            }
 
            if (flag == 0 && m_1[1] == 0)
            {
                button1.ImageLocation = o;
 
                flag = 1;
                m_1[1] = 0;
                m_2[1] = 0;
                temp++;
 
                proverka();
            }
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            if (flag == 1 && m_1[2] == 0)
            {
                button3.ImageLocation = x;
 
                flag = 0;
                m_1[2] = 0;
                m_2[2] = 1;
                temp++;
 
                proverka();
 
            }
 
            if (flag == 0 && m_1[2] == 0)
            {
                button1.ImageLocation = o;
 
                flag = 1;
                m_1[2] = 0;
                m_2[2] = 0;
                temp++;
 
                proverka();
            }
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            if (flag == 1 && m_1[3] == 0)
            {
                button4.ImageLocation = x;
 
                flag = 0;
                m_1[3] = 0;
                m_2[3] = 1;
                temp++;
 
                proverka();
 
            }
 
            if (flag == 0 && m_1[3] == 0)
            {
                button1.ImageLocation = o;
 
                flag = 1;
                m_1[3] = 0;
                m_2[3] = 0;
                temp++;
 
                proverka();
            }
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
            if (flag == 1 && m_1[4] == 0)
            {
                button5.ImageLocation = x;
 
                flag = 0;
                m_1[4] = 0;
                m_2[4] = 1;
                temp++;
 
                proverka();
 
            }
 
            if (flag == 0 && m_1[4] == 0)
            {
                button1.ImageLocation = o;
 
                flag = 1;
                m_1[4] = 0;
                m_2[4] = 0;
                temp++;
 
                proverka();
            }
        }
 
        private void button6_Click(object sender, EventArgs e)
        {
            if (flag == 1 && m_1[5] == 0)
            {
                button6.ImageLocation = x;
 
                flag = 0;
                m_1[5] = 0;
                m_2[5] = 1;
                temp++;
 
                proverka();
 
            }
 
            if (flag == 0 && m_1[5] == 0)
            {
                button1.ImageLocation = o;
 
                flag = 1;
                m_1[5] = 0;
                m_2[5] = 0;
                temp++;
 
                proverka();
            }
        }
 
        private void button7_Click(object sender, EventArgs e)
        {
            if (flag == 1 && m_1[6] == 0)
            {
                button7.ImageLocation = x;
 
                flag = 0;
                m_1[6] = 0;
                m_2[6] = 1;
                temp++;
 
                proverka();
 
            }
 
            if (flag == 0 && m_1[6] == 0)
            {
                button1.ImageLocation = o;
 
                flag = 1;
                m_1[6] = 0;
                m_2[6] = 0;
                temp++;
 
                proverka();
            }
        }
 
        private void button8_Click(object sender, EventArgs e)
        {
            if (flag == 1 && m_1[7] == 0)
            {
                button8.ImageLocation = x;
 
                flag = 0;
                m_1[7] = 0;
                m_2[7] = 1;
                temp++;
 
                proverka();
 
            }
 
            if (flag == 0 && m_1[7] == 0)
            {
                button1.ImageLocation = o;
 
                flag = 1;
                m_1[7] = 0;
                m_2[7] = 0;
                temp++;
 
                proverka();
            }
        }
 
        private void button9_Click(object sender, EventArgs e)
        {
            if (flag == 1 && m_1[8] == 0)
            {
                button9.ImageLocation = x;
 
                flag = 0;
                m_1[8] = 0;
                m_2[8] = 1;
                temp++;
 
                proverka();
 
            }
 
            if (flag == 0 && m_1[8] == 0)
            {
                button1.ImageLocation = o;
 
                flag = 1;
                m_1[8] = 0;
                m_2[8] = 0;
                temp++;
 
                proverka();
            }
        }
    }
}

Решение задачи: «Крестики-нолики: Не удаётся вставить изображения крестика, нолика и фона для кнопок»

textual
Листинг программы
for (int i = 1; i <=9; i++)
   Controls["Button"+i].ImageLocation = f;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы