Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 29

Крестики-нолики с использованием массивов в режиме игрок-игрок

26.12.2015, 20:13. Показов 2409. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имею код, не получается написать код для игры игрок-игрок, игрок-компьютер работает прекрасно
помогите написать код, особенно обращение к другому игроку в строчке Sub Игрок_1(ByVal OKNO As Object)

VB.NET
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
Public Class Form1
    Dim Поле(3, 4) As Label
    Dim Ход As Short = 0
 
    Private Sub ИграСЧеловекомToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ИграСЧеловекомToolStripMenuItem.Click
        For j = 2 To 4
            For i = 1 To 3
                'создаем ячейки
                Поле(i, j) = New Label
                Me.Controls.Add(Поле(i, j))
                With Поле(i, j)
                    .TextAlign = ContentAlignment.MiddleCenter
                    .BorderStyle = BorderStyle.FixedSingle
                    .Width = 100
                    .Height = 100
                    .Left = (100 * i) - 100
                    .Top = (100 * j) - 100
                    .Text = ""
                    .Font = New Font("arial", 42)
                    .ForeColor = Color.Black
                    .BackColor = Color.White
                    AddHandler Поле(i, j).Click, AddressOf Клик_с_пк
                End With
            Next
        Next
 
    End Sub
 
    Sub Игрок_1(ByVal OKNO As Object)
        If OKNO.text = "" Then
            OKNO.text = "x"
            Ход = Ход + 1
            Игрок_2(OKNO)
            proverka()
        End If
    End Sub
 
    Sub Игрок_2(ByVal OKNO As Object)
        If OKNO.text = "" Then
            OKNO.text = "0"
            Ход = Ход + 1
            Игрок_1(OKNO)
            proverka()
        End If
    End Sub
 
    Private Sub ИграСКомпьютеромToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ИграСКомпьютеромToolStripMenuItem.Click
        For j = 2 To 4
            For i = 1 To 3
                'создаем ячейки
                Поле(i, j) = New Label
                Me.Controls.Add(Поле(i, j))
                With Поле(i, j)
                    .TextAlign = ContentAlignment.MiddleCenter
                    .BorderStyle = BorderStyle.FixedSingle
                    .Width = 100
                    .Height = 100
                    .Left = (100 * i) - 100
                    .Top = (100 * j) - 100
                    .Text = ""
                    .Font = New Font("arial", 42)
                    .ForeColor = Color.Black
                    .BackColor = Color.White
                    AddHandler Поле(i, j).Click, AddressOf Клик_с_пк
                End With
            Next
        Next
 
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
    End Sub
 
 
    ' процедура нажатия на ячейки при игре с компьютером
    Sub Клик_с_пк(ByVal OKNO As Object, ByVal E As EventArgs)
        If OKNO.text = "" Then
            OKNO.text = "x"
            Ход = Ход + 1
            comp_hod3()
            proverka()
        End If
    End Sub
 
    'процедура произвольного хода компьютера 
    'компьютер ставит нолик в случайно попавшейся пустой ячейке
    Sub comp_hod1()
        If Ход = 5 Then Exit Sub 'после пятого отключаем эту прцедуру так как ей некуда будет поставить нолик
        Dim p As Short
        Randomize()
        p = 8 * Rnd()
        If p = 0 And Поле(1, 2).Text = "" Then
            Поле(1, 2).Text = "0"
        ElseIf p = 2 And Поле(1, 3).Text = "" Then
            Поле(1, 3).Text = "0"
        ElseIf p = 2 And Поле(1, 4).Text = "" Then
            Поле(1, 4).Text = "0"
        ElseIf p = 3 And Поле(2, 2).Text = "" Then
            Поле(2, 2).Text = "0"
        ElseIf p = 4 And Поле(2, 3).Text = "" Then
            Поле(2, 3).Text = "0"
        ElseIf p = 5 And Поле(2, 4).Text = "" Then
            Поле(2, 4).Text = "0"
        ElseIf p = 6 And Поле(3, 2).Text = "" Then
            Поле(3, 2).Text = "0"
        ElseIf p = 7 And Поле(3, 3).Text = "" Then
            Поле(3, 3).Text = "0"
        ElseIf p = 8 And Поле(3, 4).Text = "" Then
            Поле(3, 4).Text = "0"
        Else
            comp_hod1() 'если же компьютер натыкаеться на занятую уже ячейку то процедура возрашаеться в начало и так до тех пор пока не найдет пустую ячейку
        End If
 
    End Sub
 
    'обдуманный ход компьютера
    ' в данной процедуре компьютер пытаеться помешать выйграть сопернику
    ' то есть препятсвует завершению третьего звена иксов по линии или диаганали заполняя третее звено ноликом
    Sub comp_hod2()
        If Поле(1, 2).Text = "x" And Поле(1, 3).Text = "x" And Поле(1, 4).Text = "" Then
            Поле(1, 4).Text = "0"
        ElseIf Поле(2, 2).Text = "x" And Поле(2, 3).Text = "x" And Поле(2, 4).Text = "" Then
            Поле(2, 4).Text = "0"
        ElseIf Поле(3, 2).Text = "x" And Поле(3, 3).Text = "x" And Поле(3, 4).Text = "" Then
            Поле(3, 3).Text = "0"
        ElseIf Поле(1, 3).Text = "x" And Поле(1, 4).Text = "x" And Поле(1, 2).Text = "" Then
            Поле(1, 2).Text = "0"
        ElseIf Поле(2, 3).Text = "x" And Поле(2, 4).Text = "x" And Поле(2, 2).Text = "" Then
            Поле(2, 2).Text = "0"
        ElseIf Поле(3, 3).Text = "x" And Поле(3, 4).Text = "x" And Поле(3, 2).Text = "" Then
            Поле(3, 2).Text = "0"
        ElseIf Поле(1, 2).Text = "x" And Поле(2, 2).Text = "x" And Поле(3, 2).Text = "" Then
            Поле(3, 2).Text = "0"
        ElseIf Поле(1, 3).Text = "x" And Поле(2, 3).Text = "x" And Поле(3, 3).Text = "" Then
            Поле(3, 3).Text = "0"
        ElseIf Поле(1, 4).Text = "x" And Поле(2, 4).Text = "x" And Поле(3, 4).Text = "" Then
            Поле(3, 4).Text = "0"
        ElseIf Поле(2, 2).Text = "x" And Поле(3, 2).Text = "x" And Поле(1, 2).Text = "" Then
            Поле(1, 2).Text = "0"
        ElseIf Поле(2, 3).Text = "x" And Поле(3, 3).Text = "x" And Поле(1, 3).Text = "" Then
            Поле(1, 3).Text = "0"
        ElseIf Поле(2, 4).Text = "x" And Поле(3, 4).Text = "x" And Поле(1, 4).Text = "" Then
            Поле(1, 4).Text = "0"
        ElseIf Поле(1, 2).Text = "x" And Поле(2, 3).Text = "x" And Поле(3, 4).Text = "" Then
            Поле(3, 4).Text = "0"
        ElseIf Поле(2, 3).Text = "x" And Поле(3, 4).Text = "x" And Поле(1, 2).Text = "" Then
            Поле(1, 2).Text = "0"
        ElseIf Поле(3, 2).Text = "x" And Поле(2, 3).Text = "x" And Поле(1, 4).Text = "" Then
            Поле(1, 4).Text = "0"
        ElseIf Поле(2, 3).Text = "x" And Поле(1, 4).Text = "x" And Поле(3, 2).Text = "" Then
            Поле(3, 2).Text = "0"
        ElseIf Поле(1, 2).Text = "x" And Поле(3, 2).Text = "x" And Поле(2, 2).Text = "" Then
            Поле(2, 2).Text = "0"
        ElseIf Поле(1, 3).Text = "x" And Поле(3, 3).Text = "x" And Поле(2, 3).Text = "" Then
            Поле(2, 3).Text = "0"
        ElseIf Поле(1, 4).Text = "x" And Поле(3, 4).Text = "x" And Поле(2, 4).Text = "" Then
            Поле(2, 4).Text = "0"
        ElseIf Поле(1, 2).Text = "x" And Поле(1, 4).Text = "x" And Поле(1, 3).Text = "" Then
            Поле(1, 3).Text = "0"
        ElseIf Поле(2, 2).Text = "x" And Поле(2, 4).Text = "x" And Поле(2, 3).Text = "" Then
            Поле(2, 3).Text = "0"
        ElseIf Поле(3, 2).Text = "x" And Поле(3, 4).Text = "x" And Поле(3, 3).Text = "" Then
            Поле(3, 3).Text = "0"
        ElseIf Поле(3, 2).Text = "x" And Поле(1, 4).Text = "x" And Поле(2, 3).Text = "" Then
            Поле(2, 3).Text = "0"
        ElseIf Поле(1, 2).Text = "x" And Поле(3, 4).Text = "x" And Поле(2, 3).Text = "" Then
            Поле(2, 3).Text = "0"
        Else
            comp_hod1() 'если ни одно из вышестояших условий компьютер не обнаруживает то переходит к первой процедуре
        End If
    End Sub
    'Обдуманный ход компьютера где компьютер пытаеться выйграть при первом поапвшемся случаи
    'т.е компьютер завершает линию нулей в ряду или по диогонали обнаружив две уже занятые нулями ячейки
    Sub comp_hod3()
        If Поле(1, 2).Text = "0" And Поле(1, 3).Text = "0" And Поле(1, 4).Text = "" Then
            Поле(1, 4).Text = "0"
        ElseIf Поле(2, 2).Text = "0" And Поле(2, 3).Text = "0" And Поле(2, 4).Text = "" Then
            Поле(2, 4).Text = "0"
        ElseIf Поле(3, 2).Text = "0" And Поле(3, 3).Text = "0" And Поле(3, 4).Text = "" Then
            Поле(3, 4).Text = "0"
        ElseIf Поле(1, 3).Text = "0" And Поле(1, 4).Text = "0" And Поле(1, 2).Text = "" Then
            Поле(1, 2).Text = "0"
        ElseIf Поле(2, 3).Text = "0" And Поле(2, 4).Text = "0" And Поле(2, 2).Text = "" Then
            Поле(2, 2).Text = "0"
        ElseIf Поле(3, 3).Text = "0" And Поле(3, 4).Text = "0" And Поле(3, 2).Text = "" Then
            Поле(3, 2).Text = "0"
        ElseIf Поле(1, 2).Text = "0" And Поле(2, 2).Text = "0" And Поле(3, 2).Text = "" Then
            Поле(3, 2).Text = "0"
        ElseIf Поле(1, 3).Text = "0" And Поле(2, 3).Text = "0" And Поле(3, 3).Text = "" Then
            Поле(3, 3).Text = "0"
        ElseIf Поле(1, 4).Text = "0" And Поле(2, 4).Text = "0" And Поле(3, 4).Text = "" Then
            Поле(3, 4).Text = "0"
        ElseIf Поле(2, 2).Text = "0" And Поле(3, 2).Text = "0" And Поле(1, 2).Text = "" Then
            Поле(1, 2).Text = "0"
        ElseIf Поле(2, 3).Text = "0" And Поле(3, 3).Text = "0" And Поле(1, 3).Text = "" Then
            Поле(1, 3).Text = "0"
        ElseIf Поле(2, 4).Text = "0" And Поле(3, 4).Text = "0" And Поле(1, 4).Text = "" Then
            Поле(1, 4).Text = "0"
        ElseIf Поле(1, 2).Text = "0" And Поле(2, 3).Text = "0" And Поле(3, 4).Text = "" Then
            Поле(3, 4).Text = "0"
        ElseIf Поле(2, 3).Text = "0" And Поле(3, 4).Text = "0" And Поле(1, 2).Text = "" Then
            Поле(1, 2).Text = "0"
        ElseIf Поле(3, 2).Text = "0" And Поле(2, 3).Text = "0" And Поле(1, 4).Text = "" Then
            Поле(1, 4).Text = "0"
        ElseIf Поле(2, 3).Text = "0" And Поле(1, 4).Text = "0" And Поле(3, 2).Text = "" Then
            Поле(3, 2).Text = "0"
        ElseIf Поле(1, 2).Text = "0" And Поле(3, 2).Text = "0" And Поле(2, 2).Text = "" Then
            Поле(2, 2).Text = "0"
        ElseIf Поле(1, 3).Text = "0" And Поле(3, 3).Text = "0" And Поле(2, 3).Text = "" Then
            Поле(2, 3).Text = "0"
        ElseIf Поле(1, 4).Text = "0" And Поле(3, 4).Text = "0" And Поле(2, 4).Text = "" Then
            Поле(2, 4).Text = "0"
        ElseIf Поле(1, 2).Text = "0" And Поле(1, 4).Text = "0" And Поле(1, 3).Text = "" Then
            Поле(1, 3).Text = "0"
        ElseIf Поле(2, 2).Text = "0" And Поле(2, 4).Text = "0" And Поле(2, 3).Text = "" Then
            Поле(2, 3).Text = "0"
        ElseIf Поле(3, 2).Text = "0" And Поле(3, 4).Text = "0" And Поле(3, 3).Text = "" Then
            Поле(3, 3).Text = "0"
        ElseIf Поле(3, 2).Text = "0" And Поле(1, 3).Text = "0" And Поле(2, 3).Text = "" Then
            Поле(2, 3).Text = "0"
        ElseIf Поле(1, 2).Text = "0" And Поле(3, 4).Text = "0" And Поле(2, 4).Text = "" Then
            Поле(2, 3).Text = "0"
        Else
            comp_hod2() 'если не обнаруживает не одного выше стояшего сочитания то переходит к второй процедуре
        End If
    End Sub
 
    Sub proverka()
        'процедура которая будет проверять кто выграл, кто проиграл
        If Поле(1, 2).Text = "x" And Поле(1, 3).Text = "x" And Поле(1, 4).Text = "x" Then
            Победа()
        ElseIf Поле(2, 2).Text = "x" And Поле(2, 3).Text = "x" And Поле(2, 4).Text = "x" Then
            Победа()
        ElseIf Поле(3, 2).Text = "x" And Поле(3, 3).Text = "x" And Поле(3, 4).Text = "x" Then
            Победа()
        ElseIf Поле(1, 2).Text = "x" And Поле(2, 2).Text = "x" And Поле(3, 2).Text = "x" Then
            Победа()
        ElseIf Поле(1, 3).Text = "x" And Поле(2, 3).Text = "x" And Поле(3, 3).Text = "x" Then
            Победа()
        ElseIf Поле(1, 4).Text = "x" And Поле(2, 4).Text = "x" And Поле(3, 4).Text = "x" Then
            Победа()
        ElseIf Поле(3, 2).Text = "x" And Поле(2, 3).Text = "x" And Поле(1, 4).Text = "x" Then
            Победа()
        ElseIf Поле(1, 2).Text = "x" And Поле(2, 3).Text = "x" And Поле(3, 4).Text = "x" Then
            Победа()
            '----------------------------------------------------------------------------------
        ElseIf Поле(1, 2).Text = "0" And Поле(1, 3).Text = "0" And Поле(1, 4).Text = "0" Then
            Поражение()
        ElseIf Поле(2, 2).Text = "0" And Поле(2, 3).Text = "0" And Поле(2, 4).Text = "0" Then
            Поражение()
        ElseIf Поле(3, 2).Text = "0" And Поле(3, 3).Text = "0" And Поле(3, 4).Text = "0" Then
            Поражение()
        ElseIf Поле(1, 2).Text = "0" And Поле(2, 2).Text = "0" And Поле(3, 2).Text = "0" Then
            Поражение()
        ElseIf Поле(1, 3).Text = "0" And Поле(2, 3).Text = "0" And Поле(3, 3).Text = "0" Then
            Поражение()
        ElseIf Поле(1, 4).Text = "0" And Поле(2, 4).Text = "0" And Поле(3, 4).Text = "0" Then
            Поражение()
        ElseIf Поле(3, 2).Text = "0" And Поле(2, 3).Text = "0" And Поле(1, 4).Text = "0" Then
            Поражение()
        ElseIf Поле(1, 2).Text = "0" And Поле(2, 3).Text = "0" And Поле(3, 4).Text = "0" Then
            Поражение()
        Else
            If Ход = 5 Then Ничья()
        End If
    End Sub
    ' очистка поля
    Sub Очистка()
        For j = 2 To 4
            For i = 1 To 3
                Поле(i, j).Text = ""
            Next
        Next
        Ход = 0
    End Sub
    ' сообшение о ничье
    Sub Ничья()
        MsgBox("Ничья!")
        If MsgBoxResult.Yes Then
            For j = 2 To 4
                For i = 1 To 3
                    Поле(i, j).Text = ""
                Next
            Next
            Ход = 0
        End If
    End Sub
    ' сообшение о выигрыше
    Sub Победа()
        MsgBox("Вы выйграли!")
        If MsgBoxResult.Yes Then
            For j = 2 To 4
                For i = 1 To 3
                    Поле(i, j).Text = ""
                Next
            Next
            Ход = 0
        End If
        Очистка()
    End Sub
    ' сообшение о проигрише
    Sub Поражение()
        MsgBox("Вы проиграли!")
        If MsgBoxResult.Yes Then
            For j = 2 To 4
                For i = 1 To 3
                    Поле(i, j).Text = ""
                Next
            Next
            Ход = 0
        End If
    End Sub
 
 
End Class
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.12.2015, 20:13
Ответы с готовыми решениями:

Крестики-нолики игрок против игрока, поле 5х5
В общем, нужно сделать программу "Крестики-Нолики", в режиме Игрок против Игрока, с поле 5х5, через Button. Помогите.

Какое количество информации при игре в крестики-нолики на поле размером 4х4 клетки получит второй игрок после первого хода первого игрока?
Какое количество информации при игре в крестики-нолики на поле размером 4х4 клетки получит второй игрок после первого хода первого игрока?

Какие числа может объявить игрок A на начальном шаге, чтобы игрок B в некоторый момент объявил число 00.
Игрок A объявляет двузначное число от 01 до 99. Игрок B меняет местами его цифры и прибавляет полученное число к сумме его цифр. Полученный...

20
0 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 29
30.12.2015, 12:40  [ТС]
Студворк — интернет-сервис помощи студентам
SoftIce, ну я и кривой....спасибо еще раз вам)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.12.2015, 12:40

Первый игрок делает ход в "дурака" - определить, сможет ли второй игрок побить эту карту
Заданы достоинства и масти шести шести карт первого игрока, достоинства и масти шести карт второго игрока, кроме того, известна козырная...

Игрок А объявляет двузначное число от 01 до 99. Игрок В меняет местами его цифры и прибавляет полученное число
Игрок А объявляет двузначное число от 01 до 99. Игрок В меняет местами его цифры и прибавляет полученное число к сумме его цифр. Полученный...

Какие числа может объявить первый игрок на начальном шаге, чтобы второй игрок в некоторый момент объявил число 00?
. Игрок А объявляет двузначное число от 01 до 99. Игрок В меняет местами его цифры и прибавляет полученное число к сумме его цифр....

Игра "Пятнашки" в режиме игрок-компьютер
Итак,проблема такова: при игре в режиме игрок-компьютер,компьютер делает максимум 3 хода,либо сдвигает один столбик вниз,либо сдвигает...

Крестики-нолики в графическом режиме
Крестики-нолики. Описание: Игра осуществляется по стандартным правилам для поля 3х3. Предусмотреть режимы игры для двух игроков и для...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru