Вадиматоричик писал(а):И вообще я прислушался к вашим советам и решил сделать на амеге 8 игру волк ловит яйца. (Так сказать папрактиковаться.
Вот это правильно!
Вадиматоричик писал(а):Кстате вопрос. Кто небудь в этой программе знает, как использовать сдвиговые регистры.
В какой программе? Или вопрос в том, как для конкретной схемы их соединять?
Если используются 595 регистры (74HC595), то они подключаются через интерфейс SPI контроллера. Нога SH_CP (11) - к ноге CLK МК, нога DS (14) к ноге MOSI МК, нога ST_CP (12) к любой ноге мк (можно к SS), MR (10) на плюс, OE(13) на землю. А к ногам Q0-Q7 подключаем элементы индикации, главное не превышать ток через выводы 595. Как выводить данные по SPI есть примеры в даташите на контроллер.
Спасибо за участие в теме. Под соловом в той программе я имел, введу, конструктор программ для AVR (Flowcode V4 for AVRs)Поскольку языка не знаю (Не Си не русского по хорошему) работаю в ней и код генератора нужен именно под эту программу, но спасибо за участие. Потехоньку пытаюсь выводить падения яиц на экран протеуса.
Вадиматоричик писал(а):код генератора нужен именно под эту программу
Там работа с АЦП есть? Можно оставить вход АЦП болтаться в воздухе и снимать с этого канала значения (самые младшие биты) сняли 8 значений - случайное число от 0 до 255 готово) Ну или можно вот так.
На первое время можно вообще забить на ГСЧ и выдавать последовательно числа 1,2,3,4... Чтобы сам алгоритм индикации и управления отработать.
http://ru.wikipedia.org/wiki/%D0%9B%D0% ... 0%BE%D0%B4
Генератор случайных чисел реализуется по этому методу (об этом позже).
Раз Вы таки решились сделать волка с яйцами, я готов реально помогать.
Как я понимаю, у Вас были проблемы с составлением понятного и грамотного алгоритма. Я попробую составить свою версию алгоритма для волка с яйцами. Выложу чуть позже.
-----------------------
Не грузите человека еще каким-то АЦП. Тем более что метод с АЦП хоть и не псевдослучайный, но распределение будет не равномерным, да еще и зависеть от погоды/прочей лабуды.
Последний раз редактировалось Foks Чт июн 30, 2011 12:52:34, всего редактировалось 1 раз.
Работать будет. Считаю некрасиво. Некрасиво и все тут. Ну не нравятся мне сопли.
Никто не мешает. Складываем и пользуем.
Методов море. Предложенные в том числе.
Во, Foks облачил мои чувства в слова.
Foks предложил хороший вариант, сразу число получается, надо будет его тоже освоить. Главное с коэффициентами угадать. Хорошо что в меге есть умножение
А по поводу соплей... А зачем обязательно делать в виде соплей
Пусть у нас есть M горок, откуда падают яйца, с большим числом ячеек на каждой горке. На экране видны только 3 последние ячейки, а яйца будут появляться в одной из ячеек >=4.
Игра будет обрабатывать всего N яиц. Имейте в виду, что на экране будут отображаться только те, которые находятся в ячейках 1...3. Таким образом, у нас будет 3*M светодиодов-яиц, и M светодиодов - шляпы.
Нам нужны будут следующие переменные:
1) Массив Pos[N] - для хранения позиции каждого яйца, и 0 если яйца нет.
2) Массив Side[N] - Здесь будем хранить число 1...M - с какой стороны находится яйцо.
3) Переменная Score - очки.
4) Переменная Wolf - Здесь число 1...M - с какой стороны волк держит шляпу.
Элементы массивов я буду нумеровать 1...N.
1. Обнулить все массивы и переменные.
2. Настроить порты ввода-вывода. Светодиоды по умолчанию погашены.
3. Цикл i = 1 до M
---- 1) Если Pos(i) = 0 то
---------- а) Присвоить Side(i) случайное число от 1 до M.
---------- б) Временная переменная T = 2.
---------- в) Цикл j = 1 до N
----------------- Если (Side(j) = Side(i)) И (Pos(j)>T) то присвоить T значение Pos(j)
---------- г) Присводить Pos(i) значение T+2
---- 2) Если Pos(i) от 1 до 3, то погасить светодиод, соответствующий Pos(i), Side(i)
---- 3) Pos(i) уменьшить на единицу -- спускаем яйцо на один уровень ниже.
---- 4) Если Pos(i) от 1 до 3, то зажечь светодиод, соответствующий Pos(i), Side(i)
---- 5) Если Pos(i) = 0 то -- новое яйцо упало
---------- а) Если Side(i) = Wolf то добавить сколько-то очков к Score иначе отнять столько-то очков.
---- 6) Подождать 180 мс, и во время ожидания повторять:
---------- а) Если нажата кнопка 1, то присвоить Wolf значение 1 и зажечь соотв. светодиод шляпы (остальные погасить)
---------- Аналогично с кнопками 2-M.
4. Перейти к пункту 3 -- бесконечный цикл.
P.S. Алгоритм исправлен и дополнен.
Последний раз редактировалось Foks Чт июн 30, 2011 16:41:13, всего редактировалось 5 раз.
Падение яиц и ловля их уже решена проблема состоит только в сдвиговых регистрах, так как там надо хорошо постараться и тем более нет нигде простого примера реализации. Везде с кучей навеса, например термометр или матриц. А так чтобы с общим катодам нету.Если без сдвиговых регистров, то всё совершенно легко.
Мысли интересные (По поводу случайных чисел) Вот только столкнулся с неожиданной проблемой в амеге 8 на которой я разрабатывал без сдвиговых регистров выводов не хватает. Так что только сними.