Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 01.11.2017
Сообщений: 22

Логика перемещения ходов в пятнашках

20.12.2017, 08:16. Показов 1329. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
#include<iostream>
#include<ctime>
#include<conio.h>
#include<Windows.h>
#include<iomanip>
using namespace std;
enum movement{
    UP = 72,
    DOWN = 80, 
    RIGHT = 77 , 
    LEFT = 75
};
 
int zero_i = 3;
int zero_j = 3;
 
void my_set_cursor(int x, int y) {
    HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD coord = {};
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(h, coord);
}
void print_field(int arr[][4], int const ROW, int const COL) {
 
    system("cls");
    int x = 1;
    int y = 1;
    int temp_y = 1;
    int i = 0;
    int j = 0;
 
    for (size_t i = 0; i < ROW; ++i)
    {
        for (size_t j = 0; j < COL; ++j)
        {
            my_set_cursor(x, y);
            cout << (char)(201) << (char)(205) << (char)(205) << (char)(205) << (char)(187);
            ++y;
            my_set_cursor(x, y);
            if (arr[i][j] == 0) {
                cout << (char)(186) << setw(2) << " " << setw(2) << (char)(186);
            }
            else
            {
                cout << (char)(186) << setw(2) << arr[i][j] << setw(2) << (char)(186);
            }
            ++y;
            my_set_cursor(x, y);
            cout << (char)(200) << (char)(205) << (char)(205) << (char)(205) << (char)(188);
            x += 5;
            y = temp_y;
        }
        temp_y += 3;
        y = temp_y;
        x = 1;
 
    }
 
}
bool is_simple(int number) {
    for (size_t i = 2; i < number / 2; ++i)
    {
        if (number / i == 0)
        {
            return false;
        }
    }
    return true;
}
void randomize(int arr[][4],int const ROW,int const COL){
     zero_i = 3;
     zero_j = 3;
    int move = movement::UP;
    for (size_t i = 0; i < 10000; i++)
    {
        switch (rand() % 4)
        {
        case 0 : 
            move = movement::UP;
            break;
        case 1:
            move = movement::DOWN;
            break;
        case 2:
            move = movement::LEFT;
            break;
        case 3:
            move = movement::RIGHT;
            break;
        }
 
        if (move == movement::UP && zero_i>0) {
            swap(arr[zero_i][zero_j], arr[zero_i - 1][zero_j]);
            --zero_i;
        }
        else if (move == movement::LEFT && zero_j> 0)
        {
            swap(arr[zero_i][zero_j], arr[zero_i][zero_j - 1]);
            --zero_j;
        }
        else if (move == movement::DOWN && zero_i < ROW - 1)
        {
            swap(arr[zero_i][zero_j], arr[zero_i + 1][zero_j]);
            ++zero_i;
        }
        else if (move == movement::RIGHT && zero_j < COL - 1)
        {
            swap(arr[zero_i][zero_j], arr[zero_i][zero_j + 1]);
            ++zero_j;
        }
 
    }
 
 
}
int main(void)
{
    const int ROW = 4;
    const int COL = 4;
    int arr[ROW][COL] = { 1,2,3,4,
                          5,6,7,8,
                          9,10,11,12,
                          13,14,15,0};
 
        print_field(arr, ROW, COL);
        randomize(arr, ROW, COL);
 
    print_field(arr, ROW, COL);
    
}
Помогите написать логику предлагайте что-то связанное с данным кодом
Буду благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2017, 08:16
Ответы с готовыми решениями:

Отмена хода в пятнашках
//Program.cs using System; namespace Pyatnyasky { class Program { static void Main(string args) { ...

Шифрование методом Цезаря/простого перемещения/двойного перемещения/простой замены
Всем привет, так случилось что мне задали за пару дней сделать программу шифрования и дешифрования инф. На Делфи время ни очень мало, + на...

В списке сделать команды перемещения элемента вверх и вниз по списку (две кнопки для перемещения в ListBox)
Помогите плз с прогой. Задание: в списке сделать команды перемещения элемента вверх и вниз по списку(две кнопки для перемещения в...

7
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
20.12.2017, 08:48
логику чего? решения пятнашек?
0
0 / 0 / 0
Регистрация: 01.11.2017
Сообщений: 22
20.12.2017, 08:49  [ТС]
Перемещение ходов
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
20.12.2017, 09:26
а в коде разве её нету? это как бэээ и есть рандомное перемещение ходов
0
0 / 0 / 0
Регистрация: 01.11.2017
Сообщений: 22
20.12.2017, 09:28  [ТС]
Мне нужен код,с помощью которого пользователь мог бы управлять клавишами и выводить,когда он победит
0
0 / 0 / 0
Регистрация: 01.11.2017
Сообщений: 22
20.12.2017, 09:47  [ТС]
Дополните данный код управлением
И когда будут собраны все элементы вывести,что вы победитель
0
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,260
20.12.2017, 10:36
В пятнашках нет никакой логики. Там только графика. Человек играет, комп отображает на экране.

Проверка на победу: у меня есть массив 4х4, в котором записаны числа от 0 (пустое поле) до 15 - соответствующие расстановке на экране. Проверяю в цикле, если в ячейке 0х0 - 1, 0х1 - 2 и так далее до 15 - значит пятнашки собраны. ИМХО не такая уж сложная задача, что-бы не придумать решение самому.
0
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,749
21.12.2017, 08:31
логика там
Пятнашки почти работают правильно
а конец игры когда массив выглядит так
C++
1
2
3
4
    int arr[ROW][COL] = { 1,2,3,4,
                          5,6,7,8,
                          9,10,11,12,
                          13,14,15,0};
надеюсь это проверить сможешь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2017, 08:31
Помогаю со студенческими работами здесь

Сделать кнопку невидимой в "пятнашках"
Можно ли кнопку &quot;0&quot; скрыть так, чтобы смысл не потерялся? Код игры работает import java.awt.BorderLayout; import...

Граф ходов ферзя
Всем привет! Задали найти количество рёбер графа ходов ферзя для доски n на n. Решил представить как сумму рёбер ладейного и графа ходов...

Обозначение ходов ферзя
Здравствуйте,подкиньте плиз способ как обозначить звездочкой в символьном массиве 8на8 ходы ферзя(при заданных координатах v- по...

Генератор шахматных ходов
Во время праздников набросал генератор ходов на делфи. Использовал bitboard. Алгоритм полностью мой. На мой взгляд получилось...

Запись ходов в шахматах
Помогите пожалуйста сделать запись ходов фигур в listBox var processes = Process.GetProcesses(); foreach (var a in...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru