Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2012, 13:25   #1
Serg94
Форумчанин
 
Аватар для Serg94
 
Регистрация: 10.12.2011
Сообщений: 167
По умолчанию шахматная доска. C#

Здравствуйте! У меня есть 2 многомерных массива PictureBox, один для черных квадратиков ,а второй для белых соответственно..Вот вопрос: почему не видно белых квадратиков?только появился вертикальный ряд из белых и все, а те где?
Код:
 PictureBox[,] b = new PictureBox[4, 8];
        PictureBox[,] w = new PictureBox[4, 8];
        Image im;
        Image im1;
        private void Form1_Load(object sender, EventArgs e)
        {
            im = Image.FromFile("1_2.bmp");
            im1 = Image.FromFile("2_2.bmp");
            for (int j = 0; j < 8; ++j)
            {
                for (int i = 0; i < 4; ++i)
                {
                    b[i, j] = new PictureBox();
                    w[i, j] = new PictureBox();
                    b[i, j].Image = im;
                    w[i, j].Image = im1;
                    w[i, j].AutoSize = true;
                    b[i, j].AutoSize = true;
                    if (j < 1)
                    {
              
                        b[i, j].Location = new Point(i * 100 + 100, 76);
                        w[i, j].Location = new Point(i * 100 + 50, 76);
                    }
                    if (j > 0 && j < 2)
                    {
                        w[i, j].Location = new Point(i * 100 + 100, 126);
                        b[i, j].Location = new Point(i * 100 + 50, 126);
                    }
                    if (j > 1 && j < 3)
                    {
                        w[i, j].Location = new Point(i * 100 + 50, 176);
                        b[i, j].Location = new Point(i * 100 + 100, 176);
                    }
                    if (j > 2 && j < 4)
                    {
                        w[i, j].Location = new Point(i * 100 + 100, 226);
                        b[i, j].Location = new Point(i * 100 + 50, 226);
                    }
                    if (j > 3 && j < 5)
                    {
                        w[i, j].Location = new Point(i * 100 + 50, 276);
                        b[i, j].Location = new Point(i * 100 + 100, 276);
                    }
                    if (j > 4 && j < 6)
                    {
                        w[i, j].Location = new Point(i * 100 + 100, 326);
                        b[i, j].Location = new Point(i * 100 + 50, 326);
                    }
                    if (j > 5 && j < 7)
                    {
                        w[i, j].Location = new Point(i * 100 + 50, 376);
                        b[i, j].Location = new Point(i * 100 + 100, 376);
                    }
                    if (j > 6)
                    {
                        w[i, j].Location = new Point(i * 100 + 100, 426);
                        b[i, j].Location = new Point(i * 100 + 50, 426);
                    }
                    this.Controls.AddRange(new Control[] { b[i, j], w[i , j]});
                }
            }
        }
а если не добавить в Control массив из белых, то черные расположены так как надо, и наоборот! что не так?
Изображения
Тип файла: png Снимок.PNG (30.4 Кб, 149 просмотров)
Тип файла: png Снимок1.PNG (22.0 Кб, 134 просмотров)
Serg94 вне форума Ответить с цитированием
Старый 08.12.2012, 22:32   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Даю алгоритм рисования почти без привязки к языку:
Код:
//Рисование доски
	for(int i=0;i<8;i++)			//двойной цикл
		for(int j=0;j<8;j++)		//рисования доски
		{
			if((i+j)&1)				//Если сумма i+j нечетная
			{
					//то клетка белая
					
			}
			else
			{
						//иначе клетка черная
					
			}
		}
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шахматная доска xamelion Visual C++ 8 15.02.2012 21:41
шахматная доска revaldo666 Общие вопросы C/C++ 4 11.01.2011 11:25
Шахматная доска!!! Евгений19 Помощь студентам 3 08.03.2010 20:02
Шахматная доска Shevali Помощь студентам 4 03.04.2009 20:22
шахматная доска Irisha_17_85 Паскаль, Turbo Pascal, PascalABC.NET 4 04.11.2008 10:50