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

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

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

Author24 — интернет-сервис помощи студентам
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2017, 08:16
Ответы с готовыми решениями:

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

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

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

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

7
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,488
Записей в блоге: 1
20.12.2017, 08:48 2
логику чего? решения пятнашек?
0
0 / 0 / 0
Регистрация: 01.11.2017
Сообщений: 22
20.12.2017, 08:49  [ТС] 3
Перемещение ходов
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,488
Записей в блоге: 1
20.12.2017, 09:26 4
а в коде разве её нету? это как бэээ и есть рандомное перемещение ходов
0
0 / 0 / 0
Регистрация: 01.11.2017
Сообщений: 22
20.12.2017, 09:28  [ТС] 5
Мне нужен код,с помощью которого пользователь мог бы управлять клавишами и выводить,когда он победит
0
0 / 0 / 0
Регистрация: 01.11.2017
Сообщений: 22
20.12.2017, 09:47  [ТС] 6
Дополните данный код управлением
И когда будут собраны все элементы вывести,что вы победитель
0
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,965
20.12.2017, 10:36 7
В пятнашках нет никакой логики. Там только графика. Человек играет, комп отображает на экране.

Проверка на победу: у меня есть массив 4х4, в котором записаны числа от 0 (пустое поле) до 15 - соответствующие расстановке на экране. Проверяю в цикле, если в ячейке 0х0 - 1, 0х1 - 2 и так далее до 15 - значит пятнашки собраны. ИМХО не такая уж сложная задача, что-бы не придумать решение самому.
0
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
21.12.2017, 08:31 8
логика там
Пятнашки почти работают правильно
а конец игры когда массив выглядит так
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
21.12.2017, 08:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2017, 08:31
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru