Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 11

Надоевшие "Крестики-нолики". Случайный ответ компьютера

12.12.2015, 17:54. Показов 2140. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер всем. пишу заурядные "крестики-нолики" идея состоит в том, чтобы менять "пустые" картинки на картинку с ноликом(игрок) или крестиком(сразу ответ компьютера). обозначены классы, для того, чтобы понять занята ячейка или нет.
cx - занято игроком
cy - занято компьютером
Попробовала написать рандом заполнения, не получилось, пришла к вам. Объясните пожалуйста как это можно реализовать. Спасибо
Вложения
Тип файла: rar крестики-нолики.rar (17.8 Кб, 6 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2015, 17:54
Ответы с готовыми решениями:

Крестики-нолики. Ход компьютера
Необходимо, чтобы компьютер не просто ходил рандомными числами, но мешал выиграть игроку и пытался выиграть сам. Заранее спасибо)

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

крестики нолики против компьютера
Всем привет! Пишу крестики нолики в консольном режиме, пытаюсь сделать так, чтобы можно было играть против компа. Вот код #include...

6
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
12.12.2015, 18:07
Цитата Сообщение от Ghostfox Посмотреть сообщение
Попробовала написать рандом заполнения, не получилось, пришла к вам. Объясните пожалуйста как это можно реализовать. Спасибо
делаешь двухмерный массив, потом рендеришь его.
0
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 11
12.12.2015, 18:17  [ТС]
У кого ещё какие идеи?

Добавлено через 1 минуту
Необходимо сохранить задумку с подменой картинок, а не создавать массив.
Хочется решить именно эту проблему, а не писать новый код (
0
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
12.12.2015, 18:34
Цитата Сообщение от Ghostfox Посмотреть сообщение
Необходимо сохранить задумку с подменой картинок, а не создавать массив.
картинки это и есть рендеринг то есть визуализация, а весь механизм таких игр устроен на 2-dimensional arrays. В самом простом случае:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var XOField = [
    [1, 3, 3, 0],
    [3, 1, 0, 3],
    [3, 0, 1, 3],
    [0, 3, 3, 1]
];
 
for (var i = 0; i < XOField.length; i++) {
    for (var j = 0; j < XOField[i].length; j++) {
        switch (XOField[i][j]) {
        case 0: /* рисуем ноль */ break;
        case 1: /* рисуем крест */ break;
        case 3: /* рисуем пустую клетку */ break;
        }
    }
}
1
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
12.12.2015, 18:38
вариант: перед каждым "ходом" пробегаетесь циклом по всем ячейкам, если ячейка не занята, добавляете её в рабочий массив, по окончании цикла рабочий массив рандомно сортируете, затем берёте первый элемент массива и помещаете туда то, что нужно -- крестик или нолик

пример
HTML5
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
<style>
th {width: 25px; height: 25px}
</style>
 
<script>
var Step = 1; // первый ход делает компьютер (у него крестики)
function myFunc (btn)
{
var ths = document.getElementById ('fld').getElementsByTagName ('th');
for (var arr = [], j = 0, J = ths.length; j < J; j++)
if (!ths [j].className) arr.unshift (ths [j]);
arr.sort (new Function ('x, y', 'return Math.random () > .5'));
arr [0].className = 'c' + Step ? 'y' : 'x';
arr [0].innerHTML = + Step ? 'X' : '0';
Step = !Step;
btn.disabled = (arr.length == 1)
}
</script>
 
<body>
<table id="fld" cellpadding="5" cellspacing="0" border>
<tr><th>&nbsp;</th><th>&nbsp;</th><th>&nbsp;</th></tr>
<tr><th>&nbsp;</th><th>&nbsp;</th><th>&nbsp;</th></tr>
<tr><th>&nbsp;</th><th>&nbsp;</th><th>&nbsp;</th></tr>
</table>
 
<p><input type="button" value="сделать ход!" onclick="myFunc (this)">
</body>
1
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 11
13.12.2015, 14:55  [ТС]
Спасибо всем за потраченное на ответы время
Теперь буду знать как это представляют себе другие
Но а свою идею я всё же довела до конца, правда есть маленькие косяки с нажатием вне поля. Но это уж второстепенная задача)
0
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
13.12.2015, 15:27
Ghostfox, мне не доводилось писать крестики-нолики, поэтому набросал небольшой пример в т.ч. и для себя
http://jsfiddle.net/jk30q914/
Весь функционал, кроме логирования и загрузки картинок, умещается в 10 строк
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2015, 15:27
Помогаю со студенческими работами здесь

Крестики-Нолики. Ход компьютера
Если у кого-то вдруг осталась реализация ходов компьютера для игры крестики-нолики, буду ПРЕМНОГО БЛАГОДАРЕН, если поделитесь. Я почитал...

Крестики нолики ( логика компьютера )
Нужно доработать игру Крестики=Нолики А именно. Что-бы &quot;О&quot; ставил комп, а не юзер. Как реализовать это и логику компа еще не придумал....

Крестики-нолики рандомный ход компьютера
Помогите разобраться с функций хода компьютера К(). использую рандом, но при выполнении программы ход компьютера может состоять из...

Крестики нолики 3x3 против компьютера
Смотрел похожие темы, но там все слишком мудрено, у меня задание написать простенький код крестиков-ноликов 3x3 пользователь играет...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru