Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
задумал сделать игрушку викторину. смысл простой: ответил правильно - +5 очков на счет и переход к следующему вопросу. ответил неправильно - 0 очков, -1 жизнь и переход к следующему вопросу.
захотелось усложнить: чтобы вопросы шли не по порядку, а выводились рандомно. но рандомно так, чтобы вопросы не повторялись.
сложность еще заключается в том, чтобы после ответов на n-ное количество вопросов был переход на указанную страницу, как в примере: "Вы прошли первый уровень". а после следующего количества ответов на страницу "Вы прошли второй уровень" и т.д.
Добавлено (01 Апрель 2011, 15:38) --------------------------------------------- а иначе интерес викторина не вызовет. планирую, если закончились жизни, то предлагается переиграть уровень. а так как у меня сейчас есть игрок запомнит ответы...
Добавлено (01 Апрель 2011, 15:40) --------------------------------------------- а если будут другие предложения по реализации викторины, то очень буду благодарен
1 - во первых, снова тупо используется принцип "страниц". Не надо воспринимать их как страницы книги, которые надо листать. Это просто набор рабочих пространств окна программы. Однотипные вещи можно делать на одной странице.
2 - используйте для хранения вопросов и ответов массивы переменных. Тогда рандомно генерируя номер, используйте его как индекс элемента массива для показа вопроса.
В общем, смотрите... вначале загружаем в нумерованные массивы вопросы, варианты ответов и баллы. При ответе на вопрос баллы суммируются в [Result]. Управляя числом в переменной [n], мы оперируем показом вопросов, ответов, начислением баллов, т.к. элементы разных массивов соответствуют друг другу под одним индексом [n]. Сделайте рандомную генерацию n при старте и переходе к след. ответу (те числа n что уже были куда-то запоминайте, и генерируйте в цикле до тех пор, пока не получите неповторяющееся n. но так можно и не сгенерировать вообще ))), так что лучше просто сдвигайте n до ближайшего нового значения. есть над чем подумать...)
Тут записаны разные баллы за ответы, но вы можете записать 1 и 0 как верный/неверный и обработать это событие в скрипте перехода (в кнопке далее, скрипты я вынес в кнопки для наглядности, и при старте нажмите тоже кнопку).
Теперь вы надеюсь поймете, что строить любую программу нужно на основе четко продуманного алгоритма, который позволит гибко и с бОльшим толком реализовать то что вы хотите, большинство людей напрасно не придают этому значения. А не городить огород лишь бы работало. Остальные ваши задумки я предоставляю к самостоятельной реализации. Да да, возьмите бумагу, ручку и рисуйте алгоритм, блоксхемы, условия. В neobook конечно легко сделать программу, но логического мышления при программировании никто не отменял вообще-то.
Добавлено (01 Апрель 2011, 19:58) --------------------------------------------- при загрузке следующего вопроса сбрасывайте переменные и делайте радиокнопки невыделенными, чтобы для ответа и зачисления баллов нужно было щелкнуть, иначе зачисляются старые данные:
Setvar "[Answer1]" "" Setvar "[Answer2]" ""
еще можете убрать весь сценарий перехода в верхнее условие, когда ответ выбран, если хотите переходить только при наличии ответа:
Code
.Учет ответа If "[Answer]" "<>" "" Setvar "[Result]" "[Result]+[Answer]" AlertBox "Ответ получен" "Ваши баллы - [Result]" .Загрузка следующего вопроса Setvar "[n]" "[n]+1" Setvar "[Answer1]" "" Setvar "[Answer2]" "" Else AlertBox "" "Ответ не выбран" Endif .Показ других страниц по достижении разл. условий If "[n]" "=" "4" GotoPage "Result" endif
Если хотите больше вариантов, заранее создайте еще радиокнопки и прячьте/показывайте их при необходимости, также соотв-но дополните массивы данными.
Добавлено (01 Апрель 2011, 20:17) --------------------------------------------- Если вопросов будет очень много, возможно есть смысл скинуть массивы переменных со значениями в файл, и подгружать его при старте, разбирая данные по массивам. Можно файл зашифровать/расшифровать чтоб не подглядывали. Так у вас выйдет универсальная оболочка для разных тестов, с подгружающимися базами по разл. темам, при этом жесткая запись данных в проект будет исключена и он может применяться универсально.
Кстати, с генерацией рандома, когда имеется заданный диапазон значений и условие неповторяемости чисел далеко непросто... Имеется несколько подходов, но повторить их алгоритмы в нб я так и не смог, пришлось опять лепить функцию, благо там можно над массивами поработать... скоро выложу, разберусь с алгоритмом... Как задавать вопросы
условие неповторяемости чисел далеко непросто... Имеется несколько подходов, но повторить их алгоритмы в нб я так и не смог
На самом деле все достаточно просто. Вопрос уже давно обсуждался, например. вот в этой теме. И это - не единственное решение. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
да, я видел это... но тут меня заинтересовала чисто программная реализация. метод ListBoxFindItem от списка используется для контроля уникальности числа. Но тут возникают лишние итерации цикла пока наконец не сгенерируется число которое отсутствует в списке. С возрастанием верхнего предела и количества требуемых символов время на эти итерации тоже возрастает. Например, уже при пределе 500 и требовании 500 символов, цикл последние 3-5 цифр отыскал уже явно с трудом. Пробую реализовать алгоритм перебора массива с перемешиванием его индексов, посмотрим будет ли быстрее... Как задавать вопросы
Но тут возникают лишние итерации цикла пока наконец не сгенерируется число которое отсутствует в списке.
Не обязательно! Так или иначе, но по-любому придеться "контролировать" генерацию.
Quote (DEMBEL)
уже при пределе 500
Ну, блин, а при миллионе? Чего там мелочиться-то...
ОК! Вот решение, предложенное саммим разрабами NB. И тоже - с ListBox... Не просто так...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Исправил пример, заменить все файлы, если в папку с первым примером! Пример с рандомным выбором без повтора(вариант Петра) с обозначением уровней и т.д.
Какой-то интересный чувачелло появился в пользователях ресурса! nbinformer зовется. Такой мооденький-мооденький... Сообщений не пишет, тем не создает, но "он-лайн" постоянно. Шпиён, поди...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Засланый казачок Казачок mishem, он его сюда заслал шпионить за форумом, а потом докладывает ему - кто, что, когда написал, а по пути у гисметео плюсы с минусами тырит
Сообщение отредактировано Сергей - Сб, 02 Апреля 2011, 02:17
Не экономит электроэнергию! Прожигает ресурсы оборудования!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Ну об оборудовании вечный спор, что лучше, выключать или не выключать комп. А с "Казачком" оччень удобно. Доделать бы его до ума. Пока настроение пропало.
вот уже более мудро, при каждом запросе гарантированно берется элемент, с его удалением из общего списка. вот то же самое делаю, только с массивом вместо списка. Как задавать вопросы
Да какая разница? В моем примере просто сразу заполнялся список случайными числами, и это было первое, что пришло мне тогда на ум.
Quote (DEMBEL)
только с массивом вместо списка.
У ListBox-а (в отличие от массива) есть замечательное свойство - "автоматический пересчет" индексов при изменении их количества (Count).
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
У ListBox-а (в отличие от массива) есть замечательное свойство - "автоматический пересчет" индексов при изменении их количества (Count).
алгоритм пришлось делать на vbscript, и вот эту затыку о которой ты говоришь, как программно в нб решить? В скрипте за это отвечает Redim Preserve, а так алгоритм можно и на нб переписать. Как задавать вопросы
спасибо всем за советы и ответы. может проще рандомно сделать так: для каждого уровня сделать отдельную папку. например "stage1", "stage2" и т.д. в каждую папку положить вопросы. например, получится 50 файлов с вопросами. но для прохождения уровня нужно ответить только на 20 вопросов. а каждый уровень разместить на отдельной странице. возможно ли это?
artlevin, вы смотрели генератор случайных чисел? для каждого этапа задаете свои границы генерации рандома, 1-11, 12-21, и т.д., также можно выбрать кол-во возвращаемых символов.
Quote (artlevin)
возможно ли это?
Quote (artlevin)
в каждую папку положить вопросы. например, получится 50 файлов с вопросами.
возможно, но забудьте об этом... 50 файлов с вопросами, где вы такое видели. один файл или массив + генерация нужного кол-ва рандомных чисел в рамках заданных границ на каждом этапе. Как задавать вопросы
это не рационально, но если вам подходит именно так то никто не запрещает. или вам прямо пример от и до нужен, так лучше подумайте сами как лучше сделать, и все получится, подсказок было достаточно. подобные проекты теста ну не делаются так, будет сто-двести вопросов, тоже по отдельным файлам пихать? Как задавать вопросы
а зашивать в проект все вопросы, а потом выводить все это в массив. Помятуя работу НБ с массивами, 200 вопросов в массивах, даже представить страшно
Quote (DEMBEL)
подобные проекты теста ну не делаются так
я скачивал из сети такой тестетер, в нем было 50 папок(тематика), в каждой по 20 папок(уровней) и в них по 20 текст. файлов с 10-ю вопросами в каждом. Это реальная программа-тест по различной тематике, скачивал для племяницы, а заодно и посмотреть как устроенно. Этот принцип я и привел в примере. Но если это все переделать в массив, даже и незнаю, как будет все работать
Данная тема меня тоже интересует. Если сказать честно, то я ни чего не понял из всего высказанного в этой теме. Может кто нибудь скинет проект с 10 вопросами для начала. Я дальше по этому шаблону продолжу?
Добавлено (10 Августа 2012, 23:39) --------------------------------------------- Я не силен в программировании, но очень хочу создать свою игру типа "Кто хочет стать миллионером". Надеюсь в NeoBook можно это выполнить. В интернете нет ни каких мануалов по созданию данной игры. Поэтому предлагаю открыть тему по созданию данной ТВ игре и подробно разобрать как ее можно сделать. На примере этой программы думаю я и много других начинающих пользователей смогут освоить эту программу. Надеюсь что цель этого сайта именно в этом. Надеюсь что со мной хоть кто-то согласен?