{"id":143,"date":"2024-11-14T16:03:24","date_gmt":"2024-11-14T07:03:24","guid":{"rendered":"https:\/\/java.satoshis.jp\/?p=143"},"modified":"2024-11-28T14:27:55","modified_gmt":"2024-11-28T05:27:55","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-%e3%82%af%e3%83%a9%e3%82%b9%e3%81%ae%e5%bd%b9","status":"publish","type":"post","link":"https:\/\/java.satoshis.jp\/?p=143","title":{"rendered":"\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u3067RPG\u3092\u4f5c\u3063\u3066\u307f\u308b \u2013 \u30af\u30e9\u30b9\u306e\u5f79\u5272\u5206\u62c5"},"content":{"rendered":"<h4>\u30e2\u30f3\u30b9\u30bf\u30fc\u3092\u751f\u6210\u3059\u308b\u4ed5\u4e8b\u3092 Rpg \u304b\u3089\u5206\u5272\u3059\u308b<\/h4>\n<p>\u73fe\u5728\u306f Rpg \u30af\u30e9\u30b9\u306e getMonster() \u30e1\u30bd\u30c3\u30c9\u3067\u3001\u3069\u306e\u3088\u3046\u306a\u30e2\u30f3\u30b9\u30bf\u30fc\u306b\u906d\u9047\u3059\u308b\u306e\u304b\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u5b9f\u969b\u306e RPG \u3067\u306f\u3001\u52c7\u8005\u306e\u30ec\u30d9\u30eb\u3084\u52c7\u8005\u304c\u3044\u308b\u5834\u6240\u3001\u6240\u6709\u3057\u3066\u3044\u308b\u30a2\u30a4\u30c6\u30e0\u306a\u3069\u306b\u3088\u3063\u3066\u3001\u51fa\u73fe\u3059\u308b\u30e2\u30f3\u30b9\u30bf\u30fc\u304c\u5909\u308f\u3063\u3066\u304d\u307e\u3059\u3002<\/p>\n<p>\u3053\u308c\u3089\u306e\u8af8\u6761\u4ef6\u3092 getMonster() \u30e1\u30bd\u30c3\u30c9\u306b\u66f8\u3044\u3066\u3044\u308b\u3068\u3001\u975e\u5e38\u306b\u9577\u3044\u30b3\u30fc\u30c9\u306b\u306a\u308a\u8aad\u307f\u306b\u304f\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3059\u3002<\/p>\n<p>\u906d\u9047\u3059\u308b\u30e2\u30f3\u30b9\u30bf\u30fc\u3092\u751f\u6210\u3059\u308b\u306e\u306f\u3001\u5225\u306e\u30af\u30e9\u30b9\u304c\u8cac\u4efb\u3092\u6301\u3064\u307b\u3046\u304c\u3088\u3055\u305d\u3046\u3067\u3059\u3002<\/p>\n<p>MonsterCreator \u30af\u30e9\u30b9\u3092\u4f5c\u6210\u3057\u3066\u3001\u906d\u9047\u3059\u308b\u30e2\u30f3\u30b9\u30bf\u30fc\u3092\u751f\u6210\u3059\u308b\u8cac\u4efb\u3092\u6301\u305f\u305b\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class MonsterCreator {\r\n  public Monster createMonster() {\r\n    double v = Math.random();\r\n    Monster m = null;\r\n    if (v &lt; 0.4) {yo\r\n      m = new Slime();\r\n    } else if (v &lt; 0.7) {\r\n      m = new Dracky();\r\n    } else {\r\n      m = new Ghost();\r\n    }\r\n    return m;\r\n  }\r\n}\r\n<\/pre>\n<p>Rpg\u30af\u30e9\u30b9\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [11,12]; title: ; notranslate\" title=\"\">\r\npublic class Rpg {\r\n  private Brave brave;\r\n  public Rpg() {\r\n    brave = new Brave();\r\n    brave.setName(&quot;\u30e8\u30b7\u30d2\u30b3&quot;);\r\n  }\r\n  public Brave getBrave() {\r\n    return brave;\r\n  }\r\n  public Monster getMonster() {\r\n    MonsterCreator mc = new MonsterCreator();\r\n    return mc.createMonster();\r\n  }\r\n}\r\n<\/pre>\n<p>\u30e2\u30f3\u30b9\u30bf\u30fc\u306e\u30d3\u30e5\u30fc\u3092\u751f\u6210\u3059\u308b\u5f79\u5272\u3082 MonsterCreator \u306b\u4efb\u305b\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class MonsterCreator {\r\n  public Monster createMonster() {\r\n    double v = Math.random();\r\n    Monster m = null;\r\n    if (v &lt; 0.4) {\r\n      m = new Slime();\r\n    } else if (v &lt; 0.7) {\r\n      m = new Dracky();\r\n    } else {\r\n      m = new Ghost();\r\n    }\r\n    return m;\r\n  }\r\n\r\n  public IconLabel getMonsterLabel(Monster m) {\r\n    IconLabel l = null;\r\n    if (m instanceof Slime) {\r\n      l = new SlimeLabel();\r\n    }\r\n    if (m instanceof Dracky) {\r\n      l = new DrackyLabel();\r\n    }\r\n    if (m instanceof Ghost) {\r\n      l = new GhostLabel();\r\n    }\r\n    return l;\r\n  }\r\n}\r\n<\/pre>\n<p>\u3053\u308c\u306b\u3088\u308a\u3001RpgFrame \u306e\u51e6\u7406\u304c\u7c21\u5358\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 85; highlight: [86,87]; title: ; notranslate\" title=\"\">\r\n  private IconLabel getMonsterLabel(Monster m) {\r\n    MonsterCreator mc = new MonsterCreator();\r\n    return mc.getMonsterLabel(m);\r\n  }\r\n<\/pre>\n<h4>\u300c\u304b\u3044\u3075\u304f\u300d\u30dc\u30bf\u30f3\u3092\u8ffd\u52a0\u3059\u308b<\/h4>\n<p>\u73fe\u72b6\u3067\u306f\u52c7\u8005\u306fHP\u3092\u6d88\u8017\u3059\u308b\u3070\u304b\u308a\u306a\u306e\u3067\u300c\u304b\u3044\u3075\u304f\u300d\u30dc\u30bf\u30f3\u3092\u8ffd\u52a0\u3057\u3066HP\u3092\u56de\u5fa9\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"brush: java; first-line: 14; highlight: [32,33,34]; title: ; notranslate\" title=\"\">\r\n  public BattleFrame() {\r\n    super(&quot;\u6226\u95d8&quot;);\r\n    Container pane = getContentPane();\r\n    pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));\r\n    iconsPanel = new JPanel();\r\n    iconsPanel.setLayout(new BoxLayout(iconsPanel, BoxLayout.X_AXIS));\r\n    JPanel buttonsPanel = new JPanel();\r\n    buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.Y_AXIS));\r\n    pane.add(iconsPanel);\r\n    pane.add(buttonsPanel);\r\n    braveLabel = new BraveLabel();\r\n    iconsPanel.add(braveLabel);\r\n    JButton battleButton = new JButton(&quot;\u3053\u3046\u3052\u304d&quot;);\r\n    battleButton.addActionListener(new BattleAction(this));\r\n    buttonsPanel.add(battleButton);\r\n    JButton escapeButton = new JButton(&quot;\u306b\u3052\u308b&quot;);\r\n    escapeButton.addActionListener(new EscapeAction(this));\r\n    buttonsPanel.add(escapeButton);\r\n    JButton healButton = new JButton(&quot;\u304b\u3044\u3075\u304f&quot;);\r\n    healButton.addActionListener(new HealAction(this));\r\n    buttonsPanel.add(healButton);\r\n  }\r\n<\/pre>\n<p>HealAction\u3092\u65b0\u898f\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>\u300c\u304b\u3044\u3075\u304f\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u305b\u3070HP\u304c\u56de\u5fa9\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\n\r\npublic class HealAction implements ActionListener {\r\n  private BattleFrame battleFrame;\r\n  public HealAction(BattleFrame battleFrame) {\r\n    this.battleFrame = battleFrame;\r\n  }\r\n  @Override\r\n  public void actionPerformed(ActionEvent e) {\r\n    System.out.println(&quot;\u304b\u3044\u3075\u304f&quot;);\r\n    Brave brave = battleFrame.getBrave();\r\n    brave.recoverHp(5);\r\n    BraveLabel bl = battleFrame.getBraveLabel();\r\n    bl.setText(brave.getName() + &quot; HP:&quot; + brave.getHp());\r\n  }\r\n\r\n}\r\n<\/pre>\n<h4>\u52c7\u8005\u306b\u7d4c\u9a13\u5024\u3092\u8ffd\u52a0\u3059\u308b<\/h4>\n<p>\u3069\u306eRPG\u3067\u3082\u3001\u4e3b\u4eba\u516c\u306e\u7d4c\u9a13\u5024\u304c\u5897\u3048\u3066\u3044\u304f\u3088\u3046\u306b\u4f5c\u3089\u308c\u3066\u3044\u308b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u3053\u3067\u3082\u3001\u30e2\u30f3\u30b9\u30bf\u30fc\u3068\u6226\u3046\u305f\u3073\u306b\u52c7\u8005\u306e\u7d4c\u9a13\u5024\u304c\u5897\u3048\u3066\u3044\u304f\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u307e\u305a\u52c7\u8005\u306b\u7d4c\u9a13\u5024\u306e\u5c5e\u6027\u3092\u8ffd\u52a0\u3057\u3001\u7d4c\u9a13\u5024\u3092\u53d6\u5f97\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u3068\u7d4c\u9a13\u5024\u3092\u5897\u3084\u3059\u30e1\u30bd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [5,14,15,16,17,18,19]; title: ; notranslate\" title=\"\">\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\npublic class Brave extends Chara {\r\n  private int exp = 1;\r\n  private int mp = 10;\r\n  private int gold = 0;\r\n  private Arms arms;\r\n  private List&lt;Item&gt; items = new ArrayList&lt;&gt;();\r\n  public Brave() {\r\n    hp = 10;\r\n    setName(&quot;\u30e8\u30b7\u30d2\u30b3&quot;);\r\n  }\r\n  public int getExp() {\r\n    return exp;\r\n  }\r\n  public void addExp(int p) {\r\n    exp += p;\r\n  }\r\n\r\n  \/\/ \u4ee5\u4e0b\u7565\r\n<\/pre>\n<p>\u7d4c\u9a13\u5024\u3092\u6226\u95d8\u753b\u9762\u306b\u8868\u793a\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u73fe\u72b6\u306e\u6226\u95d8\u753b\u9762\u3067\u306f\u3001\u4e0a\u304b\u3089IconsPanel\u3068ButtonsPanel\u304c\u4e26\u3093\u3067\u3044\u307e\u3059\u304c\u3001\u305d\u306e\u4e0a\u306bJLabel\u3092\u8ffd\u52a0\u3057\u3066\u7d4c\u9a13\u5024\u3092\u8868\u793a\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 9; highlight: [13,21]; title: ; notranslate\" title=\"\">\r\npublic class BattleFrame extends JFrame {\r\n  private Brave brave;\r\n  private Monster monster;\r\n  private BraveLabel braveLabel;\r\n  private JLabel expLabel;\r\n  private IconLabel monsterLabel;\r\n  private JPanel iconsPanel;\r\n  public BattleFrame() {\r\n    super(&quot;\u6226\u95d8&quot;);\r\n    Container pane = getContentPane();\r\n    pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));\r\n    expLabel = new JLabel(&quot;\u7d4c\u9a13\u5024:&quot;);\r\n    pane.add(expLabel);\r\n    iconsPanel = new JPanel();\r\n    iconsPanel.setLayout(new BoxLayout(iconsPanel, BoxLayout.X_AXIS));\r\n    JPanel buttonsPanel = new JPanel();\r\n    buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.Y_AXIS));\r\n    pane.add(iconsPanel);\r\n    pane.add(buttonsPanel);\r\n    braveLabel = new BraveLabel();\r\n    iconsPanel.add(braveLabel);\r\n    JButton battleButton = new JButton(&quot;\u3053\u3046\u3052\u304d&quot;);\r\n    battleButton.addActionListener(new BattleAction(this));\r\n    buttonsPanel.add(battleButton);\r\n    JButton escapeButton = new JButton(&quot;\u306b\u3052\u308b&quot;);\r\n    escapeButton.addActionListener(new EscapeAction(this));\r\n    buttonsPanel.add(escapeButton);\r\n    JButton healButton = new JButton(&quot;\u304b\u3044\u3075\u304f&quot;);\r\n    healButton.addActionListener(new HealAction(this));\r\n    buttonsPanel.add(healButton);\r\n  }\r\n<\/pre>\n<p>\u3053\u308c\u3067\u6226\u95d8\u753b\u9762\u306b\u7d4c\u9a13\u5024\u3092\u8868\u793a\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n<p>\u6226\u95d8\u3067\u52dd\u5229\u3057\u305f\u6642\u306b\u3001\u7d4c\u9a13\u5024\u304c\u5897\u3048\u3066\u3044\u304f\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<p>\u6226\u95d8\u5185\u5bb9\u306f BattleAction \u3067\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u305d\u3053\u3092\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n<p>\u30e2\u30f3\u30b9\u30bf\u30fc\u304b\u3089\u52dd\u5229\u3057\u305f\u6642\u306e\u7d4c\u9a13\u5024\u3092\u53d6\u5f97\u3057\u3001\u305d\u306e\u5024\u3092\u30e1\u30c3\u30bb\u30fc\u30b8\u306b\u8868\u793a\u3057\u3001\u52c7\u8005\u306e\u7d4c\u9a13\u5024\u3092\u5897\u3084\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [25,26,27,28,30]; title: ; notranslate\" title=\"\">\r\nimport java.awt.event.ActionEventEvent;;\r\nimport java.awt.event.ActionListener;\r\n\r\nimport javax.swing.JOptionPane;\r\n\r\npublic class BattleAction implements ActionListener {\r\n  private BattleFrame battleFrame;\r\n  public BattleAction(BattleFrame bf) {\r\n    battleFrame = bf;\r\n  }\r\n  @Override\r\n  public void actionPerformed(ActionEvent e) {\r\n    Brave brave = battleFrame.getBrave();\r\n    Monster monster = battleFrame.getMonster();\r\n    System.out.println(brave.getName() + &quot;\u306e\u3053\u3046\u3052\u304d&quot;);\r\n    System.out.println(monster.getName() + &quot;\u306e\u3053\u3046\u3052\u304d&quot;);\r\n    monster.damage(1);\r\n    brave.damage(1);\r\n    BraveLabel bl = battleFrame.getBraveLabel();\r\n    IconLabel sl = battleFrame.getMonsterLabel();\r\n    bl.setText(brave.getName() + &quot; HP:&quot; + brave.getHp());\r\n    sl.setText(monster.getName() + &quot; HP:&quot; + monster.getHp()); \r\n    if (monster.getHp() &lt;= 0) {\r\n      int gold = monster.getGold();\r\n      int exp = monster.getExp();\r\n      String msg = monster.getName() + &quot;\u3092\u3084\u3063\u3064\u3051\u305f\uff01\\n&quot;;\r\n      msg += gold + &quot;\u30b4\u30fc\u30eb\u30c9\u3092\u7372\u5f97\u3057\u305f\uff01\\n&quot;;\r\n      msg += &quot;\u7d4c\u9a13\u5024\u304c &quot; + exp + &quot;\u5897\u3048\u305f\uff01&quot;;\r\n      brave.addGold(gold);\r\n      brave.addExp(exp);\r\n      JOptionPane.showMessageDialog(\r\n        battleFrame, msg,\r\n        &quot;\u52dd\u5229&quot;, JOptionPane.INFORMATION_MESSAGE);\r\n      battleFrame.setVisible(false);\r\n    }\r\n    if (brave.getHp() &lt;= 0) {\r\n      JOptionPane.showMessageDialog(\r\n        battleFrame, brave.getName() + &quot;\u306f\u3057\u3093\u3067\u3057\u307e\u3063\u305f\u3002&quot;,\r\n        &quot;\u6557\u5317&quot;, JOptionPane.INFORMATION_MESSAGE);\r\n      battleFrame.setVisible(false);\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<h4>\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u52d5\u3044\u305f\u3068\u304d\u306b\u78ba\u7387\u3067\u30a2\u30a4\u30c6\u30e0\u3092\u62fe\u3046\u3088\u3046\u306b\u3059\u308b<\/h4>\n<p>\u3088\u304f\u3042\u308bRPG\u3067\u306f\u30a2\u30a4\u30c6\u30e0\u3092\u7372\u5f97\u3059\u308b\u306b\u306f\u6751\u3084\u753a\u306e\u304a\u5e97\u306b\u884c\u3063\u3066\u8cb7\u3063\u305f\u308a\u3057\u307e\u3059\u304c\u3001\u4eca\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u6751\u3084\u753a\u3084\u304a\u5e97\u3092\u8ffd\u52a0\u3059\u308b\u306e\u306f\u3061\u3087\u3063\u3068\u96e3\u3057\u3044\u306e\u3067\u3001\u52c7\u8005\u304c\u30d5\u30a3\u30fc\u30eb\u30c9\u5185\u3092\u79fb\u52d5\u3057\u305f\u3068\u304d\u306b\u3001\u78ba\u7387\u3067\u30a2\u30a4\u30c6\u30e0\u3092\u62fe\u3046\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<p>\u52c7\u8005\u3092\u79fb\u52d5\u3055\u305b\u3066\u3044\u308b\u306e\u306f\u3001RpgFrame\u306a\u306e\u3067\u3001\u3053\u3053\u306b\u78ba\u7387\u3067\u30a2\u30a4\u30c6\u30e0\u3092\u62fe\u3046\u6a5f\u80fd\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<p>\u30e2\u30f3\u30b9\u30bf\u30fc\u3068\u906d\u9047\u3057\u305f\u6642\u3068\u540c\u3058\u3088\u3046\u306b\u3001\u78ba\u7387\u3067\u30a2\u30a4\u30c6\u30e0\u3092\u62fe\u3046\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u3001isItemFound()\u30e1\u30bd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<p>\u307e\u305f\u3001\u78ba\u7387\u3067\u7570\u306a\u308b\u30a2\u30a4\u30c6\u30e0\u3092\u62fe\u3046\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u3001ItemCreator\u30af\u30e9\u30b9\u3092\u8ffd\u52a0\u3057\u3066\u3001createItem()\u30e1\u30bd\u30c3\u30c9\u5185\u3067\u30a2\u30a4\u30c6\u30e0\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 59; highlight: [83,84,85,86,87,88,103,104,105,106]; 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      bf.setBrave(rpg.getBrave());\r\n      Monster m = rpg.getMonster();\r\n      bf.setMonster(m);\r\n      bf.setMonsterLabel(getMonsterLabel(m));\r\n      SwingUtilities.invokeLater(new WindowInvoker(bf));\r\n    } else if (isItemFound()) {\r\n      \/\/\u30a2\u30a4\u30c6\u30e0\u3092\u62fe\u3046\u51e6\u7406\r\n      Item item = rpg.getItem();\r\n      Brave brave = rpg.getBrave();\r\n      brave.addItem(item);\r\n      System.out.println(item.getName() + &quot;\u3092\u898b\u3064\u3051\u305f&quot;);\r\n    }\r\n  }\r\n  private IconLabel getMonsterLabel(Monster m) {\r\n    MonsterCreator mc = new MonsterCreator();\r\n    return mc.getMonsterLabel(m);\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.01;\r\n  }\r\n  private boolean isItemFound() {\r\n    double v = Math.random();\r\n    return v &lt; 0.05;\r\n  }\r\n<\/pre>\n<p>Rpg\u30af\u30e9\u30b9\u306b\u306fgetItem()\u30e1\u30bd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class Rpg {\r\n  private Brave brave;\r\n  public Rpg() {\r\n    brave = new Brave();\r\n    brave.setName(&quot;\u30e8\u30b7\u30d2\u30b3&quot;);\r\n  }\r\n  public Brave getBrave() {\r\n    return brave;\r\n  }\r\n  public Monster getMonster() {\r\n    MonsterCreator mc = new MonsterCreator();\r\n    return mc.createMonster();\r\n  }\r\n  public Item getItem() {\r\n    ItemCreator ic = new ItemCreator();\r\n    return ic.createItem();\r\n  }\r\n}\r\n<\/pre>\n<p>ItemCreator\u3067\u306f\u3001\u30a2\u30a4\u30c6\u30e0\u3092\u78ba\u7387\u3067\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic class ItemCreator {\r\n  public Item createItem() {\r\n    double v = Math.random();\r\n    Item item = null;\r\n    if (v &lt; 0.8) {\r\n      item = new Herb();\r\n    } else {\r\n      item = new SuperHerb();\r\n    }\r\n    return item;\r\n  }\r\n}\r\n<\/pre>\n<p>\u30a2\u30a4\u30c6\u30e0\u3092\u62fe\u3063\u305f\u6642\u306b\u3001\u4f55\u3092\u62fe\u3063\u305f\u306e\u304b\u3092\u30c0\u30a4\u30a2\u30ed\u30b0\u3067\u8868\u793a\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 84; highlight: [90,91,92,93]; title: ; notranslate\" title=\"\">\r\n    } else if (isItemFound()) {\r\n      \/\/\u30a2\u30a4\u30c6\u30e0\u3092\u62fe\u3046\u51e6\u7406\r\n      Item item = rpg.getItem();\r\n      Brave brave = rpg.getBrave();\r\n      brave.addItem(item);\r\n      System.out.println(item.getName() + &quot;\u3092\u898b\u3064\u3051\u305f&quot;);\r\n      String msg = item.getName() + &quot;\u3092\u898b\u3064\u3051\u305f\uff01&quot;;\r\n      JOptionPane.showMessageDialog(\r\n        this, msg,\r\n        &quot;\u30a2\u30a4\u30c6\u30e0&quot;, JOptionPane.INFORMATION_MESSAGE);\r\n    }\r\n  }\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u30e2\u30f3\u30b9\u30bf\u30fc\u3092\u751f\u6210\u3059\u308b\u4ed5\u4e8b\u3092 Rpg \u304b\u3089\u5206\u5272\u3059\u308b \u73fe\u5728\u306f Rpg \u30af\u30e9\u30b9\u306e getMonster() \u30e1\u30bd\u30c3\u30c9\u3067\u3001\u3069\u306e\u3088\u3046\u306a\u30e2\u30f3\u30b9\u30bf\u30fc\u306b\u906d\u9047\u3059\u308b\u306e\u304b\u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u3059\u3002 \u5b9f\u969b\u306e RPG \u3067\u306f\u3001\u52c7\u8005\u306e\u30ec\u30d9 &#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,2],"class_list":["post-143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java","tag-2"],"_links":{"self":[{"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts\/143","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=143"}],"version-history":[{"count":10,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts\/143\/revisions"}],"predecessor-version":[{"id":154,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts\/143\/revisions\/154"}],"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=143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}