![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
vlad275 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 485 Регистрация: 20.3.2008 Репутация: нет Всего: -3 |
Пишу обучащую иностранным языкам игру. Идея такая.
С помощью Random выбираются 3 слова из массива, если одно и тоже слово выпало больше 1 раза то запускается Random снова. На экран мобильного выводится перевод одного из выбранных слов, в ниже три слова. При нажатии на клавиши телефона "1","2","3" пользователь выбирает корректный перевод. Если клавиша и номер перевода в массиве+1 совпадают, то пользователь выиграл. Почему-то у меня все глючит. Большая часть сообщений не выводится. Где ошибка? :-(
Обновлено Это сообщение отредактировал(а) vlad275 - 16.4.2008, 03:40 -------------------- Кто, как и зачем запустил этот механизм уничтожения России: http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Нет вызова schedule()
repaint() нужно вызывать в конце run() У тебя 10 вариантов, но ты делаешь rand.nextInt()%9? Нужно rand.nextInt()%strName.length Циклы while() теоретически могут длиться бесконечно.
Это сообщение отредактировал(а) math64 - 16.4.2008, 07:55 |
|||
|
||||
vlad275 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 485 Регистрация: 20.3.2008 Репутация: нет Всего: -3 |
Прорисовка то как раз не глючит. У меня у воде падающее яблоко нормально прорисовывается. А вот текст по большей части не выводится.
Вот эта строка if (intRand3 == intRand) intRand3 = n-1; при совпадении номеров просто отнимает у выпавшего номера 1. А если там уже 1 или 0? Будет 0 или -1 У меня же в коде заново рандомится и заново проверяется на совпадение. Все таки почему часто не выводятся строки, а если и выводится то в основном первая строка? У меня же строки
Выводятся друг под другом. Почему же первая строка видна по большей части а вторая и третья почти всегда не видны? -------------------- Кто, как и зачем запустил этот механизм уничтожения России: http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8 |
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
vlad275, Random.nextInt() числа из какого диапазона генерирует?
Разве только положительные? Добавлено через 1 минуту и 12 секунд Вообще, это легко проверяется. После того как сгенерировал новые intRandX выведи их в консоль.... |
|||
|
||||
vlad275 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 485 Регистрация: 20.3.2008 Репутация: нет Всего: -3 |
![]() Должно быть как на правой картинке, но обычно выглядит как на левой и средней картинках Это сообщение отредактировал(а) vlad275 - 16.4.2008, 03:26 -------------------- Кто, как и зачем запустил этот механизм уничтожения России: http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8 |
|||
|
||||
vlad275 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 485 Регистрация: 20.3.2008 Репутация: нет Всего: -3 |
Самое странное что часто текст и без условия не выводится
-------------------- Кто, как и зачем запустил этот механизм уничтожения России: http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Да, nextInt() может выдавать отрицательные числа, поэтому rand.nextInt()%n не получится.
Для того чтобы выбрать m различных случайных чисел из 0..n-1 нужно заполнить массив new int[n] числоами 0 ... n-1 и (частично) перетасовать их. Как делать перетасовку, см. за что мне поставили +. Мой пример здесь - отпимизация перетасоки под твой случай (но нужно исправить выборку nextInt()). В строке if (intRand3 == intRand) intRand3 = n-1; я имитирую эту перетасовку без создания массива (если числа совпали, присваиваем число, которое бы было в массиве). |
|||
|
||||
eugine_s |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
поменяй местами код, вот так:
т.е. сначало значения intRandX выведи, а потом уже массив. Ну а ошибку с отрицательным числом ты так и не исправил. intRandX = Math.abs(random.nextInt) %N ; |
||||
|
|||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Кстати intN тоже должен выбираться как
intN = Math.abs(rand.nextInt())%3+1; или intN = (rand.nextInt()&0x7FFFFFFF)%3+1; иначе у тебя будет выпадать 2 в вероятностью 1/2, 1 и 3 - с вероятностью 1/4. |
|||
|
||||
vlad275 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 485 Регистрация: 20.3.2008 Репутация: нет Всего: -3 |
А почему не всегда выводится
Тут же нет условия? 1. 2. 3. должны выводится! :-( -------------------- Кто, как и зачем запустил этот механизм уничтожения России: http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Если индексы массива отрицательны, выбрасывается исключение.
|
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
vlad275, потому что Exception появляется.
strName[intRand] - бросает Exception, когда intRand меньше нуля. Только я не вижу где у тебя перехватывается эта ошибка. |
|||
|
||||
vlad275 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 485 Регистрация: 20.3.2008 Репутация: нет Всего: -3 |
Теперь я понял. Переделаю
-------------------- Кто, как и зачем запустил этот механизм уничтожения России: http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8 |
|||
|
||||
vlad275 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 485 Регистрация: 20.3.2008 Репутация: нет Всего: -3 |
Все заработало!!! Большое спасибо!!!
А что в WTK только MIDP 1.0 поддерживается? Мне нужно MIDP 2.0 чтобы вставить .png с головой глотающую яблоки и финальную заставку(не знаю как правильно ее назвать) -------------------- Кто, как и зачем запустил этот механизм уничтожения России: http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8 |
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
||||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |