Среда, 18 Декабря 2024, 15:29

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Ищу программиста, который поможет разобраться в геймдеве...
SnuuxДата: Вторник, 06 Ноября 2012, 21:32 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Привет всем)
В общем такая проблема, я программирую алгоритмы (всякие операции с массивами, циклами, функциями) - нормально, но никак не могу что-нибудь сделать относящейся к играм( Почему то просто не получается и всё...
Змейку уже 3-тий раз начал писать, но все время какие то проблемы...
Помогите, а? Учусь быстро, язык программирования не важен... (Но лучше если Си-подобный)

Мой скайп: Snuuux, ICQ: 691.45.45, vk.com/snuux
MaxaonДата: Вторник, 06 Ноября 2012, 22:27 | Сообщение # 2
участник
Сейчас нет на сайте
Snuux, возьми учить какой нибудь api
посещай форумы
задавай конкретные вопросы
Это ведь очевидно wink
а вообще опыт приходит через преодоление препятствий angry
Только так и никак иначе!
daunДата: Среда, 07 Ноября 2012, 00:32 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Quote (Maxaon)
Змейку уже 3-тий раз начал писать, но все время какие то проблемы...

А конкретней, на чем буксуем?
SnuuxДата: Среда, 07 Ноября 2012, 13:18 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Ну в общем сейчас свой "недо-алгоритм" покажу, и напишу вопросы...:
В общем вот картинка:

В принципе вопрос один, как узнавать где был последний элемент хвоста, чтоб потом его убирать...
То есть предположим у нас есть двумерный массив поля и ... В общем тут надо придумать как змейку показать.. То ли это тоже двумерным массивом сделать, то ли одномерным, и надо где то хранить конец хвоста (с этим у меня проблема...)

Добавлено (07.11.2012, 13:18)
---------------------------------------------
Если делать на движке, то можно и без массива поля, но мне хочется именно с ним...

Serg1971Дата: Среда, 07 Ноября 2012, 13:40 | Сообщение # 5
Весёлый программист
Сейчас нет на сайте
Snuux, ну это-же очевидно! Для змейки берёшь двумерный массив, скажем (50,2) где 50 - это наибольшее количество возможных элементов тела змейки (можешь и 100 взять и 1000 - как хочешь, алгоритм одинаков), ставишь переменную длинна=1 и поехал! Массив заполняешь циклом:
номер 0 1 ......
Х 8 0 ......
У 2 0 ......
При движении змейки значения просто перегоняешь вглубь массива до номера = длинна тоже циклом. Просчитываешь новое положение головы, перегоняешь все ячейки вглубь, в первые элементы массива записываешь новое положение головы, последняя ячейка после длинны не перемещается, а просто затирается. Короче - рисуешь только голову и затираешь последнюю ячейку хвоста. Если наезжаешь на еду - последнюю ячейку не стираешь, длину увеличиваешь на единицу. Делов-то, в чём трудность?




Сообщение отредактировал Serg1971 - Среда, 07 Ноября 2012, 13:42
05142Дата: Среда, 07 Ноября 2012, 13:48 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Quote
При движении змейки значения просто перегоняешь вглубь массива до номера = длинна тоже циклом. Просчитываешь новое положение головы, перегоняешь все ячейки вглубь, в первые элементы массива записываешь новое положение головы

Список то лучше. Тем более если есть в стандартной библиотеке. Хотя я не знаю на чём пишет автор.


mecinvader
Serg1971Дата: Среда, 07 Ноября 2012, 13:50 | Сообщение # 7
Весёлый программист
Сейчас нет на сайте
Quote (Snuux)
То есть предположим у нас есть двумерный массив поля и ... В общем тут надо придумать как змейку показать.. То ли это тоже двумерным массивом сделать, то ли одномерным, и надо где то хранить конец хвоста (с этим у меня проблема...)

05142, автор просил решение с массивом biggrin Всё зависит на чём он пишет конечно, реализаций и идей - миллион!


daunДата: Среда, 07 Ноября 2012, 15:54 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Все проще, запись удава прямо в поле.

m[15,20]:byte - Массив поле
v:byte; - Вектор направления, четыре направления - четыре значения 1,2,3,4
s:byte=3; - Количество сегментов удава

Инициализируем удава:
2-голова 3-тело 4- хвост

Рабочий цикл:
1-новое положение головы в зависимости от вектора направления, с проверкой коллизий. (если голова на кролике, увеличиваем s на 1)
Далее сканируем поле, и если >0 и <254, ячейки массива увеличиваем на 1 (как бы сдвигаем сегменты в сторону головы).
Вычисляем хвост if (m[a,b]==s+2){m[a,b]=0} (если голова на кролике, ничего не обнулится, s то выросла)



SnuuxДата: Среда, 07 Ноября 2012, 16:35 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Спасибо всем) Буду пробовать)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг