Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
1

Как остановить или приостановить игру

02.03.2019, 04:57. Показов 2980. Ответов 10

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Подскажите пожалуйста, как остановить или приостановить игру.
Вот примерно такой код.
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
/*
  Проектирование игры
 */
package runnable;
 
/**
 *
 * @author vvm
 */
public class ThreadInterrupt2 {
 
    public static void main(String[] args) /*throws InterruptedException */ {
        try {
 
            WithoutSleep thread = new WithoutSleep();
            thread.run();
 
            throw new InterruptedException();
 
        } catch (InterruptedException ex) {
 
            System.out.println(" Это InterruptedException");
        } finally {
            System.out.println(" Это  FINALLY ");
        }
    }
 
}
 
class WithoutSleep implements Runnable {
 
    @Override
    public void run() {
        Thread cur = Thread.currentThread();
        while (!cur.isInterrupted()) {
            System.out.println("hi");
            /* Тут игра */
          // cur.interrupt(); // прервать  - возможный вариант из самой игры
        }
        // System.out.println("Interupted");
    }
}

Где комментарий /* Тут игра */ будет игра.
Как игру безопасно приостановить, остановить, запустить заново.
У меня вроде нет доступа к cur.isInterrupted() извне.
cur.interrupt(); - так я могу прервать игру из самой игры.

Но как её поставить на паузу и запустить заново?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2019, 04:57
Ответы с готовыми решениями:

Как остановить и приостановить BackgroundWorker?
Как полностью остановить поток Пробовал так: private void ButSpeed_Click(object sender,...

Как приостановить игру при нажатии на кнопку?
Я создал игру тетрис на js.А как сделать,чтоб при нажатии на кнопку игра приостанавливалась.

Как остановить или указать начальное значение для таймера в Reactive Extensions
Хай народ, мне нужно сделать свой таймер, потому что стандартный System.Timers.Timer работает...

Как установить программу или игру в Linux
кто имеет опыт в установке программы или игры от windows на Linux скиньте плиз подробный мануал, я...

10
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
02.03.2019, 12:29 2
...

Добавлено через 2 минуты
Thread thread = new Thread("name", сюда класс типа Runnable)

и потом thread.start();
0
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
02.03.2019, 14:53  [ТС] 3
ArtemFM, Мне не нужно thread стартовать. Он у меня итак уже стартует.
Мне нужно только поставить на паузу и потом снова запустить.
И потом, как вы предлагаете, это будет новый thread.
А мне нужно тот же самый. Остановить и затем вывести из спячки.
0
3572 / 2173 / 570
Регистрация: 02.09.2015
Сообщений: 5,491
02.03.2019, 15:05 4
https://stackoverflow.com/ques... e-a-thread
1
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
02.03.2019, 19:00 5
я предлагаю тебе создать объект не как ты сделал:
Java
1
2
   WithoutSleep thread = new WithoutSleep();
   thread.run();
а использовать Thread(Runnable r):

Java
1
2
   Thread thread = new Thread(new WithoutSleep())
   thread.start();
Добавлено через 1 минуту
поток так и будет один, просто Thread упростит тебе задачу, ибо имеет больше методов, чем интерфейс Runnable
1
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
02.03.2019, 19:19  [ТС] 6
Спасибо всем. Вопрос решен. Нашел более менее приемлемое решение.
Немного адаптировать к своей игре осталось.
0
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
03.03.2019, 23:52  [ТС] 7
Другая проблема выскочила в методе public void render():

super.createBufferStrategy(2); // хватаю исключение в этой строчке

Поток выполняется
Exception in thread "Thread-0" java.lang.IllegalStateException: Component must have a valid peer
0
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
04.03.2019, 16:12 8
был бы при много благодарен за то, если б Вы выложили код )
0
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
04.03.2019, 16:37  [ТС] 9
У меня render такой получился:
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
public  void render() {
        //this.createBufferStrategy(2);
      //  bufferStrategy = this.getBufferStrategy();
       //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //bs = this.getBufferStrategy();
        //BufferStrategy bs = getBufferStrategy();
        /* if (bs == null) {
            createBufferStrategy(2); //создаем BufferStrategy для нашего холста
            requestFocus();
            return;
        }*/
        //Graphics g = new Graphics();
        // Graphics g = bs.getDrawGraphics(); //получаем Graphics из созданной нами BufferStrategy
         //super.createBufferStrategy(2);
        // super.createBufferStrategy(1);
       /* super.createBufferStrategy(1);
          bufferStrategy = super.getBufferStrategy();*/
          setVisible(true);
          super.createBufferStrategy(1);
          bufferStrategy = super.getBufferStrategy();
          //bufferStrategy.show();
        Graphics g = bufferStrategy.getDrawGraphics();//.getDrawGraphics();
         
        // Graphics g = super.getGraphics();
        //Color bg = new Color(0.0F, 0.0F, 0.0F); // черный фон
        Color bg = new Color(1.0F, 1.0F, 0.0F); // желтый фон
 
        g.setColor(bg);
        g.fillRect(0, 0, getWidth(), getHeight()); //заполнить прямоугольник
 
        // hero.draw(g, 20, 20); // тут была ошибка, вставить код после g.fillRect перед g.dispose();
        hero.draw(g, x, y);
        g.dispose();
        // bs.show(); //показать
        bufferStrategy.show();
    }

Класс я сделал так:
class Task extends Canvas implements Runnable {} Он у меня не public.

Основной класс старта игры:
Java
1
2
3
4
5
6
7
8
9
10
public class GameStart {
 
    public static void main(String[] args) {
        final Task task = new Task(); // стартуем новую задачу
        new Thread(task).start();
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                // создали фрейм игры
                JFrame frmMainWindow = new JFrame(TITLE_OF_GAME);
Это наверное неправильно.
В самой задаче скорее всего нужно использовать класс.
Типа class Game extends Canvas.

Добавлено через 2 минуты
Всё как-то запуталось на пустом месте.
0
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
04.03.2019, 16:47 10
что за игру ты делаешь?
0
729 / 435 / 66
Регистрация: 22.12.2013
Сообщений: 2,292
Записей в блоге: 19
04.03.2019, 23:24  [ТС] 11
Нет не то чтобы прямо так делаю. Хотелось бы спроектировать некоторую заготовку для игры.
Как каркас. Игра простая ну загружаю изображение, препятствия какие-то двигаю героя сталкиваюсь с препятствиями.
2d. Почему BufferStrategy? и нахрена я вообще полез в глубину низкого уровня? Чтобы я смог применить некоторые эффекты.
Сейчас вот как-то разделить где UI где логика игры где управление. Как-то так.
Как-то спроектировать. Иначе всё запутывается.

Добавлено через 20 минут
Видите. Больше вопросов возникает по проектированию. А не по написанию кода.
0
04.03.2019, 23:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2019, 23:24
Помогаю со студенческими работами здесь

Можно ли запретить или временно приостановить удаление дочерних объектов?
Доброго времени суток! Ситуация: Делегат, в делегате создаю свой ComboBox, в котором есть...

Создание изображения и тайтов или как написать игру?
Помогите советом. Делаю простенькую игру.(по внешнему виду а’ля цивилизация) Вот соображения:...

Как запустить игру c расширением iso или mdf?
Как запустить игру c расшрением iso,mdf:)

Как написать игру или программу на iPhone/iPad
Здравствуйте, меня интерисует такой вопрос: как написать игру или программу для iPhone/iPad, какой...

С чего начать писать игру или как пишутся игры?
Мой курсовой проект - игра по типу BomberMan. Посоветуйте книгу, где пишется про создание игр...

Как создать онлайн игру Орел Или Решка между пользователями на AJAX?
Как создать онлайн игру Орел Или Решка между пользователями на AJAX?


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru