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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2011, 16:15   #1
Abbath1349
Пользователь
 
Регистрация: 23.10.2010
Сообщений: 25
По умолчанию Небольшой глюк в кресткиах ноликах

Пишу прогу крестики нолики. Возникла проблема,что нажать кнопку получается только 4 раза (4 крестика и прога добаляет 4 нолика) ,а на нажатии последней прога зависает.
Код:
 public partial class Form1 : Form

    {
       
        Label[] X_0 = new Label[9];
        bool[] position = new bool[9];
        public Form1()
        {
            InitializeComponent();
            int x = 15, y = 15;
       
                for (int i = 0; i < 9; i++)
                {
                    X_0[i] = new Label();
                    X_0[i].Location = new Point(x, y);
                    X_0[i].Size = new Size(60, 60);
                    X_0[i].Text = "";
                    X_0[i].AutoSize = false;
                    X_0[i].BorderStyle = BorderStyle.Fixed3D;
                    X_0[i].BackColor = Color.Yellow;
                    X_0[i].Font = new Font("Arial", 40F);
                    X_0[i].TextAlign = ContentAlignment.MiddleCenter;
                    X_0[i].Tag = i;
                    X_0[i].Click += new System.EventHandler(Button_Click);
                    Controls.Add(X_0[i]);
                    x += 75;
                    if (i == 2 || i==5) { x = 15; y += 75; }
                    position[i] = false;
                  }
              
        
        }
    

        void Button_Click(object sender, EventArgs e)
        {
            Label lclick = (Label)sender;
            int n = Convert.ToInt32(lclick.Tag);
            Random x = new Random();
            bool downl = true;
        
              if (!position[n])
                {
                    X_0[n].Text = "X";
                    position[n] = true;
                    
                        while (downl)
                        {
                            int y = x.Next(0, 9);
                            if (!position[y])
                            {
                                X_0[y].Text = "0";
                                position[y] = true;
                                downl = false;
                            }
                        }
                  
                }
            }
            
       

        

       
       
      
        
          

    }
Abbath1349 вне форума Ответить с цитированием
Старый 26.03.2011, 16:37   #2
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

зависон происходит вот в этом цикле
Код:
while (downl)
                        {
                            int y = x.Next(0, 9);
                            if (!position[y])
                            {
                                X_0[y].Text = "0";
                                position[y] = true;
                                downl = false;
                            }
                        }
случайный выбор никак не может попасть на свободную клетку....
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Небольшой сайт Amazed Фриланс 7 14.11.2010 11:33
Небольшой шифр Транкс Свободное общение 12 27.09.2010 18:32
небольшой вопрос -2 peq Microsoft Office Excel 2 24.12.2009 11:45
небольшой вопрос peq Microsoft Office Excel 3 23.12.2009 11:06