Главная » Статьи » Игры на java |
конструкор для создания игр ч1.
Любая игра или приложение отображается в окне, которое можно реализовать следующими файлами:
import javax.swing.JFrame; public class GameStart { public static void main(String[] args) { GamePanel panel = new GamePanel();// создаём объект панель JFrame startFrame = new JFrame("game");// создаем окно с названием startFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// закрытие окна при клике крестика startFrame.setContentPane(panel); // перенос в фрейм панели с GamePanel startFrame.setLocationRelativeTo(null);//положение фрейма по центру startFrame.pack();//размер фрейма как и размер его компонентов panel.start();// заускаем поток панели // окно видемо startFrame.setVisible(true); } }
Второй необходимый файл -панель на которой происходят все действия... Файл GamePanel.java package kuzma; import java.awt.*; import java.awt.image.BufferedImage; import javax.swing.*; public class GamePanel extends JPanel implements Runnable { // задаём размер панели public static int WIDTH = 400;// public static int HEIGHT = 400;// private Thread thread; // Создаем поток- ссылка на обьект класса Thread private BufferedImage image; // ссылка на обьект класса private Graphics2D g; // ссылка на обьект класса private GameBack background; // конструктор public GamePanel() { super(); // активируем консруктор родителя setPreferredSize(new Dimension(WIDTH, HEIGHT)); // размер передаем в обьект класса Измерения setFocusable(true); //передаем фокус requestFocus(); // акивируем } // запуск потока public void start() { thread = new Thread((Runnable) this); thread.start();// запускаем поток } //метод от интерфейса Runnable (потока) @Override public void run() { image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); g = (Graphics2D) image.getGraphics(); background = new GameBack(); while (true) { // игровой цикл gameUpdate(); //обновление gameRender(); //перерисовка gameDraw(); ////перенос изображения на панель try { thread.sleep(33); //засыпаем на ... мс } catch (InterruptedException ex) { //если не удается заснуть- исключение ex.printStackTrace(); } } } //обновление public void gameUpdate() { //обновление background.update();// вызов метода для заднего плана } //рисуем задний план в виртуальном окне public void gameRender() { //перерисовка background.draw(g);// вызов метода для заднего плана } //перенос изображения на панель private void gameDraw() { Graphics g2 = this.getGraphics();// переоппред Graphics2d на Graphics g2.drawImage(image, 0, 0, null);// рисуем g2.dispose();// команда для уборщщика мусора } } Файл GameBack.java package kuzma; /** Задний фон игровой панели */ import javax.swing.*; import java.awt.*; public class GameBack { private Color color; Image img = new ImageIcon("res/dieta.jpg").getImage();//загрузка картинки public GameBack() { color = Color.BLUE; } public void update() { //обновление } public void draw(Graphics2D g) { //прорисовка в Graphics2D g.setColor(color);//передаём цвет граф объекту g.fillRect(0, 0, GamePanel.WIDTH, GamePanel.HEIGHT);//рисуем прямоугольную область Color newColor = new Color(200, 200, 0);//созд обьект клсса цвет g.setColor(newColor);// передаём цвет граф объекту g.fillRect(0, 0, GamePanel.WIDTH, 10);//рисуем прямоугольную область g.drawImage(img, 40, 40, null);//рисуем картинку } } | |
Просмотров: 521 | |
Всего комментариев: 0 | |