motofan logo
6 страниц V < 1 2 3 4 > »         
> 

Делаю Тетрис - Присоединяйтесь., Сделай игру на свой вкус.

Грустный
сообщение 12.10.2006, 23:41 Закрепленное сообщение!


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Тетрис
А теперь и Линии
Проект создавался как «учебный», но меня так никто и не поддержал :) .

Требования:
CLDC1.0
MIDP1.0/MIDP2.0
MMAPI 1.1 (JSR 135)
Не зависит от разрешения экрана (в разумных пределах :) )

Проверенно на:
Motorola V180, V360
Sony-Ericsson K700


Тетрис
Последняя версия 3.1:
Прикрепленное изображениеПрикрепленное изображение
Исходники:
Прикрепленный файл src.rar   ( 36.2 килобайт ) Кол-во скачиваний: 502

Программа:
Прикрепленный файл MIDP1_0.rar   ( 28.36 килобайт ) Кол-во скачиваний: 382
или с мобильного телефона через WAP:
wap.upmobile.ru/users_files/tetris3013.jad

Прикрепленный файл MIDP2_0.rar   ( 28.5 килобайт ) Кол-во скачиваний: 503


Рекомендую почитать:
"Programming Game AI by Example" by Mat Buckland.
С.Стелтинг, О.Маассен - "Применение шаблонов JAVA"
"Java Design Patterns: A Tutorial" By James W. Cooper

Информация по StateMashin (и много другой интересной) на русском есть на
САЙТ ПО АВТОМАТНОМУ ПРОГРАММИРОВАНИЮ И МОТИВАЦИИ К ТВОРЧЕСТВУ

История проекта:
1.0.1:
- под любое разрешение (в разумных пределах)
1.1.0:
- фигуры 4-х цветов
- восстановление после перехода в паузу (закрытия крышки на V180-360)
1.2.1:
- показывает (и сохраняет в RecordSourse) 5 лучших результатов.
- в Options можно менять:
размер 20х10 или 18х10 (для V180 рекомендую 18х10)
реакцию на удержание стрелок в игре (Slide):
1.2.2:
- наконец-то разобрался с RecordStore.
(Кому интересно, смотри OptionsStore и ARecordStore)
- устранены мелкие недочёты.
- малость оптимизировал работу с памятью.
1.2.3:
- показывается следующая фигура
2.0.0:
- появился звук
2.1.0:
- теперь и по-русски
2.1.1:
- для Нокий 60 серии сделал полноэкранный режим (спасибо dmtrlbdv)
2.1.2:
- исправлен режим "Sound OFF"
- исправлен выбор языка
3.0:
- умерены требования к размеру памяти
- возможность запуска на телефонах с MIDP1.0 (тестировал только на эмуляторах)
- немного "раскрашен" интерфейс
- теперь фигура не начинает движения, пока не закончится уборка заполненых линий
- режим "повтор" действует только на кнопки "вправо"/"влево"
3.1:
- циклическая прокрутка в меню
- возможность выбора направления вращения


Линии:
Последняя версия 1.1:
Прикрепленное изображение
Исходники:
Прикрепленный файл src.rar   ( 36.86 килобайт ) Кол-во скачиваний: 403

Программа:
Прикрепленный файл MIDP1_0.rar   ( 29.36 килобайт ) Кол-во скачиваний: 363
или с мобильного телефона через WAP:
wap.upmobile.ru/users_files/lines3013.jad

Прикрепленный файл MIDP2_0.rar   ( 29.47 килобайт ) Кол-во скачиваний: 370

История проекта:
1.0:
- первая версия: "движок" взят из Тетриса 3.0
1.1:
- циклическая прокрутка в меню

Сообщение отредактировал Грустный - 5.7.2007, 6:07
Прикрепленный файл src.rar   ( 36.86 килобайт ) Кол-во скачиваний: 403
Прикрепленный файл src.rar   ( 36.2 килобайт ) Кол-во скачиваний: 502
Прикрепленный файл MIDP1_0.rar   ( 28.36 килобайт ) Кол-во скачиваний: 382
Прикрепленный файл MIDP2_0.rar   ( 28.5 килобайт ) Кол-во скачиваний: 503
Прикрепленный файл MIDP1_0.rar   ( 29.36 килобайт ) Кол-во скачиваний: 363
Прикрепленный файл MIDP2_0.rar   ( 29.47 килобайт ) Кол-во скачиваний: 370
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
wl`
сообщение 27.9.2006, 6:04


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 13.12.2005
Пользователь №: 61 943
Модель телефона: Nokia 6681
Прошивка: ??

Рейтинг: 7.5



cldc к этому не имеет никакого отношения, nextInt(int) - это из MIDP2.0
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 27.9.2006, 23:21


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(wl` @ Среда, 27 Сентября 2006, 17:04)
cldc к этому не имеет никакого отношения, nextInt(int) - это из MIDP2.0
*


А как тогда понимать:
Из документации WTK22:
Цитата
java.util
Class Random

Since:
JDK1.0, CLDC 1.0

nextInt
public int nextInt(int n)

Since:
CLDC 1.1

Из «Motorola V180 Developer Reference Sheet»
Цитата
J2ME™ Information:
CLDC v1.0 and MIDP v2.0 compliant

Из «Motorola V360/V361 Developer Reference Sheet»:
Цитата
Additional API’s JSR 82, JSR 118,
JSR 120, JSR 135,
JSR 139, JSR 205

(JSR 139 - Connected Limited Device Configuration (CLDC) 1.1 API)

Хотя в спецификации не указано, но в V360 есть и «JSR 75 - File Connection»


Цитата(Грустный @ Понедельник, 25 Сентября 2006, 14:24)
Нашёл книжку "Programming Game AI by Example" by Mat Buckland.
Пробую паттерн StateMchine.
*




Разобрался со StateMashine - лично мне очень упростило написание меню и интерфейса с пользователем.
Возможно в тетрисе я и прегнул с использованием этого патерна - но зато проверил его в действии.

В меню также применил патерн Command и CommandHolder (у меня Action и ActionHolder, чтобы не путаться с Command из MIDP).

Кстати, попутно возник вопрос: можно ли обрабатывать Command из MIDP в FullScreenMode без отображения на экране?

Например повесить на SOFT2 паузу, но без вот этого: Прикрепленное изображение


Новое в 1.1.0:
- фигуры 4-х цветовПрикрепленное изображение
- восстановление после перехода в паузу (закрытия крышки на V180-360)

Следующий шаг: разобраться с RecordStore для хранения настроек и результатов. Присоединяйтесь.

Сообщение отредактировал Грустный - 13.10.2006, 0:43
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
wl`
сообщение 28.9.2006, 4:55


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 13.12.2005
Пользователь №: 61 943
Модель телефона: Nokia 6681
Прошивка: ??

Рейтинг: 7.5



с моторами никогда не работал, но мне кажется не стоит использовать команды в полноэкранном режиме - лучше обрабатывать софтклавиши в keyPressed, например так:
Код

void keyPressed(int k){
  if(k==21 || k==-6) // lsoft
      doLSoft();
  else if(k==22 || k == -7) //rsoft
      doRSoft();
  else{
      // other keys
  }
}

при таком подходе софтклавиши будут нормально обрабатываться на Motorolla, SE, Nokia

----

но если обрабатывать все же нужно именно Command, то в таком случае это тоже можно сделать, в методах doLSoft(), doRSoft() насильно вызывая метод commandAction с нужными кнопками (сами кнопки при этом на канвас не добавлятся, но канвас реализует интерфейс CommandListener).
это может потребоваться в том случае, если наш канвас обрабатывает команды от Форм, Cписков и прочее - логику обработки нажатий софт-клавиш можно поместить в одно место.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 28.9.2006, 5:30


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(wl` @ Четверг, 28 Сентября 2006, 15:55)
с моторами никогда не работал, но мне кажется не стоит использовать команды в полноэкранном режиме - лучше обрабатывать софтклавиши в keyPressed, например так:
Код

void keyPressed(int k){
  if(k==21 || k==-6) // lsoft
      doLSoft();
  else if(k==22 || k == -7) //rsoft
      doRSoft();
  else{
      // other keys
  }
}

при таком подходе софтклавиши будут нормально обрабатываться на Motorolla, SE, Nokia

У разных производителей разные коды софиклавиш. При чём, не всегда совпадают с кодами эмуляторов.
----
Цитата
но если обрабатывать все же нужно именно Command
...

Просто при использовании Command софтклавиши срабатывают на всех телафонах. В полноэкранном режиме на экран ничего не добавляется, только при нажатии появляется картинка со списком привязанных Command'ов . А она мне не нужна :( Отрисовка идёт до передачи управления в CommandListener.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
wl`
сообщение 28.9.2006, 5:55


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 13.12.2005
Пользователь №: 61 943
Модель телефона: Nokia 6681
Прошивка: ??

Рейтинг: 7.5



вообще, под разные модели телефонов делают разные порты, можно с уверенностью сказать, что твой универсальный мидлет не будет работать на какой-нибудь лыже или ещё где (ну, к примеру, его не удается запустить на эмуляторе MidpX, с ошибкой: No such method equalsIgnoreCase). И в этих портах учитываются особенности конкретных моделей (к примеру, размер экрана, те же многострадальные софтклавиши). вот при портировании и задаются соответствующие коды клавиш.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 28.9.2006, 6:11


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Пока проверял на Сони-эриксон k700, Нокиа 7270, Самсунг(не помню модель, что-то из новых), Fly МР220, Моторола V180,V360.
Кроме проблем с софтклавишами и getKeyStates, других несовместимостей не нашёл.
(о CLDC 1.0 я уже писал)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
wl`
сообщение 28.9.2006, 6:44


Интересующийся
**

Группа: Пользователи
Сообщений: 49
Регистрация: 13.12.2005
Пользователь №: 61 943
Модель телефона: Nokia 6681
Прошивка: ??

Рейтинг: 7.5



ну, к примеру, на моей NGAGE QD не работает (MIDP1.0, CLDC 1.0), на 6681 - в углу экрана, как выйти, не понял, убивал процесс...

вообще, еще иногда в играх с простым управлением дублируют софтклавиши на кнопки "*" и "#"
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 28.9.2006, 6:57


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Цитата(wl` @ Четверг, 28 Сентября 2006, 17:44)
ну, к примеру, на моей NGAGE QD не работает MIDP1.0, CLDC 1.0), на 6681 - в углу экрана, как выйти, не понял, убивал процесс...
всё таки Game API - сдандарт только с MIDP2.0, просто мне на MIDP1.0 лень возиться с буферизацией, да и пишу я главным образом для себя и супруги :)
Цитата
вообще, еще иногда в играх с простым управлением дублируют софтклавиши на кнопки "*" и "#"
*


и я так решил

Естественно, для игр с графикой посложнее :) чет тетрис, придётся под каждое разрешениие портить :(
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 28.9.2006, 23:41


Dum vivimus vivamus
***

Группа: Пользователи
Сообщений: 102
Регистрация: 23.6.2006
Пользователь №: 88 814

Рейтинг: 29



Пробовал переделать под MIDP-1.0 - вроде бы и не сложно, но ограничения по памяти - не для начинающего.
А писать с ноля - лень.
Если у кого есть желание оптимизировать - выкладываю переделанные исходники, ошибок по компиляции нет, но при запуске выдаёт java.lang.OutOfMemoryError.
Прикрепленный файл src_MIDP1.rar   ( 26.44 килобайт ) Кол-во скачиваний: 222
Прикрепленный файл src_MIDP1.rar   ( 26.44 килобайт ) Кол-во скачиваний: 222
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
IceflaSh
сообщение 30.9.2006, 16:09


Интересующийся
**

Группа: Пользователи
Сообщений: 45
Регистрация: 26.6.2006
Пользователь №: 89 149
Модель телефона: e398
Прошивка: Rokr

Рейтинг: 5



Цитата(Грустный @ Понедельник, 25 Сентября 2006, 11:24)
Нашёл книжку "Programming Game AI by Example" by Mat Buckland.
Пробую паттерн StateMchine.
*


Можешь дать работающий линк? немогу найти :(
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Делаю Тетрис - Присоединяйтесь., Сделай игру на свой вкус. · Разработка Java-игр · Forum
 

6 страниц V < 1 2 3 4 > » 
Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.4.2024, 18:26

Форум живёт: