motofan logo
> 

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

Грустный
сообщение 20.9.2006, 7:30


Dum vivimus vivamus
***

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

Рейтинг: 29



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

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

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

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

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

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


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

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

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

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

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


Dum vivimus vivamus
***

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

Рейтинг: 29



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

Некая сущьность может находится в нескольких состояниях. Каждое состояние определяем классом. В классе можно определить действия, которые надо выполнить при входе в состояние (enter), при выходе (exit) и в игровом цикле (execute).
Пример:
Каждый пункт меню (MenuItem) может быть в двух состояниях - выделенном (StateSelected) и невыделенном (StateUnselected).
При входе в каждое из этих состояний меняем цвет пункта и шрифта:
Код
((MenuItem)item).setColor(((MenuItem)item).m_Menu.m_Style.UnselColor);
((MenuItem)item).setFontColor(((MenuItem)item).m_Menu.m_Style.UnselFontColor);

Использование:
Для простоты применения определяем интерфейс состояния:
Код
public interface IState {
    public void enter(IBaseEntity entity);
    public void execute(IBaseEntity entity);
    public void exit(IBaseEntity entity);
}

В классе состояния используем паттерн Singleton («одиночка»):
Конструктор делаем «приватным»:
Код
    private StateUnselected(){}

храним ссылку на этот класс
Код
    private static StateUnselected instance;

и «публичный» метод для доступа:
Код
    public static StateUnselected getInstance(){
 if (null == instance){
     instance=new StateUnselected();
 }
 return instance;
    }

В результате у нас всегда будет всего один экземпляр StateUnselected.

В классе имеющем состояния определяем объект класса StateMachine:
Код
private StateMachine m_StateMachine;

Для доступа к нему публичный метод:
Код
   public StateMachine getStateMachine(){
       return m_StateMachine;
   }

В реализации меню применяю ещё один интересный паттерн Command.
Я обозвал его Action чтобы не путать с Command из JDK.
Смысл Action такой же как и Command из JDK – выполнить действия, не зная ничего о их природе.
Пример:
Отобразить главное меню (перевести Engine в состояние StateOnMenu)
В Engine определяем класс
Код
   public class MainMenu implements IAction {
       public void execute() {
           m_StateMachine.changeState(StateOnMenu.getInstance());
       }
   }

В MenuItem, который реализует интерфейс ActionHolder, передаём указатель на MainMenu через setAction().
В Menu при нажатии FIRE вызываем MainMenu.Execute():
Код
((IActionHolder) MenuItem.getAction().execute();

При этом MenuItem совершенно не важно, что он запускает.

Возможно, мои объяснения не слишком ясны.
Рекомендую почитать:
С.Стелтинг, О.Маассен - "Применение шаблонов JAVA"
"Java Design Patterns: A Tutorial" By James W. Cooper
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме
Грустный   Делаю Тетрис - Присоединяйтесь.   20.9.2006, 7:30
Грустный   Версия 1.0.1 - под любое разрешение (в разумных пр...   21.9.2006, 4:37
Грустный   Разобрался, почему не правильно работает на телефо...   22.9.2006, 6:07
Грустный   Проверил на V180 - с кнопками таже история, что и ...   24.9.2006, 22:17
Грустный   Нашёл книжку "Programming Game AI by Example...   25.9.2006, 3:24
IceflaSh   Можешь дать работающий линк? немогу найти :(   30.9.2006, 16:09
Грустный   Странно, яндекс выдал кучу ссылок :) Я брал боль...   2.10.2006, 0:51
belpilgrim   кнопки надо проверять через if(getGameAction(keyC...   25.9.2006, 5:33
Грустный   это если Canvas.keyPressed() а если GameCanvas.g...   25.9.2006, 22:36
Andy51   Грустный, помнится, я тоже разбирался с кнопками. ...   26.9.2006, 13:14
Грустный   Andy51, я проверял на V180 - именно nextInt(int) н...   27.9.2006, 0:22
dmtrlbdv   В Вашем наследнике от GameCanvas в конструкторе ...   26.9.2006, 15:16
wl`   cldc к этому не имеет никакого отношения, nextInt(...   27.9.2006, 6:04
Грустный   А как тогда понимать: Из документации WTK22: Из ...   27.9.2006, 23:21
wl`   с моторами никогда не работал, но мне кажется не с...   28.9.2006, 4:55
Грустный   У разных производителей разные коды софиклавиш. П...   28.9.2006, 5:30
wl`   вообще, под разные модели телефонов делают разные ...   28.9.2006, 5:55
Грустный   Пока проверял на Сони-эриксон k700, Нокиа 7270, Са...   28.9.2006, 6:11
wl`   ну, к примеру, на моей NGAGE QD не работает (MIDP1...   28.9.2006, 6:44
Грустный   всё таки Game API - сдандарт только с MIDP2.0, пр...   28.9.2006, 6:57
Грустный   Пробовал переделать под MIDP-1.0 - вроде бы и не с...   28.9.2006, 23:41
Грустный   Версия 1.2.1: Показывает (и сохраняет в RecordSou...   4.10.2006, 0:55
Stranger   Просмотрел твои исходники. Не знаю, зачем так все ...   4.10.2006, 6:21
wl`   Stranger, загляни в jar и ты увидишь, что обфускат...   4.10.2006, 18:05
Грустный   wl`, спасибо. Stranger. Java, всё таки, ОО, и...   4.10.2006, 23:29
Грустный   Stranger, спасибо за идею :) использовать ByteAr...   5.10.2006, 0:30
Inferpse   Скачал тетрис из этого поста. Но вот кнопки ты не ...   7.10.2006, 16:41
Грустный   В классе Menu обрабатываю: Canvas.DOWN...   9.10.2006, 6:59
dmtrlbdv   Грустный С реалкодинга не скачал (ссылка не работ...   7.10.2006, 20:46
Stranger   dmtrlbdv, в ближайшее время я постараюсь написать...   8.10.2006, 17:10
Грустный   Информация по StateMashin (и много другой интересн...   9.10.2006, 23:44
dmtrlbdv   Другое дело clap;applo Теперь , чтобы кому-то ра...   10.10.2006, 20:57
Грустный   Версия 1.2.2 Изменения: - Наконец-то разобрался с...   12.10.2006, 3:34
Stranger   Наведи порядок, пожалуйста, в теме. Вынеси все важ...   12.10.2006, 7:20
Грустный   [b]Тетрис [size=5][b]А теперь и Линии Проект созда...   12.10.2006, 23:41
neurosurg   [size=5][b]Тетрис ... Пследняя версия 2.1.2: Исх...   18.3.2007, 7:32
Frozen Fire   Что-то в исходниках одна картинка...   13.10.2006, 4:54
Грустный   А она одна и есть :) , остальное рисуется - зато ...   15.10.2006, 21:48
dmtrlbdv   Он имел ввиду , что там ТОЛЬКО картинка   15.10.2006, 21:56
Грустный   Версия 2.0.0: - Добавил звук (см. tetris.AudioPlay...   17.10.2006, 1:15
Грустный   Версия 2.1.0: Переключение языка - Русский/Английс...   17.10.2006, 5:22
Ganja_   посмотрел игру - на V80 работает идеально :) тока ...   19.10.2006, 23:11
Грустный   там просто на две позиции сразу опускается звук ка...   20.10.2006, 0:16
Грустный   Версия 2.1.2 Убрал мелкие огрехи: - в режиме ...   29.10.2006, 23:42
y(x)   на siemens c75 нормально работает, только чтобы сд...   2.11.2006, 10:24
Грустный   Есть, специально, режим "Slide - OFF".   2.11.2006, 22:52
y(x)   Грустный, тогда не плохо было бы сделать клавишу м...   7.11.2006, 8:17
Грустный   Пробовал, мне не понравилось. Хочешь - сделай :)...   7.11.2006, 23:10
Igorek123   Грустный, спасибо за тетрис, мне понравился. а м...   11.1.2007, 14:59
Igorek123   Грустный, что разработка игры прекратилась?   11.2.2007, 8:20
neurosurg   ищу маме тетрис для Motorola W375. вот добрый полу...   18.3.2007, 0:09
Грустный   Наконец-то нашёл время заняться игрой. Новая верси...   20.4.2007, 1:42
Грустный   На базе "тетриса" сделал "линии...   26.4.2007, 4:44
Паук   Грустный, молоток! :thumbsup: Только что весь...   13.6.2007, 9:47
trump   Хорошая игрушка, на v3r идёт. Пожелания: - или доб...   13.8.2007, 22:19

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

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

 



Текстовая версия Сейчас: 16.7.2025, 3:34

Форум живёт: