Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
7 / 7 / 2
Регистрация: 01.03.2013
Сообщений: 142

Не работает меню

29.12.2013, 23:51. Показов 751. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасте, делаю игру пин-понг. Дошел до того момента, когда нужно сделать меню для игры(Play, Options, Quit), вроде как всегда все нормально, но не работает. Не знаю по чему.
На рассмотрение 3-и класса:

Faild - поле с отрисовкой всех объектов, в методе draw проверяем ели State == STATE.GAME то работает игра, а если State == STATE.MENU то запускаем меню, за меню отвечает класс Menu.

Menu - там изображаем текст и кнопки, название игры. Задаем координаты для всех объектов в меню.

MouseInput - класс, который отслеживает куда нажал пользователь, если координаты совпали то меняем значение State == STATE.GAME и игра запускается(но у меня запуск не происходит). Когда уже в игре я нажимаю на Play, значение меняется на State == STATE.GAME (проверил в консоле), но я что думаю что по своей не опытности упустил какой то момент в классе Faild. Прошу помочь мне в этом разобраться.

Field
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
public class Field extends JPanel implements ActionListener {
    Image dbImage;
    Graphics dbg;
    
/*класс шарик*/
    Ball b = new Ball(193, 143);
 
/*Менюшка*/  
        Menu menu;
 
/*Значения для меню*/    
    public static enum STATE {
        MENU,
        GAME
    };
 
/*По умолчанию */    
    public static STATE State = STATE.MENU;
 
/*Конструктор*/  
    public Field() {
/*класс отрисовки меню*/
            menu = new Menu();
            
            Runnable r = b;
            
            Thread rt = new Thread(r);
            rt.start();
            
            
            Thread p1 = new Thread(b.p1);
            Thread p2 = new Thread(b.p2);
            p1.start();
            p2.start();
            
        
            addKeyListener(new AL());
 
/*Событие нажатия на мишку*/
                        addMouseListener(new MouseInput());
            setFocusable(true); 
        
    }
        
    public void paint(Graphics g) { 
        dbImage = createImage(getWidth(), getHeight());
        dbg = dbImage.getGraphics();
        draw(dbg);
        g.drawImage(dbImage, 0, 0, this);
    }
 
/*Вот здесь происходит отрисовка, если State == STATE.GAME тогда только рисуем*/
    public  void draw(Graphics g) {
        if(State == STATE.GAME) {
            b.draw(g);
            b.p1.drow(g);
            b.p2.drow(g);
            
            g.setColor(Color.WHITE);
            g.drawString("" + b.p1Score, 55, 20);
            g.drawString("" + b.p2Score, 330, 20);
            
            repaint();
        } 
/*По умолчанию у нас State == STATE.MENU, значит отрисовка  происходит в классе menu*/              
              else if(State == STATE.MENU){
            menu.render(g);
        }
    }
    
    public  class AL extends KeyAdapter {
        
            public void keyPressed(KeyEvent e) {
                b.p1.keyPressed(e);
                b.p2.keyPressed(e);
            }
        
            public void keyReleased(KeyEvent e) {
                b.p1.keyReleased(e);
                b.p2.keyReleased(e);
            }
        
    }
 
}


Menu
Кликните здесь для просмотра всего текста
Здесь все я думаю что все нормально
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Menu {
    
    Rectangle playButton = new Rectangle(160, 100, 75, 45);
    Rectangle optionButton = new Rectangle(160, 150, 100, 45);
    Rectangle quitButton = new Rectangle(160, 200, 75, 45);
    
    
    public void render(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        
        Font fnt = new Font("arial", Font.BOLD, 25);
        g.setFont(fnt);
        g.setColor(Color.WHITE);
        g.drawString("Ping-Pong", 130, 50);
        
        Font fnt1 = new Font("arial", Font.BOLD, 18);
        g.setFont(fnt1);
        g.drawString("Play", playButton.x+25, playButton.y+30);
        g2d.draw(playButton);
        g.drawString("Option", optionButton.x+25, optionButton.y+30);
        g2d.draw(optionButton);
        g.drawString("Quit", quitButton.x+25, quitButton.y+30);
        g2d.draw(quitButton);
    }

MouseInput
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class MouseInput implements MouseListener{
 
    
    public void mousePressed(MouseEvent e) {
        int mx = e.getX();
        int my = e.getY();
        /*
        Rectangle playButton = new Rectangle(160, 100, 75, 45);
        Rectangle optionButton = new Rectangle(160, 150, 100, 45);
        Rectangle quitButton = new Rectangle(160, 200, 75, 45);
    
    
         * */
        
        /*если попали по координатам, то выполняем условие*/
        if(mx >= 160 && mx <= 260) {
            if(my >= 100 && my<= 150) {
 
/*Меняем значение на Field.STATE.GAME*/
                Field.State = Field.STATE.GAME;
 
/*Для проверки вывод в консоль название кнопки*/
                System.out.println("Play");
 
/*Выводит в консоле GAME, т.е значение меняется в классе Field на Field.STATE.GAME, но толку от этого 0*/
                System.out.println(Field.State);
            }
        }
        
    
        /*exit*/
        if(mx >= 160 && mx <= 260) {
            if(my >= 200 && my<= 300) {
                System.exit(1);
                
            }
        }
        
        
    }
 
    
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.12.2013, 23:51
Ответы с готовыми решениями:

Не работает меню. Должно скрывать меню и раскрывать.
Беда в том, что меню не работает в JS. Должно скрывать меню и раскрывать. &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; ...

Меню не работает. Кнопки меню не активны
ссылка на программу, она сюда не помещается

Не работает меню
Хочу создать меню для загрузки файла, но столкнулся с такой проблемой: при использовании метода document.writeln() почему-то заменяется...

3
Java, C# - Expert
 Аватар для IceSqueez
69 / 69 / 12
Регистрация: 09.08.2011
Сообщений: 284
30.12.2013, 07:18
Не знаю, может я не прав, но я не где не увидел что-бы вы добавляли меню в форму/панель.
По моему для самой менюшки надо использовать JMenuBar ибо Menu это сам элемент JMenuBar'a ( Файл, Правка и т.д. )
1
7 / 7 / 2
Регистрация: 01.03.2013
Сообщений: 142
30.12.2013, 14:37  [ТС]
Цитата Сообщение от IceSqueez Посмотреть сообщение
Не знаю, может я не прав, но я не где не увидел что-бы вы добавляли меню в форму/панель.
По моему для самой менюшки надо использовать JMenuBar ибо Menu это сам элемент JMenuBar'a ( Файл, Правка и т.д. )
Ну я просто на форму добавляю текст, а в MouseInput смотрю если координаты нажатия мишки совпали с кнопкой то что то делаем. Вот так оно выглядит(картинка)
Миниатюры
Не работает меню  
0
Java, C# - Expert
 Аватар для IceSqueez
69 / 69 / 12
Регистрация: 09.08.2011
Сообщений: 284
30.12.2013, 15:07
А почему Вы тогда просто не будете использовать JButton's ?? а что-бы придать вид переопределяете LookAndFeel, думаю так проще будет. А дальше не надо даже координаты сверять, ActionListener и погнал ваять код.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.12.2013, 15:07
Помогаю со студенческими работами здесь

Не работает меню
В конструкторе где мне нужно делать пишу такое: QTableView* tableView = new QTableView(); .................................. ...

не работает меню(
Сайт: http://kreml-in.ru/. Меню на ajax, все работало до того как я поковырялся) Ошибка: Parse error: syntax error, unexpected '}' in...

Не работает меню
Выложил сайт на хостинг и перестало работать меню. При нажатии на любой пункт ничего не происходит. Сайт пилил в dreamweaver, там всё...

Не работает меню
Не работают блоки div.button a.roll: и div#button a.roll &lt;div align=&quot;left&quot; style=&quot;float:left; margin:20px;&quot;&gt; ...

Не работает меню
помогите найти ошибку, надо что бы при запуске программа выдавала меню. при нажатии на кнопку 1 программа должна вывести на экран график...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru