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

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

Грустный
сообщение 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
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 20.9.2006, 7:30


Dum vivimus vivamus
***

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

Рейтинг: 29



Грустный. Понедельник, 18 Сентября 2006, 16:59
Цитата
По-видимому, как и многие, кто просматривает этот форум, я отношусь к категории начинающих разработчиков  .

Начинать какое-либо дело в одиночку – трудно.
Поэтому выношу предложение:
Создать учебный проект по написанию приложений для телефонов.
И шаг за шагом совместно двигаться вперёд.

Меня смущают темы, на которых народ берётся сразу за «гонки», «браузеры» и т.д.

Предлагаю начать с простого – тетрис, арканоид и т.п.

Если кого заинтересовало – поддержите  .

Valleo. Понедельник, 18 Сентября 2006, 17:17
Цитата
Это не простейшее, легче сделать броузер, чем тетрис или арканоид.
Самое легкое - это вывод hellowworld на экране дисплея.
...
...
Причина закрытия (Valleo 18-09-2006): Дублирует существующую тему


Я не считаю, что написать тетрис на яве сложно.

За пару дней получилось кое-что.

Экранчики:
Прикрепленное изображение
Прикрепленное изображение

На данный момент:
- на эмуляторах идёт, на моём V360 - только меню
- хотелось бы уличшить дизайн
- добавить звук

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


Dum vivimus vivamus
***

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

Рейтинг: 29



Версия 1.0.1 - под любое разрешение (в разумных пределах).

Сообщение отредактировал Грустный - 13.10.2006, 0:40
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 22.9.2006, 6:07


Dum vivimus vivamus
***

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

Рейтинг: 29



Разобрался, почему не правильно работает на телефоне:
у эмулятора и телефона не совпадают клавиши (например "круглаш" на эмулаторе даёт "FIRE_PRESSED", а не телефоне нидаёт ничего)

Кроме того, доработал совместимость с CLDC 1.0 (у супруги V180).
Пришлось добавить класс MyRandom вместо java.util.Random (в CLDC 1.0 нет nextInt(int))


Код

// взято из документации J2ME Wireless Toolkit 2.2
import java.util.Random;

public class MyRandom extends Random {
 public int nextInt(int n) {
     if (n<=0)
         throw new IllegalArgumentException("n must be positive");

     if ((n & -n) == n)  // i.e., n is a power of 2
         return (int)((n * (long)next(31)) >> 31);

     int bits, val;
     do {
         bits = next(31);
         val = bits % n;
     } while(bits - val + (n-1) < 0);
     return val;
 }
}


Проверено на SE K700.
С кнопками всё соответствует эмулятору.

Сообщение отредактировал Грустный - 13.10.2006, 0:49
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 24.9.2006, 22:17


Dum vivimus vivamus
***

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

Рейтинг: 29



Проверил на V180 - с кнопками таже история, что и на v360 - не соответствуют эмулятору :(
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 25.9.2006, 3:24


Dum vivimus vivamus
***

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

Рейтинг: 29



Нашёл книжку "Programming Game AI by Example" by Mat Buckland.
Пробую паттерн StateMchine.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
belpilgrim
сообщение 25.9.2006, 5:33


Мастер
****

Группа: Пользователи
Сообщений: 193
Регистрация: 14.10.2005
Из: Беларусь
Пользователь №: 54 460
Модель телефона: HTC G1, E770
Прошивка: 1.5 v3, VistaRTM

Рейтинг: 117



кнопки надо проверять через
if(getGameAction(keyCode) == FIRE) {
.. ура нажали FIRE, причем на всех телах и эмуляторах
}
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 25.9.2006, 22:36


Dum vivimus vivamus
***

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

Рейтинг: 29



Цитата(belpilgrim @ Понедельник, 25 Сентября 2006, 16:33)
кнопки надо проверять через
if(getGameAction(keyCode) == FIRE) {
.. ура нажали FIRE, причем на всех телах и эмуляторах
}
*



это если Canvas.keyPressed()
а если GameCanvas.getKeyStates(), то
Код
if ((key & GameCanvas.FIRE_PRESSED) != 0){...}


Пробовал в GameCanvas использовать keyPressed() - вроде как наследуется от Canvas.
В наследнике Canvas достаточно:
Код
protected void keyPressed(int keyCode)
{
...
}


В GameCanvas не вызывается.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 26.9.2006, 13:14


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



Грустный, помнится, я тоже разбирался с кнопками. В wtk, вроде, константы кнопок правильно заданы, но они не совпадают с раскладкой эмулятора из Motorola SDK - там у констант знак не тот :(
А GameCanvas.getKeyStates() чем плох - он выдаст далеко не все клавиши, которые вводит юзер... Там вроде есть группы клавиш, имеющие одинаковое значение. А чем хорош - можно сделать обработку одновременных нажатий :)
Цитата
в CLDC 1.0 нет nextInt(int)
blink.gif я же его юзал на 372 прошивке, с CLDC1.0
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dmtrlbdv
сообщение 26.9.2006, 15:16


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

Группа: Пользователи
Сообщений: 32
Регистрация: 26.9.2006
Из: Питер
Пользователь №: 100 712
Модель телефона: nokia 3230

Рейтинг: 0



Цитата
Пробовал в GameCanvas использовать keyPressed() - вроде как наследуется от Canvas.
В наследнике Canvas достаточно:
CODE
protected void keyPressed(int keyCode)
{
...
}
В GameCanvas не вызывается.


В Вашем наследнике от GameCanvas в конструкторе должно быть так

// false разрешает "старый" метод обработки клавиш
super(false);

тогда keyPressed будет отрабатывать.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Грустный
сообщение 27.9.2006, 0:22


Dum vivimus vivamus
***

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

Рейтинг: 29



Andy51, я проверял на V180 - именно nextInt(int) нет, есть nextInt() :( (кстати на эмуляторе V180 тоже ругается на nextInt(int))
Цитата(Andy51 @ Среда, 27 Сентября 2006, 0:14)
blink.gif я же его юзал на 372 прошивке, с CLDC1.0


dmtrlbdv - спасибо большое.
Работает. clap;applo

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

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

 



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

Форум живёт: