{"id":75,"date":"2024-10-17T16:03:08","date_gmt":"2024-10-17T07:03:08","guid":{"rendered":"https:\/\/java.satoshis.jp\/?p=75"},"modified":"2024-10-31T14:23:26","modified_gmt":"2024-10-31T05:23:26","slug":"%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%a7rpg%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b-gui%e7%b7%a8","status":"publish","type":"post","link":"https:\/\/java.satoshis.jp\/?p=75","title":{"rendered":"\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u3067RPG\u3092\u4f5c\u3063\u3066\u307f\u308b &#8211; GUI\u7de8"},"content":{"rendered":"<p>RPG\u3092\u4f5c\u308b\u306b\u306f\u3001\u3084\u306f\u308aGUI\u306e\u753b\u9762\u304c\u306a\u3044\u3068\u5bc2\u3057\u3044\u3067\u3059\u306d\u3002<\/p>\n<p>\u307e\u305a\u306f\u753b\u9762\u3092\u8868\u793a\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u3053\u308c\u307e\u3067\u306f App.java \u3067\u3044\u308d\u3044\u308d\u3068\u3084\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u65b0\u3057\u304fGuiApp.java\u3092\u4f5c\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport javax.swing.JFrame;\r\nimport javax.swing.SwingUtilities\uff1b\r\n\r\npublic class GuiApp {\r\n  public static void main(String&#x5B;] args) {\r\n    JFrame f = new JFrame(&quot;RPG&quot;);\r\n    f.setSize(500, 400);\r\n    SwingUtilities.invokeLater(new WindowInvoker(f));\r\n  }\r\n  private static class WindowInvoker implements Runnable {\r\n    private JFrame frame;\r\n    public WindowInvoker(JFrame jframe) {\r\n      this.frame = jframe;\r\n    }\r\n    @Override\r\n    public void run() {\r\n      frame.pack();\r\n      frame.setVisible(true);\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>\u753b\u9762\u4e0a\u306b\u52c7\u8005\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u8868\u793a\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"brush: java; highlight: [10,11,12,13]; title: ; notranslate\" title=\"\">\r\nimport java.awt.Container;\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JFrame;\r\nimport javax.swing.JLabel;\r\nimport javax.swing.SwingUtilities;\r\n\r\npublic class GuiApp {\r\n  public static void main(String&#x5B;] args) {\r\n    JFrame f = new JFrame(&quot;RPG&quot;);\r\n    ImageIcon icon = new ImageIcon(&quot;brave.png&quot;);\r\n    JLabel lavel = new JLabel(icon);\r\n    Container pane = f.getContentPane();\r\n    pane.add(lavel);\r\n    f.setSize(500, 400);\r\n    SwingUtilities.invokeLater(new WindowInvoker(f));\r\n  }\r\n  private static class WindowInvoker implements Runnable {\r\n    private JFrame frame;\r\n    public WindowInvoker(JFrame jframe) {\r\n      this.frame = jframe;\r\n    }\r\n    @Override\r\n    public void run() {\r\n      frame.pack();\r\n      frame.setVisible(true);\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>\u52c7\u8005\u3092\u8868\u793a\u3059\u308b\u305f\u3081\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u7528\u610f\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Color;\r\n\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JLabel;\r\n\r\npublic class BraveLabel extends JLabel {\r\n  public BraveLabel() {\r\n    setIcon(new ImageIcon(&quot;brave.png&quot;));\r\n    setBackground(Color.WHITE);\r\n  }\r\n}\r\n<\/pre>\n<p>\u8349\u539f\u3092\u8868\u793a\u3059\u308b\u305f\u3081\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u7528\u610f\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Color;\r\n\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JLabel;\r\n\r\npublic class FieldLabel extends JLabel {\r\n  public FieldLabel() {\r\n    setIcon(new ImageIcon(&quot;grass.jpg&quot;));\r\n  }\r\n}\r\n<\/pre>\n<p>\u3053\u308c\u3089\u3092\u753b\u9762\u4e0a\u306b\u914d\u7f6e\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Component;\r\nimport java.awt.Container;\r\nimport java.awt.GridBagConstraints;\r\nimport java.awt.GridBagLayout;\r\n\r\nimport javax.swing.JFrame;\r\nimport javax.swing.SwingUtilities;\r\n\r\npublic class GuiApp {\r\n  public static void main(String&#x5B;] args) {\r\n    JFrame f = new JFrame(&quot;RPG&quot;);\r\n    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n    f.setSize(500, 400);\r\n    Container pane = f.getContentPane();\r\n    pane.setLayout(new GridBagLayout());\r\n    for (int i = 0; i &lt; 5; i++) {\r\n      for (int j = 0; j &lt; 4; j++) {\r\n        if (i == 2 &amp;&amp; j == 2) {\r\n          add(pane, new BraveLabel(), i, j, 1, 1);\r\n        } else {\r\n          add(pane, new FieldLabel(), i, j, 1, 1);\r\n        }\r\n      }\r\n    }\r\n    SwingUtilities.invokeLater(new WindowInvoker(f));\r\n  }\r\n\r\n  private static class WindowInvoker implements Runnable {\r\n    private JFrame frame;\r\n    public WindowInvoker(JFrame jframe) {\r\n      this.frame = jframe;\r\n    }\r\n    @Override\r\n    public void run() {\r\n      frame.setVisible(true);\r\n    }\r\n  }\r\n\r\n  static void add(Container pane,\r\n    Component comp,\r\n    int x,\r\n    int y,\r\n    int width,\r\n    int height) {\r\n  GridBagConstraints c = new GridBagConstraints();\r\n  c.fill = GridBagConstraints.BOTH;\r\n  c.gridx = x;\r\n  c.gridy = y;\r\n  c.gridwidth = width;\r\n  c.gridheight = height;\r\n  pane.add(comp, c);\r\n  }\r\n}\r\n<\/pre>\n<p>RPG\u7528\u306e\u753b\u9762\u3082\u30af\u30e9\u30b9\u3068\u3057\u3066\u7528\u610f\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport javax.swing.JFrame;\r\n\r\npublic class RpgFrame extends JFrame {\r\n  public RpgFrame() {\r\n    super(&quot;RPG&quot;);\r\n    super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n  }\r\n}\r\n<\/pre>\n<p>\u753b\u9762\u4e0a\u306b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u914d\u7f6e\u3059\u308b\u306e\u3082\u3001RpgFrame\u306e\u8cac\u4efb\u3067\u884c\u3046\u3088\u3046\u306b\u3057\u3066\u3001GuiApp\u30af\u30e9\u30b9\u306e\u4ed5\u4e8b\u3092\u6e1b\u3089\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Component;\r\nimport java.awt.Container;\r\nimport java.awt.GridBagConstraints;\r\nimport java.awt.GridBagLayout;\r\n\r\nimport javax.swing.JFrame;\r\n\r\npublic class RpgFrame extends JFrame {\r\n  public RpgFrame() {\r\n    super(&quot;RPG&quot;);\r\n    super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n    Container pane = getContentPane();\r\n    pane.setLayout(new GridBagLayout());\r\n    for (int i = 0; i &lt; 5; i++) {\r\n      for (int j = 0; j &lt; 4; j++) {\r\n        if (i == 2 &amp;&amp; j == 2) {\r\n          add(pane, new BraveLabel(), i, j, 1, 1);\r\n        } else {\r\n          add(pane, new FieldLabel(), i, j, 1, 1);\r\n        }\r\n      }\r\n    }\r\n  }\r\n  static void add(Container pane,\r\n    Component comp,\r\n    int x,\r\n    int y,\r\n    int width,\r\n    int height) {\r\n    GridBagConstraints c = new GridBagConstraints();\r\n    c.fill = GridBagConstraints.BOTH;\r\n    c.gridx = x;\r\n    c.gridy = y;\r\n    c.gridwidth = width;\r\n    c.gridheight = height;\r\n    pane.add(comp, c);\r\n  }\r\n}\r\n<\/pre>\n<p>GuiApp.java<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport javax.swing.JFrame;\r\nimport javax.swing.SwingUtilities;\r\n\r\npublic class GuiApp {\r\n  public static void main(String&#x5B;] args) {\r\n    RpgFrame f = new RpgFrame();\r\n    SwingUtilities.invokeLater(new WindowInvoker(f));\r\n  }\r\n\r\n  private static class WindowInvoker implements Runnable {\r\n    private JFrame frame;\r\n    public WindowInvoker(JFrame jframe) {\r\n      this.frame = jframe;\r\n    }\r\n    @Override\r\n    public void run() {\r\n      frame.pack();\r\n      frame.setVisible(true);\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>\u5143\u306e\u753b\u50cf\u306e\u30b5\u30a4\u30ba\u304c\u5927\u304d\u3044\u3051\u308c\u3069\u3001\u753b\u50cf\u30b5\u30a4\u30ba\u3092\u5c0f\u3055\u304f\u3057\u3066\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u8868\u793a\u3059\u308b\u3088\u3046\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [10,11,12]; title: ; notranslate\" title=\"\">\r\nimport java.awt.Color;\r\nimport java.awt.Dimension;\r\nimport java.awt.Image;\r\n\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JLabel;\r\n\r\npublic class BraveLabel extends JLabel {\r\n  public BraveLabel() {\r\n    ImageIcon icon = new ImageIcon(&quot;brave.png&quot;);\r\n    Image i = icon.getImage().getScaledInstance(32, 32, Image.SCALE_SMOOTH);\r\n    setIcon(new ImageIcon(i));\r\n    setBackground(Color.WHITE);\r\n    setOpaque(true);\r\n    setPreferredSize(new Dimension(20, 20));\r\n  }\r\n}\r\n<\/pre>\n<pre class=\"brush: java; highlight: [10,11,12]; title: ; notranslate\" title=\"\">\r\nimport java.awt.Color;\r\nimport java.awt.Dimension;\r\nimport java.awt.Image;\r\n\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JLabel;\r\n\r\npublic class FieldLabel extends JLabel {\r\n  public FieldLabel() {\r\n    ImageIcon icon = new ImageIcon(&quot;grass.jpg&quot;);\r\n    Image i = icon.getImage().getScaledInstance(32, 32, Image.SCALE_SMOOTH);\r\n    setIcon(new ImageIcon(i));\r\n    setBackground(Color.WHITE);\r\n    setOpaque(true);\r\n    setPreferredSize(new Dimension(30, 30));\r\n  }\r\n}\r\n<\/pre>\n<p>\u30a2\u30a4\u30b3\u30f3\u306e\u30b5\u30a4\u30ba\u306fRpgFrame\u306b\u5b9a\u6570\u3092\u5b9a\u7fa9\u3057\u3066\u3001\u4ed6\u306e\u30af\u30e9\u30b9\u306f\u305d\u306e\u5024\u3092\u53c2\u7167\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Component;\r\nimport java.awt.Container;\r\nimport java.awt.GridBagConstraints;\r\nimport java.awt.GridBagLayout;\r\n\r\nimport javax.swing.JFrame;\r\n\r\npublic class RpgFrame extends JFrame {\r\n  public static final int IconWidth = 64;\r\n  public static final int IconHeight = 64;\r\n  public RpgFrame() {\r\n    super(&quot;RPG&quot;);\r\n    super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n    Container pane = getContentPane();\r\n    pane.setLayout(new GridBagLayout());\r\n    for (int i = 0; i &lt; 5; i++) {\r\n      for (int j = 0; j &lt; 4; j++) {\r\n        if (i == 2 &amp;&amp; j == 2) {\r\n          add(pane, new BraveLabel(), i, j, 1, 1);\r\n        } else {\r\n          add(pane, new FieldLabel(), i, j, 1, 1);\r\n        }\r\n      }\r\n    }\r\n  }\r\n  static void add(Container pane,\r\n    Component comp,\r\n    int x,\r\n    int y,\r\n    int width,\r\n    int height) {\r\n    GridBagConstraints c = new GridBagConstraints();\r\n    c.fill = GridBagConstraints.BOTH;\r\n    c.gridx = x;\r\n    c.gridy = y;\r\n    c.gridwidth = width;\r\n    c.gridheight = height;\r\n    pane.add(comp, c);\r\n  }\r\n}\r\n<\/pre>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Color;\r\nimport java.awt.Dimension;\r\nimport java.awt.Image;\r\n\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JLabel;\r\n\r\npublic class BraveLabel extends JLabel {\r\n  public BraveLabel() {\r\n    ImageIcon icon = new ImageIcon(&quot;brave.png&quot;);\r\n    Image i = icon.getImage().getScaledInstance(RpgFrame.IconWidth, RpgFrame.IconHeight, Image.SCALE_SMOOTH);\r\n    setIcon(new ImageIcon(i));\r\n    setBackground(Color.WHITE);\r\n    setOpaque(true);\r\n    setPreferredSize(new Dimension(RpgFrame.IconWidth, RpgFrame.IconHeight));\r\n  }\r\n}\r\n<\/pre>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Color;\r\nimport java.awt.Dimension;\r\nimport java.awt.Image;\r\n\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JLabel;\r\n\r\npublic class FieldLabel extends JLabel {\r\n  public FieldLabel() {\r\n    ImageIcon icon = new ImageIcon(&quot;grass.jpg&quot;);\r\n    Image i = icon.getImage().getScaledInstance(RpgFrame.IconWidth, RpgFrame.IconHeight, Image.SCALE_SMOOTH);\r\n    setIcon(new ImageIcon(i));\r\n    setBackground(Color.WHITE);\r\n    setOpaque(true);\r\n    setPreferredSize(new Dimension(RpgFrame.IconWidth, RpgFrame.IconHeight));\r\n  }\r\n}\r\n<\/pre>\n<p>\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u5e45\u3068\u9ad8\u3055\u3001\u305d\u3057\u3066\u52c7\u8005\u306e\u5ea7\u6a19\u3092RpgFrame\u5185\u306b\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Component;\r\nimport java.awt.Container;\r\nimport java.awt.GridBagConstraints;\r\nimport java.awt.GridBagLayout;\r\n\r\nimport javax.swing.JFrame;\r\n\r\npublic class RpgFrame extends JFrame {\r\n  public static final int IconWidth = 64;\r\n  public static final int IconHeight = 64;\r\n  public static final int FieldWidth = 20;\r\n  public static final int FieldHeight = 12;\r\n  private int braveX = 0;\r\n  private int braveY = 0;\r\n  public RpgFrame() {\r\n    super(&quot;RPG&quot;);\r\n    super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n    Container pane = getContentPane();\r\n    pane.setLayout(new GridBagLayout());\r\n    for (int i = 0; i &lt; FieldWidth; i++) {\r\n      for (int j = 0; j &lt; FieldHeight; j++) {\r\n        if (i == braveX &amp;&amp; j == braveY) {\r\n          add(pane, new BraveLabel(), i, j, 1, 1);\r\n        } else {\r\n          add(pane, new FieldLabel(), i, j, 1, 1);\r\n        }\r\n      }\r\n    }\r\n  }\r\n  static void add(Container pane,\r\n    Component comp,\r\n    int x,\r\n    int y,\r\n    int width,\r\n    int height) {\r\n    GridBagConstraints c = new GridBagConstraints();\r\n    c.fill = GridBagConstraints.BOTH;\r\n    c.gridx = x;\r\n    c.gridy = y;\r\n    c.gridwidth = width;\r\n    c.gridheight = height;\r\n    pane.add(comp, c);\r\n  }\r\n}\r\n<\/pre>\n<p>RpgFrame\u3067\u753b\u9762\u4e0a\u306b\u63cf\u753b\u3059\u308b\u90e8\u5206\u3092\u5225\u30e1\u30bd\u30c3\u30c9\u306b\u5206\u96e2\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Component;\r\nimport java.awt.Container;\r\nimport java.awt.GridBagConstraints;\r\nimport java.awt.GridBagLayout;\r\n\r\nimport javax.swing.JFrame;\r\n\r\npublic class RpgFrame extends JFrame {\r\n  public static final int IconWidth = 64;\r\n  public static final int IconHeight = 64;\r\n  public static final int FieldWidth = 20;\r\n  public static final int FieldHeight = 12;\r\n  private int braveX = 0;\r\n  private int braveY = 0;\r\n  public RpgFrame() {\r\n    super(&quot;RPG&quot;);\r\n    super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n    drawField();\r\n  }\r\n  private void drawField() {\r\n    Container pane = getContentPane();\r\n    pane.removeAll();\r\n    pane.setLayout(new GridBagLayout());\r\n    for (int i = 0; i &lt; FieldWidth; i++) {\r\n      for (int j = 0; j &lt; FieldHeight; j++) {\r\n        if (i == braveX &amp;&amp; j == braveY) {\r\n          add(pane, new BraveLabel(), i, j, 1, 1);\r\n        } else {\r\n          add(pane, new FieldLabel(), i, j, 1, 1);\r\n        }\r\n      }\r\n    }\r\n  }\r\n  static void add(Container pane,\r\n    Component comp,\r\n    int x,\r\n    int y,\r\n    int width,\r\n    int height) {\r\n    GridBagConstraints c = new GridBagConstraints();\r\n    c.fill = GridBagConstraints.BOTH;\r\n    c.gridx = x;\r\n    c.gridy = y;\r\n    c.gridwidth = width;\r\n    c.gridheight = height;\r\n    pane.add(comp, c);\r\n  }\r\n}\r\n<\/pre>\n<p>\u30ad\u30fc\u5165\u529b\u3092\u53d7\u3051\u53d6\u3063\u3066\u3001\u52c7\u8005\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u52d5\u304b\u3059\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Component;\r\nimport java.awt.Container;\r\nimport java.awt.GridBagConstraints;\r\nimport java.awt.GridBagLayout;\r\nimport java.awt.event.KeyEvent;\r\nimport java.awt.event.KeyListener;\r\n\r\nimport javax.swing.JFrame;\r\n\r\npublic class RpgFrame extends JFrame implements KeyListener {\r\n  public static final int IconWidth = 64;\r\n  public static final int IconHeight = 64;\r\n  public static final int FieldWidth = 20;\r\n  public static final int FieldHeight = 12;\r\n  private int braveX = 0;\r\n  private int braveY = 0;\r\n  public RpgFrame() {\r\n    super(&quot;RPG&quot;);\r\n    super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n    addKeyListener(this);\r\n    Container pane = getContentPane();\r\n    pane.setLayout(new GridBagLayout());\r\n    drawField();\r\n  }\r\n  private void drawField() {\r\n    Container pane = getContentPane();\r\n    pane.removeAll();\r\n    for (int i = 0; i &lt; FieldWidth; i++) {\r\n      for (int j = 0; j &lt; FieldHeight; j++) {\r\n        if (i == braveX &amp;&amp; j == braveY) {\r\n          add(pane, new BraveLabel(), i, j, 1, 1);\r\n        } else {\r\n          add(pane, new FieldLabel(), i, j, 1, 1);\r\n        }\r\n      }\r\n    }\r\n    pane.revalidate();\r\n  }\r\n  static void add(Container pane,\r\n    Component comp,\r\n    int x,\r\n    int y,\r\n    int width,\r\n    int height) {\r\n    GridBagConstraints c = new GridBagConstraints();\r\n    c.fill = GridBagConstraints.BOTH;\r\n    c.gridx = x;\r\n    c.gridy = y;\r\n    c.gridwidth = width;\r\n    c.gridheight = height;\r\n    pane.add(comp, c);\r\n  }\r\n  @Override\r\n  public void keyTyped(KeyEvent e) {\r\n    \/\/\r\n  }\r\n  @Override\r\n  public void keyPressed(KeyEvent e) {\r\n    if (e.getKeyCode() == KeyEvent.VK_LEFT) {\r\n      if (braveX &gt; 0) braveX--;\r\n    }\r\n    if (e.getKeyCode() == KeyEvent.VK_RIGHT) {\r\n      if (braveX &lt; FieldWidth - 1) braveX++;\r\n    }\r\n    if (e.getKeyCode() == KeyEvent.VK_UP) {\r\n      if (braveY &gt; 0) braveY--;\r\n    }\r\n    if (e.getKeyCode() == KeyEvent.VK_DOWN) {\r\n      if (braveY &lt; FieldHeight - 1) braveY++;\r\n    }\r\n    drawField();\r\n    System.out.println(&quot;x=&quot; + braveX + &quot;, y=&quot; + braveY);\r\n  }\r\n  @Override\r\n  public void keyReleased(KeyEvent e) {\r\n    \/\/\r\n  }\r\n}\r\n<\/pre>\n<p>\u6575\u3068\u906d\u9047\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p>GuiApp\u5185\u306eWindowInvoker\u3092\u5358\u72ec\u30af\u30e9\u30b9\u306b\u3059\u308b\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport javax.swing.JFrame;\r\n\r\npublic class WindowInvoker implements Runnable {\r\n  private JFrame frame;\r\n  public WindowInvoker(JFrame jframe) {\r\n    this.frame = jframe;\r\n  }\r\n  @Override\r\n  public void run() {\r\n    frame.pack();\r\n    frame.setVisible(true);\r\n  }  \r\n}\r\n<\/pre>\n<p>\u6226\u95d8\u753b\u9762\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport javax.swing.JFrame;\r\n\r\npublic class BattleFrame extends JFrame {\r\n  public BattleFrame() {\r\n    super(&quot;\u6226\u95d8&quot;);\r\n    setSize(300, 300);\r\n  }\r\n}\r\n<\/pre>\n<p>\u6575\u3068\u906d\u9047\u3057\u305f\u3089\u3001\u6226\u95d8\u753b\u9762\u3092\u8868\u793a\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 57; highlight: [73,74,75,76,83,84,85,86]; title: ; notranslate\" title=\"\">\r\n  @Override\r\n  public void keyPressed(KeyEvent e) {\r\n    if (e.getKeyCode() == KeyEvent.VK_LEFT) {\r\n      if (braveX &gt; 0) braveX--;\r\n    }\r\n    if (e.getKeyCode() == KeyEvent.VK_RIGHT) {\r\n      if (braveX &lt; FieldWidth - 1) braveX++;\r\n    }\r\n    if (e.getKeyCode() == KeyEvent.VK_UP) {\r\n      if (braveY &gt; 0) braveY--;\r\n    }\r\n    if (e.getKeyCode() == KeyEvent.VK_DOWN) {\r\n      if (braveY &lt; FieldHeight - 1) braveY++;\r\n    }\r\n    drawField();\r\n    System.out.println(&quot;x=&quot; + braveX + &quot;, y=&quot; + braveY);\r\n    if (isEncount()) {\r\n      System.out.println(&quot;\u6575\u3068\u906d\u9047\u3057\u307e\u3057\u305f\u3002&quot;);\r\n      BattleFrame bf = new BattleFrame();\r\n      SwingUtilities.invokeLater(new WindowInvoker(bf));\r\n    }\r\n  }\r\n  @Override\r\n  public void keyReleased(KeyEvent e) {\r\n    \/\/\r\n  }\r\n  private boolean isEncount() {\r\n    double v = Math.random();\r\n    return v &lt; 0.05;\r\n  }\r\n}\r\n<\/pre>\n<h4>\u52d5\u304d\u304c\u9045\u3044\u306e\u3092\u6539\u5584\u3059\u308b<\/h4>\n<p>\u52c7\u8005\u306e\u30a2\u30a4\u30b3\u30f3\u304c\u753b\u9762\u4e0a\u3092\u52d5\u304f\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u304c\u3001\u6bce\u56de\u306e\u518d\u63cf\u753b\u304c\u9045\u3044\u72b6\u6cc1\u3067\u3059\u3002<\/p>\n<p>\u3053\u308c\u3092\u6539\u5584\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>BraveLabel\u3068FieldLabel\u3067\u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u751f\u6210\u3059\u308b\u305f\u3073\u306b\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u3001\u753b\u50cf\u30b5\u30a4\u30ba\u3092\u8abf\u6574\u3059\u308b\u3068\u3044\u3046\u51e6\u7406\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u51e6\u7406\u3092\u4e00\u5ea6\u3060\u3051\u3084\u308b\u3088\u3046\u306b\u3059\u308c\u3070\u3001\u304b\u306a\u308a\u6539\u5584\u3067\u304d\u305d\u3046\u3067\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Color;\r\nimport java.awt.Dimension;\r\nimport java.awt.Image;\r\n\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JLabel;\r\n\r\npublic class FieldLabel extends JLabel {\r\n  private static Image image = null;\r\n  public FieldLabel() {\r\n    if (image == null) {\r\n      ImageIcon icon = new ImageIcon(&quot;grass.jpg&quot;);\r\n      image = icon.getImage().getScaledInstance(RpgFrame.IconWidth, RpgFrame.IconHeight, Image.SCALE_SMOOTH);\r\n    }\r\n    setIcon(new ImageIcon(image));\r\n    setBackground(Color.WHITE);\r\n    setOpaque(true);\r\n    setPreferredSize(new Dimension(RpgFrame.IconWidth, RpgFrame.IconHeight));\r\n  }\r\n}\r\n<\/pre>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.Color;\r\nimport java.awt.Dimension;\r\nimport java.awt.Image;\r\n\r\nimport javax.swing.ImageIcon;\r\nimport javax.swing.JLabel;\r\n\r\npublic class BraveLabel extends JLabel {\r\n  private static Image image = null;\r\n  public BraveLabel() {\r\n    if (image == null) {\r\n      ImageIcon icon = new ImageIcon(&quot;brave.png&quot;);\r\n      image = icon.getImage().getScaledInstance(RpgFrame.IconWidth, RpgFrame.IconHeight, Image.SCALE_SMOOTH);\r\n    }\r\n    setIcon(new ImageIcon(image));\r\n    setBackground(Color.WHITE);\r\n    setOpaque(true);\r\n    setPreferredSize(new Dimension(RpgFrame.IconWidth, RpgFrame.IconHeight));\r\n  }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>RPG\u3092\u4f5c\u308b\u306b\u306f\u3001\u3084\u306f\u308aGUI\u306e\u753b\u9762\u304c\u306a\u3044\u3068\u5bc2\u3057\u3044\u3067\u3059\u306d\u3002 \u307e\u305a\u306f\u753b\u9762\u3092\u8868\u793a\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u3053\u308c\u307e\u3067\u306f App.java \u3067\u3044\u308d\u3044\u308d\u3068\u3084\u3063\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u65b0\u3057\u304fGuiApp.java\u3092\u4f5c\u308a\u307e\u3059\u3002 im &#8230; <\/p>\n","protected":false},"author":1,"featured_media":59,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[11,17,2],"class_list":["post-75","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java","tag-rpg","tag-2"],"_links":{"self":[{"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts\/75","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=75"}],"version-history":[{"count":21,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts\/75\/revisions"}],"predecessor-version":[{"id":97,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts\/75\/revisions\/97"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/media\/59"}],"wp:attachment":[{"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=75"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=75"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=75"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}