Главная » Статьи » Игры на java |
Виктор Курышев -Java разработка игры с нуля
package kuzma_bubleshooter2D; 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.add(panel); startFrame.setLocationRelativeTo(null);//полоение фрейма по центру startFrame.pack();//размер фрейма как и размер его компонентов panel.start();// заускаем поток панели // окно видемо startFrame.setVisible(true); } } ______________________________________________________________________________ package kuzma_bubleshooter2D; 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(); // активируем консруктор родителя JPanel 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();// команда для уборщщика мусора } } ______________________________________________________________________ kage kuzma_bubleshooter2D; /** Задний фон игровой панели */ 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, 20);//рисуем прямоугольную область } } | |
Просмотров: 445 | |
Всего комментариев: 0 | |