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

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

12.12.2015, 17:54. Показов 2109. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
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% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru