1 / 1 / 0
Регистрация: 18.12.2013
Сообщений: 61
1

Код игры "2048" на Java, часть кода не понятна

23.11.2014, 09:31. Показов 7743. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Java
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
if (!Arrays.deepEquals(before, board)) {
                ArrayList<int[]> a = new ArrayList<int[]>();
                for (int i = 0; i < 4; i++) {
                    for (int j = 0; j < 4; j++) {
                        if (board[i][j] == 0) {
                            int[] coords = {i, j};
                            a.add(coords);
                        }
                    }
                }
                Collections.shuffle(a);
                int random = (int) (Math.random() * 10);
                if (random < 2) board[a.get(0)[0]][a.get(0)[1]] = 4;
                else board[a.get(0)[0]][a.get(0)[1]] = 2;
            }
        }
        else if (n == KeyEvent.VK_UP) {
            rotateCCW();
            updateBoard(KeyEvent.VK_LEFT, real);
            rotateCW();
        }
        else if (n == KeyEvent.VK_RIGHT) {
            rotateCCW();
            rotateCCW();
            updateBoard(KeyEvent.VK_LEFT, real);
            rotateCW();
            rotateCW();
        }
        else if (n == KeyEvent.VK_DOWN) {
            rotateCW();
            updateBoard(KeyEvent.VK_LEFT, real);
            rotateCCW();
        }
    }
    private void pushLeft() {
        //move tiles with values as far left as possible
        for (int i = 0; i < 4; i++) {
            int[] row = new int[4];
            for (int j = 0; j < 4; j++) {
                if (board[i][j] != 0) {
                    int curr = 0;
                    while(row[curr] != 0) {
                        curr++;
                    }
                    row[curr] = board[i][j];
                }
            }
            board[i] = row;
        }
    }
    private void rotateCW() {
        int[][] rotated = new int[4][4];
        for (int r = 0; r < 4; r++) {
            for (int c = 0; c < 4; c++) {
                rotated[c][3-r] = board[r][c];
            }
        }
        board = rotated;
    }
    private void rotateCCW() {
            int[][] rotated = new int[4][4];
            for (int r = 0; r < 4; r++) {
                    for (int c = 0; c < 4; c++) {
                            rotated[3-c][r] = board[r][c];
                    }
            }
            board = rotated;
    }
Если функция pushLeft все влево перемещает, то что делают функции rotateCW (повернуть по часовой стрелки) и rotateCWW(против часовой стрелки), и как они заменяют действие pushRight, pushDown и pushUp? Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2014, 09:31
Ответы с готовыми решениями:

Не понятна часть кода
Здравствуйте. Зашел на сайт codewars и попалась вот такая задача: Create a function with two...

Перевод кода игры 2048 с С# на С++
Есть код на с#, помогите перевести на с++ пожалуйста using System; using...

Не понятна часть программы
Я еще учусь,поэтому прошу отнестись с пониманием. Увидела на форуме код, не поняла часть где ...

Есть такой код для игры 2048 на C++ в консоли, но после компиляции, после введения имени игрока все крашится, в чем беда
#include &lt;stdio.h&gt; #include &lt;locale.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt;...

1
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 64
08.12.2014, 03:41 2
bekabot, эти функции(rotate) поворачивают массив двумерный по и против часовой на 90 градусов.(как матрицы в математике, которые как раз и являются двумерными массивами в программирование).
соответственно чтобы сдвинуть все вверх, нужно повернуть на 90 градусов по часовой, сдвинуть все, и вернуть обратно на 90 градусов против часовой.
с остальными направлениями все аналогично.
1
08.12.2014, 03:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2014, 03:41
Помогаю со студенческими работами здесь

Двумерный массив вторая часть вообще не понятна
Двумерный массив вторая часть вообще не понятна, 16 вариант

Есть код на Java- нужна реализация кода Python на основе кода
Посоветуйте какой-то софт или же напишите мне кто шарит в пайтоне для помощи реализации

Игры аналог 2048
Добрый день. разбираю игру 2048. Нашел готовую но не могу уменьшить размер выскакивающих цифр. плиз...

Симуляция игры 2048
Ошибка во втором цикле функции RemoveToRight, почему-то не суммирует как написано, спасибо...

Создание игры 2048
Рябят, дали задание написать игру 2047 на C. Плиз напишите код

Можно ли в java каким либо образом передать часть кода другому методу?
Распишу проблему мне нужно решить САЛУ, в которой коэффициенты при переменных - это определённый...

Своя версия игры 2048
Витя решил создать свою версию игры 2048. Оригинальная игра на таблице оказалась слишком сложной,...


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

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

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