Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
dimas0696
0 / 0 / 0
Регистрация: 22.01.2015
Сообщений: 23
1

Игра крестики-нолики не запускается

03.04.2015, 09:49. Просмотров 298. Ответов 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
#include<stdio.h>
#include <stdlib.h>
 
charlevel[3][3]; /* игровое поле крестиков-ноликов */
 
char check();
voidinit_matrix();
voidget_player_move();
voidget_computer_move();
voiddisp_matrix();
intminmax(char playertomove, int *bestchoice_i, int *bestchoice_j);
 
int main() {
printf("You will be playing against the computer.\n"
            "Pervaiakoordinatanomerstrochkivtoraiastolbcha\n");
 
char done;
init_matrix();
 
do {
disp_matrix();
get_player_move();
done = check();
if (done != ' ') break;
get_computer_move();
done = check();
    } while (done == ' ');
 
if (done == 'X')
printf("You won!\n");
else if (done == 'O')
printf("I won!!!!\n");
else
printf("draw\n");
disp_matrix();
    scanf("%*c%c", &done);
return 0;
}
 
/* Иницализация игрового поля. Заполняется пробелами */
voidinit_matrix() {
inti, j;
 
for (i = 0; i< 3; i++)
for (j = 0; j < 3; j++)
level[i][j] = ' ';
}
 
/* Проверяет, есть ли на данном шаге победитель */
char check() {
inti, j;
 
for (i = 0; i< 3; i++) /* проверяем строки */
if (level[i][0] == level[i][1] &&
level[i][0] == level[i][2]) return level[i][0];
 
for (i = 0; i< 3; i++) /* проверяем столбцы */
if (level[0][i] == level[1][i] &&
level[0][i] == level[2][i]) return level[0][i];
 
    /* проверяем диагонали */
if (level[0][0] == level[1][1] &&
level[1][1] == level[2][2])
return level[0][0];
 
if (level[0][2] == level[1][1] &&
level[1][1] == level[2][0])
return level[0][2];
 
for (i = 0; i< 3; i++)
for (j = 0; j < 3; j++)
if (level[i][j] == ' ')
return ' ';
 
return '-'; //ничья
}
 
/* Запрашивает очередной ход у игрока в виде двух чисел */
voidget_player_move() {
int x, y;
while (1) {
printf("Enter X,Y coordinates for your move: ");
scanf("%d%*c%d", &x, &y);
 
x--;
y--;
 
if (x > 2 || x < 0 || y > 2 || y < 0 || level[x][y] != ' ') {
printf("Invalid move, try again.\n");
continue;
        }
break;
    }
 
level[x][y] = 'X';
}
 
/* Ходкомпьютера */
voidget_computer_move() {
inti, j;
minmax('O', &i, &j);
level[i][j] = 'O';
}
 
 
//Возвращает оценку для заданных координат
intconsidermove(char playertomove, inti, int j) {
if (level[i][j] == ' ') {
level[i][j] = playertomove; //пробуем ходить
intmovevalue;
charw = check();
if (w == 'O') //Если выиграли, то возвращаем единицу
movevalue = 1;
else if (w == 'X')
movevalue = -1; //Проиграли = -1
else if (w == '-')
movevalue = 0; //Если ничья то нолик
else{ //Победителя на данном шаге нет, ходим теперь за нашего противника           
charnextPlayer = (playertomove == 'X' ? 'O' : 'X');
intbestchoice_i, bestchoice_j;
movevalue = minmax(nextPlayer, &bestchoice_i, &bestchoice_j);
}
level[i][j] = ' '; //очищаем испорченную ячейку
returnmovevalue;
    }
 
returnplayertomove == 'X' ? 2 : -2;
}
 
//Функция, которая ищет лучший ход
intminmax(char playertomove, int *bestchoice_i, int *bestchoice_j) {
intbestmovevalue = (playertomove == 'O' ? -2 : 2); //Лучшая оценка на данном этапе
inti, j;
 
for (i = 0; i< 3; i++) {
for (j = 0; j < 3; j++) {
 
inttempmovevalue = considermove(playertomove, i, j); //Если нашли оценку лучше - меняем
if ((tempmovevalue>bestmovevalue&&playertomove == 'O') ||
                (tempmovevalue<bestmovevalue&&playertomove == 'X')) {
bestmovevalue = tempmovevalue;
                *bestchoice_i = i;
                *bestchoice_j = j;
            }
        }
    }
returnbestmovevalue;
}
 
/* Вывод игрового поля на экран */
voiddisp_matrix() {
int t;
 
for (t = 0; t < 3; t++) {
printf(" %c | %c | %c ", level[t][0],
level[t][1], level [t][2]);
if (t != 2) printf("\n---|---|---\n");
}
printf("\n");
}
Если есть какие либо ошибки или недочёты,помогите исправить пожалуйста!Буду премного благодарен!
Пишу на eclipse-spp-luna-sr1
Коомпилятор MinGW
Язык C
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2015, 09:49
Ответы с готовыми решениями:

Игра Крестики-нолики - найти ошибки в коде
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define SPACE ' ' char matrix = { /* матрица для...

Игра крестики-нолики - пояснить фрагмент программы
Можете объяснить, что происходит в этом фрагменте программы: if...

Игра "Крестики-Нолики" - вдохнуть немного интеллекта в противника-компьютер
Есть исходный код программа запускается работает но все время выигрывает игрок подскажите что нужно...

Функции в Си. Игра "крестики-нолики"
Помогите пожалуйста разобраться с назначениями функций, т.е. для чего они: if (isdigit(*k) &amp;&amp; a)...

Игра в крестики-нолики с "умным" компьютером
Скиньте или подскажите как написать код для игры с компьютером в крестики-нолики и это должен быть...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2015, 09:49

Сыграем в крестики-нолики?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { char r; int t1, t2; int c1; int...

Нечестные крестики-нолики
Суть в том, что при игре всё время ходят или &quot;нолики&quot; или &quot;крестики&quot;. Хотя в ходе &quot;разработки&quot; всё...

Крестики-нолики: критика кода
В качестве практики, написал консольные крестики-нолики. Хотелось бы услышать мнение опытных людей....


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru