Код IT
← Каталог

Java — Java Survivors — Этап 0 — минимальный запускаемый код

Фрагмент из «Java — Java Survivors»: Этап 0 — минимальный запускаемый код.

java spinoffencyclopedia9-04-razrabotka-igr-praktikum-razrabotki-igr-8 embed URL статья в энциклопедии
Java main.java
package com.survivors;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;

public final class SurvivorsGame {
    private static final int WIDTH = 960;
    private static final int HEIGHT = 540;

    public SurvivorsGame() {
        JFrame frame = new JFrame("Java Survivors — этап 0");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setContentPane(new GamePanel());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    static final class GamePanel extends JPanel implements Runnable {
        private volatile boolean running = true;
        private final Thread loop = new Thread(this, "game-loop");

        GamePanel() {
            setPreferredSize(new Dimension(WIDTH, HEIGHT));
            setBackground(new Color(17, 17, 20));
            setFocusable(true);
            loop.start();
        }

        @Override
        public void run() {
            long prev = System.nanoTime();
            while (running) {
                long now = System.nanoTime();
                double dt = (now - prev) / 1_000_000_000.0;
                prev = now;
                dt = Math.min(dt, 0.033);

                update(dt);
                repaint();

                try {
                    Thread.sleep(8);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                    running = false;
                }
            }
        }

        private void update(double dt) {
            // пока пусто
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(new Color(28, 28, 36));
            g.fillRect(0, 0, getWidth(), getHeight());
            g.setColor(new Color(200, 200, 210));
            g.drawString("Этап 0 — игровой цикл работает", 24, 32);
        }
    }
}
package com.survivors;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;

public final class SurvivorsGame {
    private static final int WIDTH = 960;
    private static final int HEIGHT = 540;

    public SurvivorsGame() {
        JFrame frame = new JFrame("Java Survivors — этап 0");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setContentPane(new GamePanel());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    static final class GamePanel extends JPanel implements Runnable {
        private volatile boolean running = true;
        private final Thread loop = new Thread(this, "game-loop");

        GamePanel() {
            setPreferredSize(new Dimension(WIDTH, HEIGHT));
            setBackground(new Color(17, 17, 20));
            setFocusable(true);
            loop.start();
        }

        @Override
        public void run() {
            long prev = System.nanoTime();
            while (running) {
                long now = System.nanoTime();
                double dt = (now - prev) / 1_000_000_000.0;
                prev = now;
                dt = Math.min(dt, 0.033);

                update(dt);
                repaint();

                try {
                    Thread.sleep(8);
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                    running = false;
                }
            }
        }

        private void update(double dt) {
            // пока пусто
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(new Color(28, 28, 36));
            g.fillRect(0, 0, getWidth(), getHeight());
            g.setColor(new Color(200, 200, 210));
            g.drawString("Этап 0 — игровой цикл работает", 24, 32);
        }
    }
}