Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
4 / 4 / 1
Регистрация: 03.02.2017
Сообщений: 29

Игра Balls и алгоритмы удаления шаров и поворот фигурки

18.04.2017, 13:27. Показов 1706. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Нужна помощь в составлении 2 алгоритмов.
1 - Удаление мячей(они должны быть одного цвета и больше или равно 4).
2 - поворот фигурки(в фигурке 2 мяча).
Вот с ними у меня возникли проблемы, уже который день не могу их реализовать.

Есть метод "leaveOnTheField()" - он записывает в 2мерный массив "matrix" значение цвета фигурки(например 1 - синий, 2 - красный и т.д.). Также есть мапа с мячами(объекты) за счет нее я рисую их на поле. ключом выступает id мяча.
За счет матрицы и значений я реализовал проверки на столкновения со стенкой и другими мячами, но вот с удалением ни вкакую не выходит и поворот тоже не могу придумать как реализовать, потому прошу помощи.
Адекватная критика по коду тоже приветствуется.
Вот ссылка на репозиторий https://github.com/JavaBoy3578/The-Balls-Game.git
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2017, 13:27
Ответы с готовыми решениями:

Bkrfdf.xyz/balls
Вылезает реклама в браузере

Эффективные алгоритмы вставки и удаления элемента из массива
Необходимы два эти алгоритма. + Всем в карму

Игра Шары: чтобы выстроенные в ряд три и более шаров одинакового цвета сгорали
Всем привет!! помогите если не сложно((( а то я вообше не понимаю(( В данной игре необходимо переставлять два соседних шара для...

11
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
18.04.2017, 13:57
какие мячи, какое поле, какое удаление...
Тут ваще никто не в курсе, чем ты занимаешься, телепаты все в отпуске.
0
4 / 4 / 1
Регистрация: 03.02.2017
Сообщений: 29
18.04.2017, 14:44  [ТС]
ок я понял, просто первый раз пишу тут.

вот само тз

Кликните здесь для просмотра всего текста
Шары спускаются с верхней части игрового поля парами. Игрок может вращать их пока они спускаются вниз.

Шары могут быть 4-х различных цветов: красный, синий, зеленый и желтый

Если собралась группа из четырех шаров одного и того же цвета (по горизонтали, по вертикали или оба варианта сразу (как в тетрис)) — эти шары с игрового поля убираются, что позволяет любым оставшимся шарам упасть и заполнить освободившееся пространство.

Это может привести к ряду возможных «цепочек комбо», если упавшие шары также создают группы.

Игровое поле может быть любого размера вы хотите (мы рекомендуем 6x12)

Обратите внимание, что пара шаров не связаны друг с другом. Если один шар блокируется, потому что есть что-то внизу, другой будет продолжать падать (без контроля игрока над ним), пока он не достигнет чего-либо под собой.


проблема как раз с пунктом удаления шаров и поворотом

вот джарник на то что уже есть исходники указаны в первом посте.
Вложения
Тип файла: 7z Balls.7z (28.4 Кб, 3 просмотров)
0
9 / 9 / 3
Регистрация: 20.04.2016
Сообщений: 33
18.04.2017, 15:34
а почему поворот не получается?
0
4 / 4 / 1
Регистрация: 03.02.2017
Сообщений: 29
18.04.2017, 15:53  [ТС]
Дело в том, что я только учусь и с играми я в принципе столкнулся впервые, просто развернуть фигурку я могу, но как сделать, что бы она вращалась по часовой стрелке, одной клавишей, не могу додуматься)
0
9 / 9 / 3
Регистрация: 20.04.2016
Сообщений: 33
18.04.2017, 17:34
немного попробывал разобраться вот первый результат попробуй добавь в rotate метод
Java
1
2
3
4
if(!isWall(description)){
    this.secondBall.setX(this.firstBall.getX());
    this.secondBall.setY(this.firstBall.getY() + 32);
}
1
4 / 4 / 1
Регистрация: 03.02.2017
Сообщений: 29
18.04.2017, 18:20  [ТС]
спасибо за направление))

немного доработав получилось сделать поворот фигурки примерно так

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
if ((secondBall.getY() == firstBall.getY()) && (secondBall.getX() > firstBall.getX())) {
            secondBall.setX(firstBall.getX());
            secondBall.setY(firstBall.getY() + GameField.TILE_HEIGHT);
        } else if ((secondBall.getY() == firstBall.getY()) && (secondBall.getX() < firstBall.getX())) {
            secondBall.setX(firstBall.getX());
            secondBall.setY(firstBall.getY() - GameField.TILE_HEIGHT);
        } else if ((secondBall.getY() > firstBall.getY()) && (secondBall.getX() == firstBall.getX())) {
            secondBall.setY(firstBall.getY());
            secondBall.setX(firstBall.getX() - GameField.TILE_WIDTH);
        } else if ((secondBall.getY() < firstBall.getY()) && (secondBall.getX() == firstBall.getX())) {
            secondBall.setY(firstBall.getY());
            secondBall.setX(firstBall.getX() + GameField.TILE_WIDTH);
        }
алгоритм оказался не такой уже и сложный))
теперь появились пару маленьких багов с движением фигурки, но я исправлю уже сам их спс)

но вот проблемма с убиранием шаров еще актуальна.
0
9 / 9 / 3
Регистрация: 20.04.2016
Сообщений: 33
18.04.2017, 18:24
Cлушай, а какую функцию выполняет matrix?
0
4 / 4 / 1
Регистрация: 03.02.2017
Сообщений: 29
18.04.2017, 18:33  [ТС]
matrix - это поле(стакан/шахта хз как назвать) когда мяч падает на пол или другой шар, то в matrix записывается значение цвета этого шара(0 - клетка свободна, 1 - занята синим шаром, 2 - красным и т.д.), за счет этого я реализовал проверку на столкновение шаров. За счет него же хотел сделать проверку линий, но вот тут и наткнулся на забор.
0
9 / 9 / 3
Регистрация: 20.04.2016
Сообщений: 33
18.04.2017, 19:03
Я думаю в Figure-классe нужно добавить значeния, чтобы определять в каком положении находится фигура.
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
private boolean isVertical, isHorizontal;
...
public boolean getVertical(){
    return isVertical;
}
 
public boolean getHorizontal(){
    return isHorizontal;
}
 
public void setVertical(boolean newValue){
    isVertical = newValue;
}
 
public void setHorizontal(boolean newValue){
    isHorizontal = newValue;
}
...
public void rotate(int description){
if(secondBall.getY() == firstBall.getY()){
    setHorizontal(true);
    setVertical(false);
}
else{
    setHorizontal(false);
    setVertical(true);
}
...
}
public void move(int description){
    setHorizontal(true);
    setVertical(false);
...
}
Добавлено через 19 минут
проверка линий думаю можно двумя способами сделать
первый способ, только нужно ещё добавить способ чтобы определить какая именно линия полная и сбрасывать её:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
private boolean isVerticalFull(int type){
    for(int j = 0; j < matrix.length; j++){
        int count = 0;
        int currentLength = matrix[j].length;
        for(int i = 0; i < matrix[j].length; i++){
            if(matrix[i][j] == type && type != 0)
                count++;
        }
        if(count == currentLength)
            return true;
    }
    return false;
}
1
4 / 4 / 1
Регистрация: 03.02.2017
Сообщений: 29
18.04.2017, 19:49  [ТС]
ок завтра буду пробовать, сейчас уже голова не работает)
0
4 / 4 / 1
Регистрация: 03.02.2017
Сообщений: 29
20.04.2017, 14:34  [ТС]
спс в принципе разобрался. Если потребуется еще помощь отпишу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2017, 14:34
Помогаю со студенческими работами здесь

Игра шары. Сделать , чтобы выстроенные в ряд три и более шаров одинакового цвета сгорали?
Подскожите пожалуисто, как зделоть чтобы выстроенные в ряд три и более шаров одинакового цвета сгорали?? За рание спосибо. unit...

Компьютерная игра "Семь лунок": Сделать массив, который бы реагировал на перестановку шаров в лунках
Всем привет, помогите пожалуйста с курсовой работой по программированию (Си) в borland c 3.1. Курсовая: Компьютерная игра (&quot;Семь...

Игра Го. Нужен алгоритм, для удаления камней, захваченных соперником
Игра Го - http://ru.wikipedia.org/wiki/%D0%93%D0%BE нужен алгоритм, для удаления камней, захваченных соперником. элемент окружен,...

В урне содержится 8 шаров и 6 белых шаров. Случайным образом вынимают 4 шара
В урне содержится 8 шаров и 6 белых шаров. Случайным образом вынимают 4 шара. Найти вероятность того, что среди них имеется: 3 белых шара;...

Найти скорость шаров после столкновения и изменение кинетической энергии шаров в результате удара.
Помогите пожалуйста решить блок заданий...и пожалуйста по базовой формулке запишите к решению..очень прошу!!!Ответы есть,мне нужно решение....


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru