<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java 游戲基礎 > 原文: [https://zetcode.com/tutorials/javagamestutorial/basics/](https://zetcode.com/tutorials/javagamestutorial/basics/) 在 Java 2D 游戲教程的這一部分中,我們將介紹創建游戲所需的一些基礎知識。 我們創建一個基本應用,繪制一個甜甜圈,并顯示圖片。 ## 關于 這是 Java 2D 游戲教程。 它是針對初學者的。 本教程將教您使用 Java 編程語言和 Swing GUI 工具箱進行 2D 游戲編程的基礎。 可以在此處下載本教程中使用的圖像。 ## 應用 在本教程中,我們將顯示每個游戲的框架。 `Board.java` ```java package com.zetcode; import javax.swing.JPanel; public class Board extends JPanel { public Board() {} } ``` `Board`是進行游戲的面板。 `Application.java` ```java package com.zetcode; import java.awt.EventQueue; import javax.swing.JFrame; public class Application extends JFrame { public Application() { initUI(); } private void initUI() { add(new Board()); setSize(250, 200); setTitle("Application"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); } public static void main(String[] args) { EventQueue.invokeLater(() -> { Application ex = new Application(); ex.setVisible(true); }); } } ``` 這是游戲的切入點。 這里我們有`main`方法。 ```java add(new Board()); ``` 在這里,我們將`Board`放置在`JFrame`容器的中心。 ```java setSize(250, 200); ``` 此行設置窗口的大小。 ```java setDefaultCloseOperation(EXIT_ON_CLOSE); ``` 當我們單擊關閉按鈕時,這將關閉應用。 這不是默認行為。 ```java setLocationRelativeTo(null); ``` 將`null`傳遞給`setLocationRelativeTo()`方法時,窗口將在屏幕上居中。 ```java public static void main(String[] args) { EventQueue.invokeLater(() -> { Application ex = new Application(); ex.setVisible(true); }); } ``` 我們創建代碼示例的實例,并使它在屏幕上可見。 ## 甜甜圈 板上的對象可以是圖像,也可以使用 Java 2D API 提供的繪畫工具繪制。 在下一個示例中,我們繪制一個甜甜圈形狀。 `Board.java` ```java package com.zetcode; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; import javax.swing.JPanel; public class Board extends JPanel { @Override public void paintComponent(Graphics g) { super.paintComponent(g); drawDonut(g); } private void drawDonut(Graphics g) { Graphics2D g2d = (Graphics2D) g; RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.setRenderingHints(rh); Dimension size = getSize(); double w = size.getWidth(); double h = size.getHeight(); Ellipse2D e = new Ellipse2D.Double(0, 0, 80, 130); g2d.setStroke(new BasicStroke(1)); g2d.setColor(Color.gray); for (double deg = 0; deg < 360; deg += 5) { AffineTransform at = AffineTransform.getTranslateInstance(w/2, h/2); at.rotate(Math.toRadians(deg)); g2d.draw(at.createTransformedShape(e)); } } } ``` 繪畫是在`paintComponent()`方法內完成的。 ```java private void drawDonut(Graphics g) { ... } ``` 將實際繪畫委派給特定方法是一種很好的編程習慣。 ```java Graphics2D g2d = (Graphics2D) g; ``` `Graphics2D`類擴展了`Graphics`類。 它提供了對幾何圖形,坐標轉換,顏色管理和文本布局的更復雜的控制。 ```java RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.setRenderingHints(rh); ``` 渲染提示用于使繪圖平滑。 ```java Dimension size = getSize(); double w = size.getWidth(); double h = size.getHeight(); ``` 我們得到窗口的高度和寬度。 我們需要它們將甜甜圈形狀在窗口上居中。 ```java Ellipse2D e = new Ellipse2D.Double(0, 0, 80, 130); g2d.setStroke(new BasicStroke(1)); g2d.setColor(Color.gray); ``` 在這里,我們創建橢圓。 ```java for (double deg = 0; deg < 360; deg += 5) { AffineTransform at = AffineTransform.getTranslateInstance(w/2, h/2); at.rotate(Math.toRadians(deg)); g2d.draw(at.createTransformedShape(e)); } ``` 在此,橢圓旋轉 72 次以創建一個甜甜圈形狀。 `Donut.java` ```java package com.zetcode; import java.awt.EventQueue; import javax.swing.JFrame; public class DonutExample extends JFrame { public DonutExample() { initUI(); } private void initUI() { add(new Board()); setSize(330, 330); setTitle("Donut"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); } public static void main(String[] args) { EventQueue.invokeLater(() -> { DonutExample ex = new DonutExample(); ex.setVisible(true); }); } } ``` 這是主要的類。 ## 繪制圖像 當我們創建計算機游戲時,我們經常使用圖像。 在下一個示例中,我們加載圖像并將其繪制在板上。 如果找不到圖像文件,請查看 Java 教程中的[顯示圖像](/java/displayimage/)。 `Board.java` ```java package com.zetcode; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JPanel; public class Board extends JPanel { private Image bardejov; public Board() { initBoard(); } private void initBoard() { loadImage(); int w = bardejov.getWidth(this); int h = bardejov.getHeight(this); setPreferredSize(new Dimension(w, h)); } private void loadImage() { ImageIcon ii = new ImageIcon("src/resources/bardejov.png"); bardejov = ii.getImage(); } @Override public void paintComponent(Graphics g) { g.drawImage(bardejov, 0, 0, null); } } ``` 我們為董事會制作了一個城鎮形象。 圖像繪制在`paintComponent()`方法內部。 ```java ImageIcon ii = new ImageIcon("src/resources/bardejov.png"); ``` 我們創建一個`ImageIcon`。 ```java bardejov = ii.getImage(); ``` 我們從`ImageIcon`中得到一個`Image`。 ```java g.drawImage(bardejov, 0, 0, null); ``` 我們在窗口上繪制圖像。 ```java int w = bardejov.getWidth(this); int h = bardejov.getHeight(this); setPreferredSize(new Dimension(w, h)); ``` 我們確定圖像的寬度和高度。 面板的首選大小設置為圖像大小。 與`JFrame`的`pack()`方法配合使用時,窗口正好足以顯示圖像。 `ImageExample.java` ```java package com.zetcode; import java.awt.EventQueue; import javax.swing.JFrame; public class ImageExample extends JFrame { public ImageExample() { initUI(); } private void initUI() { add(new Board()); pack(); setTitle("Bardejov"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); } public static void main(String[] args) { EventQueue.invokeLater(() -> { ImageExample ex = new ImageExample(); ex.setVisible(true); }); } } ``` 這是示例的主要類。 ![Image](https://img.kancloud.cn/fd/3b/fd3b2491e5d8d4c5cce378fe3c17a9c3_280x240.jpg) 圖:圖像 在本章中,我們介紹了 Java 游戲編程的一些基礎知識。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看