Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 26.06.2020
Сообщений: 1
1

Проблема с игрой 2048 на с++

27.06.2020, 15:48. Просмотров 1202. Ответов 0
Метки c++ (Все метки)

Все супер было до момента, пока не начала редактировать передвижение "двойки" по вертикали и горизонтали.
Оно должно быть как в игре, а всегда когда переходит за границу, перемещается на строчку выше.
И я вообще не понимаю как сделать там, чтобы числа за границу поля не вылезали

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
#include <iostream>
#include <ctime>   
#include <cstdlib> //sila randoma na doske
 
using namespace std;
 
int Board[4][4]; // размер поля
int dirLine[]  = {1, 0, -1, 0};
int dirColon[] = {0, 1, 0, -1};
 
 
pair <int, int> GenerateUnoccupiedPosition()
{
    int occup = 1, line, colon;
    while (occup)
    {
        line = rand() % 4;      //рандомные х и у
        colon = rand() % 4;
        if (Board[line][colon] == 0)
            occup = 0;
    }
    return make_pair(line, colon);
}
void addPiece() 
{
    pair <int, int>pos = GenerateUnoccupiedPosition();
    Board[pos.first][pos.second] = 2;
 
 }
void newGame()
{
    for (int i = 0; i < 4; i++)
        for (int j = 0; j < 4; j++)
            Board[i][j] = 0;
    addPiece();
}
 
 void printUI()
 {
     system("cls");
         for (int i = 0; i < 4; ++i)
     {
         for (int j = 0; j < 4; ++j)
             if (Board[i][j] == 0)
                 cout << ".";
             else cout << Board[i][j];
            cout << "\n";
     }
         cout << "n - new game, w - up, s - down, a - left, d - right, e - exit \n";
 }
 
 bool canDoMove(int line, int  colon, int nextLine, int NextColon)                            //cледующее значение внутри поля
 {
     if (nextLine <= 0 || NextColon <= 0 || nextLine >= 4 || NextColon >= 4 || 
         (Board[line][colon] != Board[nextLine][NextColon] && Board[nextLine][NextColon] !=0 ))  //если выходит за гранцы, мы не можем двигать фигуру
         return false;
      return true;
 }
 
 void applyMove(int direction)                  //двигаться могут стэки , которые находятся не на одной линии
 {
     int startLine = 0, startColon = 0, lineStep = 1, colonStep = 1;
     if (direction == 0)
     {
         startLine = 3;
         lineStep = -1;
 
     }
     if (direction == 1)
     {  
         startColon = 3;
         colonStep = -1;
     }
     int movePossible = 0;
         for (int i = startLine;  i >= 0 && i<4; i += lineStep)
         for (int j = startColon; j >= 0 && j<4; j += colonStep)
         {
             int nextI = i + dirLine[direction], nextJ = j + dirColon[direction];
            
            if  (canDoMove( i, j, nextI, nextJ ));  
            {
                Board[nextI][nextJ] += Board[i][j];
                Board[i][j] = 0;
                movePossible = 1;
            }
         }
    /* if (movePossible)
         addPiece();*/
 } 
 
 
int main()
{
    srand(time(0));
    char commandToDir[128];
        commandToDir['s'] = 0; //
        commandToDir['d'] = 1; 
        commandToDir['w'] = 2;
        commandToDir['a'] = 3;
        newGame();
    while (true)
    {
        printUI();
        char command; 
        cin >> command;
        if (command == 'n') newGame();
        else if (command == 'e') break;
        else 
        {
            int CurrentDirection = commandToDir[command];
            cout << CurrentDirection << "\n";
            applyMove(CurrentDirection);
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2020, 15:48
Ответы с готовыми решениями:

Управление игрой 2048
Есть игра &quot;2048&quot;, я дошел до 65 тысяч) Теоретически возможно до 130 тысяч, но я удалил ссылку и...

Проблема с игрой
Крч, у меня есть такая игра: Honkai Impact 3rd У меня есть ноут и на нем игра работает, но я хочу...

Проблема с игрой
Здравствуйте, есть игра пятнашки и в ней есть кнопка отмены хода, но, чтобы она сработала в первый...

Проблема с игрой змейка (не сложная)
Проблема состоит в том, что тело змейки (Tail) поворачиваеться не совсем правильно. Если вы...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2020, 15:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

У меня проблема с прокси и игрой Minecraft.
У меня проблема с прокси и игрой Minecraft. Дело в том, что весь интернет настроен через D-link...

Heroes 3: проблема с сетевой игрой по протоколу TCP/IP
Скачал сборку. Поставил, локальная сеть настроена, то есть пинг есть и компы видят друг друга(...

Проблема с игрой "Змейка". Ошибка: list index out of range
Доброго времени суток! Пытаюсь создать змейку на python с выводом в консоль. Вот код: import time...

Проблема с игрой "Арканоид"
Добрый день. сделал игру арканоид. не получается реализовать мячик, что когда он стучит не по shap...

2048
Однажды поросенок Пётр сел играть в известную компьютерную игру 2048 на поле 4x4. И решил как можно...

E. 2048
Дано положение игры 2048: на поле 4x4 в некоторых клетках стоят значения, являющиеся степенями...


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

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

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