С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 21

При быстрой победе в игре крестики_нолики не выводилось после сообщения победителя, другие сообщения

31.05.2016, 15:32. Показов 1091. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать что при быстрой победе в игре крестики_нолики не выводилось после сообщения победителя, ходит Х или 0.
Может использовать имеющий счётчик или сделать новый, но я не знаю куда его поставить можно((((
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Kursovaya_po_PYAVY
{
    public partial class Form1 : Form
    {
        bool _turn = true;//true = Включить X ; false = Включить Y 
        int _Count = 0;//Счётчик 
 
 
        public Form1()
        {
            InitializeComponent();
            if (_Count == 0)
            {
                MessageBox.Show("Ходят Крестики");
            }
 
        }
 
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void Messege()
        {
 
            if (_Count == 1)
            {
                MessageBox.Show("Ходят Нолики");
            }
            else if (_Count == 2)
            {
                MessageBox.Show("Ходят Крестики");
            }
            else if (_Count == 3)
            {
                MessageBox.Show("Ходят Нолики");
                
            }
                
            else if (_Count == 4)
            {
                MessageBox.Show("Ходят Крестики");
            }
            else if (_Count == 5)
            {
                MessageBox.Show("Ходят Нолики");
            }
            else if (_Count == 6)
            {
                MessageBox.Show("Ходят Крестики");
            }
            else if (_Count == 7)
            {
                MessageBox.Show("Ходят Нолики");
            }
            else if (_Count == 8)
            {
                MessageBox.Show("Ходят Крестики");
            }
 
        }
        private void Button_Click(object sender, EventArgs e)
        {
            Button B = (Button)sender;
            if (_turn)
                B.Text = "X";
            else
                B.Text = "0";
            _turn = !_turn;
            B.Enabled = false;
            _Count++;
            Winner();
            Messege();
 
        }
        private void Winner()
        {
 
            bool This_is_Winner = false;
            // Горизонтальная проверка 
            if ((A1.Text == A2.Text) && (A2.Text == A3.Text) && (!A1.Enabled))
                This_is_Winner = true;
            else if ((B1.Text == B2.Text) && (B2.Text == B3.Text) && (!B1.Enabled))
                This_is_Winner = true;
            else if ((C1.Text == C2.Text) && (C2.Text == C3.Text) && (!C1.Enabled))
                This_is_Winner = true;
            //////////////////////////////////////////////////////////////////// 
            // Вертикальная проверка 
            if ((A1.Text == B1.Text) && (B1.Text == C1.Text) && (!A1.Enabled))
                This_is_Winner = true;
            else if ((A2.Text == B2.Text) && (B2.Text == C2.Text) && (!A2.Enabled))
                This_is_Winner = true;
            else if ((A3.Text == B3.Text) && (B3.Text == C3.Text) && (!A3.Enabled))
                This_is_Winner = true;
            //////////////////////////////////////////////////////////////////// 
            // ДИАГОНАЛЬНАЯ проверка 
            if ((A1.Text == B2.Text) && (B2.Text == C3.Text) && (!A1.Enabled))
                This_is_Winner = true;
            else if ((A3.Text == B2.Text) && (B2.Text == C1.Text) && (!C1.Enabled))
                This_is_Winner = true;
            //////////////////////////////////////////////////////////////////// 
            if (This_is_Winner)
            {
                BlockedButtons();
 
                String _Win = "";
                if (_turn)
                    _Win = "Нолики";
                else
                    _Win = "Крестики";
                MessageBox.Show(_Win + " Победили!!!!", "УРА!!!!");
            }//конец если 
            else
            {
                if (_Count == 9)
                    MessageBox.Show("Ничья((((", "Конец игры((((");
 
            }
        }//Конец метода Winner 
        private void BlockedButtons()
        {
            try
            {
                foreach (Control C in Controls)
                {
                    Button B = (Button)C;
                    B.Enabled = false;
                }//Конец foreach 
            }
            catch { }
        }
 
        private void новаяИграToolStripMenuItem_Click(object sender, EventArgs e)
        {
 
            _turn = true;
            _Count = 0;
            try
            {
                foreach (Control C in Controls)
                {
                    Button B = (Button)C;
                    B.Enabled = true;
                    B.Text = "";
                }//Конец foreach 
            }
            catch { }
            if (_Count == 0)
            {
                MessageBox.Show("Ходят Крестики");
            }
 
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2016, 15:32
Ответы с готовыми решениями:

Как сделать чтобы над иконкой в трее выводилось окно сообщения
Как сделать что бы над иконкой в трее выводилось окно сообщения? Или маленькое окошко с некоторой информацией над треем?

Эмуляция набора текстового сообщения в игре
эмм... я вас плохо понял, но я пытаюсь собрать такую программу, которая позволит "вставлять" в игру текст(т.к. ctrl+v не катит) ...

Mdaemoon не отправляет сообщения на mail.ru и другие почтовые сервисы
Какая может быть ошибка? еще не могу зайти по домену на почту kaskorsmu.kz:3000 а по айпи могу http://77.245.102.250:3000 помогите...

13
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
31.05.2016, 17:08
Ralex3, предлагаю выводить сообщения о том, кто ходит не в отдельный MessageBox , а в Label на форме с названием Message, а то выглядит как-то не очень, а также сделать функцию Winner() возвращающей логическое значение конца игры This_is_Winner, как раз чтобы не выводились "после сообщения победителя, другие сообщения". Примерно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
       private void Messege()
        {
           if (!_turn)
            {
                Message.Text = "Ходят Нолики";
            }
            else 
            {
                Message.Text = "Ходят Крестики";
            }
            
 
        }
        private void Button_Click(object sender, EventArgs e)
        {
            Button B = (Button)sender;
            if (_turn)
                B.Text = "X";
            else
                B.Text = "0";
            _turn = !_turn;
            B.Enabled = false;
            _Count++;
            if (!Winner()) Messege();
  
        }
        private bool Winner()
        {
 
            bool This_is_Winner = false;
            // Горизонтальная проверка 
            if ((A1.Text == A2.Text) && (A2.Text == A3.Text) && (!A1.Enabled))
                This_is_Winner = true;
            else if ((B1.Text == B2.Text) && (B2.Text == B3.Text) && (!B1.Enabled))
                This_is_Winner = true;
            else if ((C1.Text == C2.Text) && (C2.Text == C3.Text) && (!C1.Enabled))
                This_is_Winner = true;
            //////////////////////////////////////////////////////////////////// 
            // Вертикальная проверка 
            if ((A1.Text == B1.Text) && (B1.Text == C1.Text) && (!A1.Enabled))
                This_is_Winner = true;
            else if ((A2.Text == B2.Text) && (B2.Text == C2.Text) && (!A2.Enabled))
                This_is_Winner = true;
            else if ((A3.Text == B3.Text) && (B3.Text == C3.Text) && (!A3.Enabled))
                This_is_Winner = true;
            //////////////////////////////////////////////////////////////////// 
            // ДИАГОНАЛЬНАЯ проверка 
            if ((A1.Text == B2.Text) && (B2.Text == C3.Text) && (!A1.Enabled))
                This_is_Winner = true;
            else if ((A3.Text == B2.Text) && (B2.Text == C1.Text) && (!C1.Enabled))
                This_is_Winner = true;
            //////////////////////////////////////////////////////////////////// 
            if (This_is_Winner)
            {
                BlockedButtons();
 
                String _Win = "";
                if (_turn)
                    _Win = "Нолики";
                else
                    _Win = "Крестики";
                MessageBox.Show(_Win + " Победили!!!!", "УРА!!!!");
                Message.Text = " ";
            }//конец если 
            else
            {
                if (_Count == 9)
                {
                    This_is_Winner = true;
                    MessageBox.Show("Ничья((((", "Конец игры((((");
                    Message.Text = " ";
                }
 
            }
            return This_is_Winner;
        }//Конец метода Winner
Программу конечно можно и еще поулучшать, выглядит сыровато.
1
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 21
31.05.2016, 22:16  [ТС]
Людвиг Бодмер, Спасибо большое, что ещё можете посоветовать добавить в программу?
0
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
01.06.2016, 09:17
Ralex3, можно добавить табло счёта, где будет выводится сколько раз победили крестики, нолики и сколько ничей, а также при победе закрашивать цветом победную строку/столбец/диагональ (через свойство BackColor кнопки) или делать зачеркивание. Ну а если добавить режим игры с компьютером и продумать его логику, то будет вообще чудесно

Добавлено через 10 минут
Можно сделать выбор фона/скинов для программы.
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 21
01.06.2016, 09:36  [ТС]
Спасибо попробую, но я не очень понимаю как реализовать табло счёта
0
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
01.06.2016, 09:52
Ralex3, несколько Label на форму кинуть, завести счетчики в программе, которые будут увеличиваться на единицу после каждой победы какой-либо стороны, и после конца игры обновлять значения этих Label.
1
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 21
01.06.2016, 10:08  [ТС]
И ещё такой момент после добавления Label чтобы писал кто ходит появилась проблема что после победы и оставшихся клеток то почему-то клетки больше не блокируются как раньше.
Сможете подсказать в чём причина?
Перестал работать BlockedButtons()
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Kursovaya_po_PYAVY
{
    public partial class Form1 : Form
    {
        bool _turn = true;//true = Включить X ; false = Включить 0 
        int _Count = 0;//Счётчик 
 
 
        public Form1()
        {
            InitializeComponent();
           
 
        }
 
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    
        private void Messege()
        {
            if (!_turn)
            {
                Message.Text = "Ходят Нолики";
            }
            else
            {
                Message.Text = "Ходят Крестики";
            }
 
 
        }
        private void Button_Click(object sender, EventArgs e)
        {
            Button B = (Button)sender;
            if (_turn)
                B.Text = "X";
            else
                B.Text = "0";
            _turn = !_turn;
            B.Enabled = false;
            _Count++;
            if (!Winner()) Messege();
 
        }
        private bool Winner()
        {
 
            bool This_is_Winner = false;
            // Горизонтальная проверка 
            if ((A1.Text == A2.Text) && (A2.Text == A3.Text) && (!A1.Enabled))
                This_is_Winner = true;
            else if ((B1.Text == B2.Text) && (B2.Text == B3.Text) && (!B1.Enabled))
                This_is_Winner = true;
            else if ((C1.Text == C2.Text) && (C2.Text == C3.Text) && (!C1.Enabled))
                This_is_Winner = true;
            //////////////////////////////////////////////////////////////////// 
            // Вертикальная проверка 
            if ((A1.Text == B1.Text) && (B1.Text == C1.Text) && (!A1.Enabled))
                This_is_Winner = true;
            else if ((A2.Text == B2.Text) && (B2.Text == C2.Text) && (!A2.Enabled))
                This_is_Winner = true;
            else if ((A3.Text == B3.Text) && (B3.Text == C3.Text) && (!A3.Enabled))
                This_is_Winner = true;
            //////////////////////////////////////////////////////////////////// 
            // ДИАГОНАЛЬНАЯ проверка 
            if ((A1.Text == B2.Text) && (B2.Text == C3.Text) && (!A1.Enabled))
                This_is_Winner = true;
            else if ((A3.Text == B2.Text) && (B2.Text == C1.Text) && (!C1.Enabled))
                This_is_Winner = true;
            //////////////////////////////////////////////////////////////////// 
            if (This_is_Winner)
            {
                BlockedButtons();
 
                String _Win = "";
                if (_turn)
                    _Win = "Нолики";
                else
                    _Win = "Крестики";
                MessageBox.Show(_Win + " Победили!!!!", "УРА!!!!");
                Message.Text = " ";
            }//конец если 
            else
            {
                if (_Count == 9)
                {
                    This_is_Winner = true;
                    MessageBox.Show("Ничья((((", "Конец игры((((");
                    Message.Text = " ";
                }
 
            }
            return This_is_Winner;
        }//Конец метода Winner    
       
       private void BlockedButtons()//Блокирует возможность после победы и оставшихся свободных клеток ходить дальше
        {
            try
            {
                foreach (Control C in Controls)
                {
                    Button B = (Button)C;
                    B.Enabled = false;
                }//Конец foreach 
            }
            catch { }
        }
  
 
        private void новаяИграToolStripMenuItem_Click(object sender, EventArgs e)//При нажатии на кнопку новая игра, переменная состояния игры _turn получает истину, счетчик ходов обнуляется _count и все кнопки активируются, чтобы начать игру заново
        {
 
            _turn = true;
            _Count = 0;
            try
            {
                foreach (Control C in Controls)
                {
                    Button B = (Button)C;
                    B.Enabled = true;
                    B.Text = "";
                }//Конец foreach 
            }
            catch { }
          
 
        }
 
        private void message_Click(object sender, EventArgs e)
        {
 
        }//конец функции 
    }
}
0
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
01.06.2016, 10:17
Ralex3, попробуйте такой вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
      private void BlockedButtons()
        {
            foreach (Control c in Controls)
            {
                Button b = c as Button;
                if (b != null)
                {
                    b.Enabled = false;
                }
            }
        }
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 21
01.06.2016, 11:16  [ТС]
При таком коде вот что получается
блокируется кнопки после 1 хода
Миниатюры
При быстрой победе в игре крестики_нолики не выводилось после сообщения победителя, другие сообщения  
0
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 21
01.06.2016, 11:46  [ТС]
Всё разобрался спасибо большое
надо было просто BlockedButtons(); в другое место поставить

Добавлено через 11 минут
И ещё подскажите пожалуйста, при нажатии на новую игру ничего не происходит и ничего не зачищается
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void новаяИграToolStripMenuItem_Click(object sender, EventArgs e)
         {
 
             _turn = true;
             _Count = 0;
             try
             {
                 foreach (Control C in Controls)
                 {
                     Button B = (Button)C;
                     B.Enabled = true;
                     B.Text = "";
                 }//Конец foreach 
             }
             catch { }
             
 
         }
0
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
01.06.2016, 13:14
Ralex3,
C#
1
2
3
4
5
6
7
8
9
10
private void новаяИграToolStripMenuItem_Click(object sender, EventArgs e)
        {
            _turn = true;
            _Count = 0;
            foreach (Button b in Controls.OfType<Button>())
              {
                  b.Enabled = true;
                  b.Text = "";
              }
        }
1
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 21
02.06.2016, 15:31  [ТС]
Подскажите пожалуйста ещё
я сделал подсчёт ничьих, но он считает только 1 ничью а дальше в ступор
может что то не то наворотил?
C#
1
2
3
4
5
6
7
8
9
10
11
12
 private void Count_Winner()//Счётчик ничьих
        {
            bool This_is_Winner = true;
            int Count_Draw = 0;
 
            if (This_is_Winner == true)
            {
                Count_Draw++;
                Draw.Text = Convert.ToString(Count_Draw);
            }
           
        }
0
 Аватар для Людвиг Бодмер
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
02.06.2016, 22:40
Ralex3, я думаю в той же функции Winner() можно счетчики прибавлять:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
         if (This_is_Winner)
            {
                BlockedButtons();
 
                String _Win = "";
                if (_turn)
                    {
                      _Win = "Нолики";
                      Count_Zero++;
                    }
                else
                    {
                      _Win = "Крестики";
                      Count_Cross++;
                     }
                MessageBox.Show(_Win + " Победили!!!!", "УРА!!!!");
                Message.Text = " ";
            }//конец если 
            else
            {
                if (_Count == 9)
                {
                    This_is_Winner = true;
                    Count_Draw++;
                    MessageBox.Show("Ничья((((", "Конец игры((((");
                    Message.Text = " ";
                }
 
            }
1
0 / 0 / 0
Регистрация: 27.02.2015
Сообщений: 21
02.06.2016, 22:46  [ТС]
Всё работает спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.06.2016, 22:46
Помогаю со студенческими работами здесь

В файле mail.tpl не выводится заголовок сообщения {$subject} и текст сообщения {$message}
ребят помогите разобраться, изначально у меня все выводилось через функцию popupWindow вот сама функция JS function...

Пронумеровать очерёдность каждого сообщения так, чтобы нумерация очерёдности печаталась напротив сообщения
Покажите мне пожалуйста как можно пронумеровать очерёдность каждого сообщения так чтоб нумерация очерёдности печаталась напротив сообщения....

Личные сообщения | Все сообщения одному человеку | Сессии
Подскажите пожалуйста, у меня проблема. Пишу код личных сообщений, все хорошо, но я не могу понять как можно в сессию записать разные...

Считывание из файла в массив и разбор сообщения сообщения
День добрый. Никогда не парсил текс на чистом Си, но тут получил задачу и уже несколько дней не могу с ней справиться, хотя она по сути...

Реализовать хук на D3D9 (DirectX9), чтобы выводить сообщения в чужом окне (игре)
Здравствуйте уважаемые гуру дотНЕТа. Помогите плиз. Хочу реализовать хук на D3D9 (DirectX9), чтобы выводит сообщения в чужом окне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru