Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 29.07.2012
Сообщений: 24

Змейка на as3

29.07.2012, 03:07. Показов 2623. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Немного изучив синтаксис, я начала делать свое первое приложение вот оно http://vk.com/app3036607
Как видно, мое приложение - простая змейка.
Но у меня возникло несколько проблем.

1. Когда змейка занимает большую часть экрана функция генерации "еды" периодически срабатывает некорректно
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
function food_gen()
{
    fruit.x=Math.floor(Math.random()*15)*40+1; //генерация координат
    fruit.y=Math.floor(Math.random()*10)*40+1;
    for (var i=0;i<snake.length;i++) //проверка, есть ли змейка на координатах
    {
        if ((snake[i].x==fruit.x)&&(snake[i].y==fruit.y)) 
/*Знаю, что тут надо hitTestObject использовать, но не суть*/
            food_gen();
    }
    addChild(fruit);
}
Результат - 1-3 раза за игру еда генерируется не на свободном поле, а на теле змейки

2. Когда змейка занимает все поле, происходят странные вещи. Еда продолжает генерироваться, и ее можно есть, но проверка на столкновения работает странно. По идее как только змейка становится больше, чем поле игра должна заканчиваться. Но почему-то если идти по тому-же пути, что и шли до этого проверка не срабатывает.

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
for (var i=1;i<snake.length;i++) //собственно, проверяем
    {
        if (snake[0].hitTestObject(snake[i]))
        {
            VK.api("setUserScore",{score:ball}, getHigh, errorFnc);
            timeradd.stop();
            back.alpha = 1; //Вывод таблицы рекордов
            end.alpha = 1;
            records.alpha = 1;
        }
    }
3. Не могу понять, как сделать, чтобы змейка не перекрывала таблицу рекордов. Начальное поле у меня на нижнем слое, таблица на следующем. Собственно, я alpha элементов слоя в предыдущем коде и меняла, затем что даже не могу найти, как показать-скрыть слой.

Буду благодарна за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.07.2012, 03:07
Ответы с готовыми решениями:

Игра "Змейка": чтобы змейка не съедала сама себя
Здравствуйте! Пишу змейку на VB 2010. Не получается составить условие того, что бы змейка не ползла в направлении обратному...

Интегралы в AS3
A умеет ли флэш считать адские формулы например интегралы и тому подобное? и возможно ли чтоб дальше цвет кубика задавался как раз в...

AS2 to AS3
Итак. Я уже давно давно занимаюсь программированием и подобным на ActionScript2.0 и вот тут понадобилось мне всё таки использование 3d...

4
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
29.07.2012, 08:16
Цитата Сообщение от katenokspb Посмотреть сообщение
генерации "еды" периодически срабатывает некорректно
Саму генерацию и не показала

Цитата Сообщение от katenokspb Посмотреть сообщение
Когда змейка занимает все поле, происходят странные вещи.
По логике игра должна заканчиваться. Где проверка на окончание игры?

Цитата Сообщение от katenokspb Посмотреть сообщение
Не могу понять, как сделать, чтобы змейка не перекрывала таблицу рекордов.
Глубина расположения контейнера с таблицей рекордов должна быть выше, чем собственно игра. Реализовать это с помощью alpha - фи. Если и не удалять (что лучше), то хотя бы visible.

Ну и такой код проверки координат чреват ошибками.
1
0 / 0 / 0
Регистрация: 29.07.2012
Сообщений: 24
29.07.2012, 11:58  [ТС]
Цитата Сообщение от TanaTiX Посмотреть сообщение
Саму генерацию и не показала


По логике игра должна заканчиваться. Где проверка на окончание игры?


Глубина расположения контейнера с таблицей рекордов должна быть выше, чем собственно игра. Реализовать это с помощью alpha - фи. Если и не удалять (что лучше), то хотя бы visible.

Ну и такой код проверки координат чреват ошибками.
Первый код и есть генерация еды.
Проверка на столкновение не годится, как проверка на окончание игры? Почему? Что посоветуете?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
29.07.2012, 14:06
Цитата Сообщение от katenokspb Посмотреть сообщение
Первый код и есть генерация еды.
Ой, и правда. У вас же там рекурсия, да еще и без четкого способа выхода из нее.
Получается, что при запуске этой функции с каждой итерацией у вас как минимум меняются координаты объекта fruit, но есть большая вероятность, что данный происходит лавинообразный повторный запуск данного метода. Ужас.

Цитата Сообщение от katenokspb Посмотреть сообщение
Проверка на столкновение не годится, как проверка на окончание игры?
Проверка на столкновение чего с чем? Я не знаю всей идеи реализации вашей игры, но я бы сделал следующим образом:
создал бы тайловую структуру, каждой ячейке присвоил координаты, при перемещении змейки, она бы перемещалась именно по индексам ячеек, а не по глобальным координатам. Все перемещения обрабатываются на основе индексов. При поедании еды - увеличиваем длину хвоста, генерируем новое положение для еды (одиночный запуск метода) на основании пустых ячеек. При увеличении длины хвоста проверяем его длину: если он достиг максимального уровня - либо переходим на следующий, либо показываем сообщение о выигрыше. Если пользователь врезается в себя (занятая ячейка) либо в край стены (зависит от реализации) - сообщение о проигрыше. Все методы запускаются единожды. Проверка на столкновение - при входе в соответствующую ячейку. Если говорить о классической реализации, то реализовать движение змейки по таймеру.
1
0 / 0 / 0
Регистрация: 29.07.2012
Сообщений: 24
29.07.2012, 16:06  [ТС]
Спасибо. Буду переделывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.07.2012, 16:06
Помогаю со студенческими работами здесь

AS2->AS3
Так как незнаю АС2 прошу помочь переписать код с АС2. На мувике сцены весит ф-ция: onClipEvent (load) { y0 = _y;//запомним координату...

MS Access и AS3
Добрый день, форумчане! Сейчас у меня проходит практика в учебном заведении и одно из заданий - написать органайзер с обязательным...

duplicateMovieClip в AS3
AS2 никогда не изучал, но много примеров со спецефектами описаны именно на AS2 с приминением метода duplicateMovieClip. Логику как-бы...

С AS1 на AS3
Всем доброго времени суток, очень приятно познакомиться. немного лирики о себе Когда-то писал (вроде бы даже не плохо) на AS1...

Очередь на as3
Здравствуйте! Такой вопрос, как грамотно на as3 организовать очередь? Например есть команда PushVar(var), и команда GetVar():var. По...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru