Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Прога на java


Рекомендуемые сообщения

Плиззз....помогите за комментарить прогу, ну комменты с объяснением, что где и как... и что получается... :) сэнкс

:)

variant___.zip

variant___.zip

Изменено пользователем Tas'ka
Ссылка на комментарий
Поделиться на другие сайты

Ну ты, блин, даешь...

Насколько я понял - это реализация игры lines в виде апплета. Все бы ничего, но комментить этот код было бы легче, если бы был еще код класса Ball.

Добавлено позже:

И PathFinder было бы неплохо...

Просто ковырять код, который даже не компилится - как-то не очень... :no:

Изменено пользователем Shurr
Ссылка на комментарий
Поделиться на другие сайты

Блин, Tas'ka, а приаттачить файлы слабо? Зачем же выкладывать такие простыни?

Держи свои комментарии.

Balls.rar

P.S. Кстати, я поменял в методе checkForFive() вызов markFive(active) на markFive(active.getPoint()), чтобы он компилился.

Balls.rar

Ссылка на комментарий
Поделиться на другие сайты

l.gif :)

вот когда компилируешь, выдает он такое

Note: *.java uses or overrides a depracted API

Note: Recomple with -deprecation fot details

после того как кмпилирую с ключом -deprecation он выдает

как избавится от этотого?

post-944-1116675696_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

:)

а еще, мне как бы не нужен, такой слодный аолгортм поиска короткого пути! Как бы мне не надо, что бы вообще шарик искал путь и тем более что бы отображался, надо, что бы при попадании в нужную ячейку, знал, что туда можно попасть и попадал без путя этого длинного....мне подсказали вот такой алгортм (см.фото)..но он С++ :) как это в java переделать можно? :)

1.jpg

2.jpg

post-944-1116676072_thumb.jpg

post-944-1116676102_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

вот когда компилируешь, выдает он такое

Note: *.java uses or overrides a depracted API

Note:  Recomple with -deprecation fot details

после того как кмпилирую с ключом -deprecation он выдает

как избавится от этотого?

176293[/snapback]

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

Как от них избавиться? Читать Java API Specification для соответствующей версии java и заменять вызовы устаревших методов на те, которые рекомендованы в спецификации.

А еще, мне как бы не нужен, такой слодный аолгортм поиска короткого пути!  Как бы мне не надо, что бы вообще шарик искал путь и тем более что бы отображался, надо, что бы при попадании в нужную ячейку, знал, что туда можно попасть и попадал без путя этого длинного....мне подсказали вот такой алгортм (см.фото)..но он С++  :(  как это в java переделать можно?  :g:

176294[/snapback]

Переделать-то можно, вопрос в том - зачем?

Чем тебе мешает сложность алгоритма, если он уже реализован? Он что, тормозит? Просто мне не совсем понятно, зачем менять алгоритм, который отлажен и работает? Разве что он у тебя в задании точно прописан...

Ссылка на комментарий
Поделиться на другие сайты

:g: препод сказал, что не фига ты такое не создашь, такой алгоритм, так что делай проще, вот в чем весь прикол :(

Ссылка на комментарий
Поделиться на другие сайты

Сказали проще - делай проще :D

Напиши рекурсивный алгоритм, который будет проверять соседние ячейки на незанятость. У тебя поле-то 9х9, так что рекурсия будет неглубокой. Сделай также матрицу проверенных ячеек, т.е. матрицу, в которой будут отмечаться уже обработанные ячейки, и пользуйся ей при выборе ячеек для проверки - это поможет отсечь уже проверенные ячейки.

Ссылка на комментарий
Поделиться на другие сайты

:) че-то ссылка не открывается

Ладно ...посмотря...знать как бы так написать, знала бы не спрашивала :)

А как там можно убрать, что бы шарики не появлялись так красиво...и не исчезали....а сразу?

И проверка на 5 в линию, обязательно делать через вектор??? нельзя попроще? ;)

Ссылка на комментарий
Поделиться на другие сайты

и как он считает очки? т.е. почему он за 5 шариков дает 10 баллов и небольше и не меньше??? :cool: и почему в первый раз выкидывается именно 6 шариков? :cool:

Ссылка на комментарий
Поделиться на другие сайты

так насчет того, что выкидывается 6 шариков я поняла, как и что =) насчет счета сейчас тоже думаю разберуюсь, а вот насчет что бы убрать навверху подсказку (поле что появлются шарики)...все как не убираю...все ошибки :doh: все уж больно взаимосвязано.. :cool:

А насчет этого пути...смотри ...матрица то у меня есть

rivate int[][] BallsToInts() { int imatrix[][] = new int[9][9]; for(int x=0; x<9; x++) {    for(int y=0; y<9; y++) {       imatrix[x][y] = (matrix[x][y]==null) ? 0 : 1;    } } return imatrix;}

которая отображает состояние игрового поля и уже отмечает где стоят шарики, а где нет, как дальше? можно в варианте кода (а то вс словами...и как то не доходит :blushing: )

Изменено пользователем Tas'ka
Ссылка на комментарий
Поделиться на другие сайты

Так, давай по порядку.

че-то ссылка не открывается
Какая ссылка? :blushing:
Ладно ...посмотря...знать как бы так написать, знала бы не спрашивала
Было бы не лень я бы и сам написал ;)
А как там можно убрать, что бы шарики не появлялись так красиво...и не исчезали....а сразу?
Можно. Если бы ты еще приаттачила ВСЮ козу, с которой ты "делаешь" свою работу, чтобы она у меня компилировалась и работала - мне было бы легче тебе помогать. :doh:
И проверка на 5 в линию, обязательно делать через вектор??? нельзя попроще?
А куда ж тут проще? Или тебе не нравится тип Vector? Так без него в программировании никуда :cool: - очень уж он удобный...
и как он считает очки? т.е. почему он за 5 шариков дает 10 баллов и небольше и не меньше???
/** Проверка на наличие линии из пяти или более одноцветных шариков */private void checkForFive() { dbi("check for five"); if(markFive(active.getPoint())) { // если найдена линия для удаления    int extra = deathRow.size() - 5;    score += (extra==0) ? 10 : 10+(int)Math.pow(2, extra);    startDeletion(); } else startAddingNext();}

int extra = deathRow.size() - 5;

Здесь считается количество "экстра" шариков, т.е. на сколько количество шариков в линии превышает 5.

score += (extra==0) ? 10 : 10+(int)Math.pow(2, extra);

Здесь к текущему счету прибаляется 10, если extra = 0 и 10 + 2^extra, если extra > 0;

Вот тебе и 10 очков за 5-шариковую линию.

Изменено пользователем Shurr
Ссылка на комментарий
Поделиться на другие сайты

А насчет этого пути...смотри ...матрица то у меня есть ... которая отображает состояние игрового поля и уже отмечает где стоят шарики, а где нет, как дальше?  можно в варианте кода (а то вс словами...и как то не доходит  :blushing: )

177587[/snapback]

:cool: Лана, щас поковыряюсь... :doh:

Ссылка на комментарий
Поделиться на другие сайты

Ну че, вроде получилось что-то... :)

Класс Flooder, производит проверку достижимости ячейки на поле.

Для проверки достижимости используется метод:

public boolean isReachable(int[][] map, Point startPoint, Point endPoint), где

map - это карта поля, на котором нулями обозначены свободные ячейки, а единицами - занятые.

startPoint - начальная точка

endPoint - конечная точка.

Возвращаемый результат - true, если точка startPoint достижима из точки endPoint, и false - если нет.

Достижимость проверяется методом заливки, при этом используется алгоритм с выбором привилегированного направления движения.

Подбил тут небольшую статистику:

Размеры поля: 9x9

-------------------------------------------

Интенсивность заполнения поля: 0.1

Количество экспериментов: 100000

Среднее количество шагов при поиске: 7

Средний максимальный уровень вложенности рекурсии при поиске: 6

-------------------------------------------

Интенсивность заполнения поля: 0.2

Количество экспериментов: 100000

Количество успешных поисков: 96065

Среднее количество шагов при поиске: 9

Средний максимальный уровень вложенности рекурсии при поиске: 7

-------------------------------------------

Интенсивность заполнения поля: 0.3

Количество экспериментов: 100000

Среднее количество шагов при поиске: 12

Средний максимальный уровень вложенности рекурсии при поиске: 8

-------------------------------------------

Интенсивность заполнения поля: 0.4

Количество экспериментов: 100000

Среднее количество шагов при поиске: 11

Средний максимальный уровень вложенности рекурсии при поиске: 7

-------------------------------------------

Интенсивность заполнения поля: 0.5

Количество экспериментов: 100000

Количество успешных поисков: 30672

Среднее количество шагов при поиске: 8

Средний максимальный уровень вложенности рекурсии при поиске: 5

-------------------------------------------

Интенсивность заполнения поля: 0.6

Количество экспериментов: 100000

Среднее количество шагов при поиске: 5

Средний максимальный уровень вложенности рекурсии при поиске: 3

-------------------------------------------

Здесь:

Интенсивность заполнения поля - коэффициент заполнения поля шариками. Т.е. интенсивность = 0.3 обозначает, что 30% ячеек занято шариками.

Количество экспериментов - количество экспериментов, проведенных при данных параметрах.

Среднее количество шагов при поиске - среднее количество шагов до получения однозначного результата о достижимости или недостижимости конечной ячейки. 1 шаг = обработка 1 ячейки.

Средний максимальный уровень вложенности рекурсии при поиске - усредненное значение максимального уровня вложенности, имевшего место при каждом эксперименте.

Т.е. из статистики видно, что наиболее трудоемким для такого алгоритма является 30-40-процентное заполнение шариками игрового поля.

При большем заполнении - количество шагов уменьшается за счет увеличения процента замкнутых "полостей" на карте.

При меньшем же проценте заполнения - количество шагов уменьшается за счет того, что отдельностоящие шарики слабо препятствуют направленному движению к конечной точке.

Ковыряй, студентка :)

Flooder.rar

Flooder.rar

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...