{"id":196,"date":"2025-11-06T15:39:51","date_gmt":"2025-11-06T06:39:51","guid":{"rendered":"https:\/\/java.satoshis.jp\/?p=196"},"modified":"2025-11-27T13:15:22","modified_gmt":"2025-11-27T04:15:22","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-%e9%ad%94%e6%b3%95%e3%82%92%e4%bd%bf%e3%81%88","status":"publish","type":"post","link":"https:\/\/java.satoshis.jp\/?p=196","title":{"rendered":"\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u6307\u5411\u3067RPG\u3092\u4f5c\u3063\u3066\u307f\u308b \u2013 \u9b54\u6cd5\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3059\u308b"},"content":{"rendered":"<p>\u65b0\u6a5f\u80fd\u3068\u3057\u3066\u3001\u9b54\u6cd5\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u5b9f\u969b\u306eRPG\u3067\u306f\u3001\u7d4c\u9a13\u5024\u3092\u305f\u3081\u3066\u30ec\u30d9\u30eb\u304c\u4e0a\u304c\u3063\u305f\u308a\u3059\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u9b54\u6cd5\u3092\u899a\u3048\u305f\u308a\u3057\u307e\u3059\u304c\u3001\u3053\u3053\u3067\u306f\u30b7\u30f3\u30d7\u30eb\u306b\u3059\u308b\u305f\u3081\u306b\u30a2\u30a4\u30c6\u30e0\u3084\u88c5\u5099\u3068\u540c\u69d8\u306b\u300c\u9b54\u6cd5\u306e\u5dfb\u7269\u300d\u3092\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u62fe\u3046\u3053\u3068\u3067\u3001\u9b54\u6cd5\u3092\u899a\u3048\u3089\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u5dfb\u7269\u306f\u82f1\u8a9e\u3067 Scroll \u306a\u306e\u3067\u3001\u30db\u30a4\u30df\u306e\u5dfb\u7269\u3068\u3057\u3066 HealScroll \u3092\u4f5c\u6210\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u5dfb\u7269\u306e\u89aa\u30af\u30e9\u30b9\u3068\u3057\u3066Scroll\u3092\u7528\u610f\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\npublic class Scroll {\r\n  private String name;\r\n  public Scroll(String name)  {\r\n    this.name = name;\r\n  }\r\n  public String getName() {\r\n    return name;\r\n  }\r\n}\r\n<\/pre>\n<p>HealScroll\u306fScroll\u3092\u7d99\u627f\u3057\u3066\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\npublic class HealScroll extends Scroll {\r\n  public HealScroll() {\r\n    super(&quot;\u30db\u30a4\u30df&quot;);\r\n  }\r\n}\r\n<\/pre>\n<p>\u30db\u30a4\u30df\u306e\u5dfb\u7269\u3092\u4f5c\u3063\u305f\u306e\u3067\u3001\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u79fb\u52d5\u3057\u305f\u3068\u304d\u306b\u78ba\u7387\u3067\u62fe\u3048\u308b\u3088\u3046\u306b\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>RpgFrame\u306e\u4e2d\u306b\u5dfb\u7269\u3092\u62fe\u3046\u51e6\u7406\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 101; highlight: [110,111,112,113,114,115,116,117,118]; title: ; notranslate\" title=\"\">\r\n    } else if (isArmsFound()) {\r\n      \/\/ \u88c5\u5099\u3092\u62fe\u3046\u51e6\u7406\r\n      Arms arms = rpg.getArms();\r\n      Brave brave = rpg.getBrave();\r\n      brave.addArms(arms);\r\n      String msg = arms.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    } else if (isScrollFound()) {\r\n      Scroll scroll = rpg.getScroll();\r\n      System.out.println(scroll.getName());\r\n    }\r\n  }\r\n  private boolean isScrollFound() {\r\n    double v = Math.random();\r\n    return v &lt; 0.05;\r\n  }\r\n  private boolean isArmsFound() {\r\n    double v = Math.random();\r\n    return v &lt; 0.05;\r\n  }\r\n<\/pre>\n<p>Rpg\u306bgetScroll()\u30e1\u30bd\u30c3\u30c9\u3092\u8ffd\u52a0\u3057\u3066\u5dfb\u7269\u3092\u751f\u6210\u3057\u3066\u3082\u3089\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [31,32,33,34]; title: ; notranslate\" title=\"\">\r\n  public Arms getArms() {\r\n    ArmsCreator ac = new ArmsCreator();\r\n    return ac.createArms();\r\n  }\r\n  public Scroll getScroll() {\r\n    ScrollCreator sc = new ScrollCreator();\r\n    return sc.createScroll();\r\n  }\r\n}\r\n<\/pre>\n<p>ScrollCreator\u306e\u3068\u3053\u308d\u3067\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u308b\u306e\u3067\u3001ScrollCreator\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>ScrollCreator<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\npublic class ScrollCreator {\r\n\r\n  public Scroll createScroll() {\r\n    return new HealScroll();\r\n  }\r\n\r\n}\r\n<\/pre>\n<p>\u52c7\u8005\u304c\u8907\u6570\u306e\u5dfb\u7269\u3092\u6240\u6301\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 11; highlight: [17,38,39,40,41]; title: ; notranslate\" title=\"\">\r\npublic class Brave extends Chara {\r\n  private int exp = 0;\r\n  private int level = 1;\r\n  private int gold = 0;\r\n  private List&lt;Arms&gt; armses = new ArrayList&lt;&gt;();\r\n  private List&lt;Item&gt; items = new ArrayList&lt;&gt;();\r\n  private List&lt;Scroll&gt; scrolls = new ArrayList&lt;&gt;();\r\n  private Arms arms; \/\/\u73fe\u5728\u88c5\u5099\u3057\u3066\u3044\u308b\u6b66\u5668\r\n  private Statuses statuses = new Statuses();\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  public void addItem(Item item) {\r\n    System.out.println(item.getName() + &quot;\u3092\u5165\u624b\u3057\u305f\u3002&quot;);\r\n    items.add(item);\r\n  }\r\n  public void addArms(Arms arms) {\r\n    System.out.println(arms.getName() + &quot;\u3092\u5165\u624b\u3057\u305f\u3002&quot;);\r\n    armses.add(arms);\r\n  }\r\n  public void addScroll(Scroll scroll) {\r\n    System.out.println(scroll.getName() + &quot;\u3092\u5165\u624b\u3057\u305f\u3002&quot;);\r\n    scrolls.add(scroll);\r\n  }\r\n<\/pre>\n<p>RpgFrame\u3067\u5dfb\u7269\u3092\u62fe\u3063\u305f\u3089\u52c7\u8005\u306b\u6301\u305f\u305b\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<br \/>\n\u30c0\u30a4\u30a2\u30ed\u30b0\u306e\u8868\u793a\u3082\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 110; highlight: [113,114,115,116,117,118]; title: ; notranslate\" title=\"\">\r\n    } else if (isScrollFound()) {\r\n      Scroll scroll = rpg.getScroll();\r\n      System.out.println(scroll.getName());\r\n      Brave brave = rpg.getBrave();\r\n      brave.addScroll(scroll);\r\n      String msg = scroll.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<\/pre>\n<p>\u6226\u95d8\u306e\u753b\u9762\u3067\u6240\u6301\u3057\u3066\u3044\u308b\u5dfb\u7269\u306b\u5bfe\u5fdc\u3057\u305f\u546a\u6587\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 51; highlight: [54,55,56]; title: ; notranslate\" title=\"\">\r\n    JButton armsButton = new JButton(&quot;\u88c5\u5099&quot;);\r\n    armsButton.addActionListener(new ArmsAction(this));\r\n    buttonsPanel.add(armsButton);\r\n    JButton scrollButton = new JButton(&quot;\u546a\u6587&quot;);\r\n    scrollButton.addActionListener(new ScrollAction(this));\r\n    buttonsPanel.add(scrollButton);\r\n<\/pre>\n<p>ScrollAction\u3092\u4f5c\u308a\u307e\u3059\u3002\u4ed6\u306eAction\u3068\u4f3c\u305f\u3088\u3046\u306b\u66f8\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage rpg.contoller;\r\n\r\nimport java.awt.event.ActionEvent;\r\nimport java.awt.event.ActionListener;\r\n\r\nimport rpg.view.BattleFrame;\r\n\r\npublic class ScrollAction implements ActionListener {\r\n  private BattleFrame battleFrame;\r\n  public ScrollAction(BattleFrame bf) {\r\n    battleFrame = bf;\r\n  }\r\n  @Override\r\n  public void actionPerformed(ActionEvent e) {\r\n    System.out.println(&quot;\u546a\u6587\u3092\u4f7f\u3046&quot;);\r\n  }\r\n\r\n}\r\n<\/pre>\n<p>\u6226\u95d8\u753b\u9762\u3067\u300c\u546a\u6587\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u3001\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u300c\u546a\u6587\u3092\u4f7f\u3046\u300d\u3068\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u51fa\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>ItemAction\u3092\u53c2\u8003\u306b\u3057\u306a\u304c\u3089\u3001ScrollAction\u3092\u4f5c\u3063\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"brush: java; first-line: 19; highlight: [22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]; title: ; notranslate\" title=\"\">\r\n  @Override\r\n  public void actionPerformed(ActionEvent e) {\r\n    System.out.println(&quot;\u546a\u6587\u3092\u4f7f\u3046&quot;);\r\n    Object&#x5B;] scrolls = createScrollArray();\r\n    if (scrolls.length == 0) {\r\n      JOptionPane.showMessageDialog(battleFrame, &quot;\u5dfb\u7269\u3092\u6301\u3063\u3066\u307e\u305b\u3093&quot;);\r\n      return;\r\n    }\r\n  }\r\n  private Object&#x5B;] createScrollArray() {\r\n    Brave brave = battleFrame.getBrave();\r\n    List&lt;Scroll&gt; scrolls = brave.getScrolls();\r\n    List&lt;String&gt; list = new ArrayList&lt;&gt;();\r\n    for (Scroll s : scrolls) {\r\n      if (!list.contains(s.getName())) {\r\n        list.add(s.getName());\r\n      }\r\n    }\r\n    return list.toArray();\r\n  }\r\n<\/pre>\n<p>\u30af\u30a4\u30c3\u30af\u30d5\u30a3\u30c3\u30af\u30b9\u3067Brave\u306bgetScrolls()\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<br \/>\nBrave\u30af\u30e9\u30b9\u306e\u6700\u5f8c\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001return \u3092\u4fee\u6b63\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 128; title: ; notranslate\" title=\"\">\r\n  public List&lt;Scroll&gt; getScrolls() {\r\n    return scrolls;\r\n  }\r\n<\/pre>\n<p>\u6b21\u306fItemAction\u306e\u7d9a\u304d\u306e\u90e8\u5206\u3092\u30b3\u30d4\u30fc\u3057\u3066Item\u3092Scroll\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 20; highlight: [28,29,30,31,32,33,34,35,36,37,38,39,40,41,42]; title: ; notranslate\" title=\"\">\r\n  @Override\r\n  public void actionPerformed(ActionEvent e) {\r\n    System.out.println(&quot;\u546a\u6587\u3092\u4f7f\u3046&quot;);\r\n    Object&#x5B;] scrolls = createScrollArray();\r\n    if (scrolls.length == 0) {\r\n      JOptionPane.showMessageDialog(battleFrame, &quot;\u5dfb\u7269\u3092\u6301\u3063\u3066\u307e\u305b\u3093&quot;);\r\n      return;\r\n    }\r\n    Object scrollName = JOptionPane.showInputDialog(\r\n      battleFrame,\r\n      &quot;\u5dfb\u7269\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044&quot;,\r\n      &quot;\u5dfb\u7269&quot;,\r\n      JOptionPane.PLAIN_MESSAGE,\r\n      null,\r\n      scrolls,\r\n      scrolls&#x5B;0]);\r\n    System.out.println(scrollName);\r\n    if (scrollName == null) return;\r\n    Brave brave = battleFrame.getBrave();\r\n    Scroll scroll = brave.getScroll((String)scrollName);\r\n    brave.useScroll(scroll);\r\n    BraveLabel bl = battleFrame.getBraveLabel();\r\n    bl.setText(&quot;HP: &quot; + brave.getHp());\r\n  }\r\n<\/pre>\n<p>Brave\u306bgetScroll(String)\u304c\u7121\u3044\u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u308b\u306e\u3067\u3001\u30af\u30a4\u30c3\u30af\u30d5\u30a3\u30c3\u30af\u30b9\u3067\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>Brave\u306egetItem(String)\u3092\u53c2\u8003\u306b\u3057\u3066\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 128; title: ; notranslate\" title=\"\">\r\n  public List&lt;Scroll&gt; getScrolls() {\r\n    return scrolls;\r\n  }\r\n  public Scroll getScroll(String scrollName) {\r\n    Scroll scroll = null;\r\n    for (Scroll s : scrolls) {\r\n      if (s.getName().equals(scrollName)) {\r\n        scroll = s;\r\n        break;\r\n      }\r\n    }\r\n    return scroll;\r\n  }\r\n<\/pre>\n<p>ScrollAction\u3067\u306f\u3001Brave\u306buseScroll(Scroll)\u304c\u7121\u3044\u3068\u3044\u3046\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u308b\u306e\u3067\u3001\u30af\u30a4\u30c3\u30af\u30d5\u30a3\u30c3\u30af\u30b9\u3067\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>useScroll()\u306e\u5b9f\u88c5\u306f\u3001useItem()\u3092\u53c2\u8003\u306b\u3057\u3064\u3064\u4f5c\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 141; highlight: [141,142,143,144,145,146,147,148]; title: ; notranslate\" title=\"\">\r\n  public void useScroll(Scroll scroll) {\r\n    if (scrolls.contains(scroll)) {\r\n      System.out.println(scroll.getName() + &quot; \u3092\u4f7f\u3063\u305f\u3002&quot;);\r\n      scroll.effect(this);\r\n    } else {\r\n      System.out.println(scroll.getName() + &quot; \u3092\u6301\u3063\u3066\u306a\u304b\u3063\u305f\u3002&quot;);\r\n    }\r\n  }\r\n<\/pre>\n<p>scroll.effect(this)\u3067\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u3044\u308b\u306e\u3067\u3001Scroll\u30af\u30e9\u30b9\u306beffect(Brave)\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002Scroll\u30af\u30e9\u30b9\u306f\u5dfb\u7269\u306e\u89aa\u30af\u30e9\u30b9\u306a\u306e\u3067\u3001\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u3060\u3051\u3067\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [13,14]; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\nimport rpg.model.Brave;\r\n\r\npublic class Scroll {\r\n  private String name;\r\n  public Scroll(String name)  {\r\n    this.name = name;\r\n  }\r\n  public String getName() {\r\n    return name;\r\n  }\r\n  public void effect(Brave brave) {\r\n  }\r\n}\r\n<\/pre>\n<p>Scroll\u3092\u7d99\u627f\u3057\u305fHealScroll\u30af\u30e9\u30b9\u3067\u306f\u3001\u5dfb\u7269\u306e\u52b9\u679c\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [9,10,11,12]; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\nimport rpg.model.Brave;\r\n\r\npublic class HealScroll extends Scroll {\r\n  public HealScroll() {\r\n    super(&quot;\u30db\u30a4\u30df&quot;);\r\n  }\r\n  @Override\r\n  public void effect(Brave brave) {\r\n    brave.recoverHp(20);\r\n  }\r\n}\r\n<\/pre>\n<p>\u30db\u30a4\u30df\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u306e\u3067\u3001\u6b21\u306b\u30d9\u30db\u30a4\u30df\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u30db\u30a4\u30df\u306fHealScroll\u30af\u30e9\u30b9\u3067\u4f5c\u3063\u305f\u306e\u3067\u3001\u30d9\u30db\u30a4\u30df\u306fBetterHealScroll\u3067\u4f5c\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\nimport rpg.model.Brave;\r\n\r\npublic class BetterHealScroll extends Scroll {\r\n\r\n  public BetterHealScroll() {\r\n    super(&quot;\u30d9\u30db\u30a4\u30df&quot;);\r\n  }\r\n  @Override\r\n  public void effect(Brave brave) {\r\n    brave.recoverHp(40);\r\n  }\r\n}\r\n<\/pre>\n<p>\u78ba\u7387\u3067\u30d9\u30db\u30a4\u30df\u306e\u5dfb\u7269\u3092\u62fe\u3046\u3088\u3046\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n<p>ScrollCreator\u30af\u30e9\u30b9\u3092\u4fee\u6b63\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [6,7,8,9,10,11,12,13]; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\npublic class ScrollCreator {\r\n\r\n  public Scroll createScroll() {\r\n    double v = Math.random();\r\n    Scroll scroll = null;\r\n    if (v &lt; 0.8) {\r\n      scroll = new HealScroll();\r\n    } else {\r\n      scroll = new BetterHealScroll();\r\n    }\r\n    return scroll;\r\n  }\r\n\r\n}\r\n<\/pre>\n<p>\u9b54\u6cd5\u3092\u4f7f\u3063\u305f\u3089MP\u3092\u6d88\u8cbb\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3002<\/p>\n<p>HP\u306fChara\u30af\u30e9\u30b9\u3067\u5b9a\u7fa9\u3057\u3066\u3044\u305f\u306e\u3067\u3001MP\u3082\u540c\u69d8\u306bChara\u30af\u30e9\u30b9\u306b\u8ffd\u52a0\u3059\u308b\u3002<\/p>\n<pre class=\"brush: java; highlight: [4,18,19,20,21,22,23]; title: ; notranslate\" title=\"\">\r\npackage rpg.model;\r\npublic class Chara {\r\n  protected int hp;\r\n  protected int mp;\r\n  private String name;\r\n  public String getName() {\r\n    return name;\r\n  }\r\n  public void setName(String name) {\r\n    this.name = name;\r\n  }\r\n  public int getHp() {\r\n    return hp;\r\n  }\r\n  public void damage(int damage) {\r\n    hp -= damage;\r\n  }\r\n  public int getMp() {\r\n    return mp;\r\n  }\r\n  public void consumeMp(int mp) {\r\n    this.mp -= mp;\r\n  }\r\n}\r\n<\/pre>\n<p>Brave\u30af\u30e9\u30b9\u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u3067hp\u306e\u521d\u671f\u5024\u3092\u4e0e\u3048\u3066\u3044\u308b\u306e\u3067\u3001mp\u3082\u540c\u69d8\u306b\u521d\u671f\u5024\u3092\u4e0e\u3048\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 20; highlight: [22]; title: ; notranslate\" title=\"\">\r\n  public Brave() {\r\n    hp = 10;\r\n    mp = 10;\r\n    setName(&quot;\u30e8\u30b7\u30d2\u30b3&quot;);\r\n  }\r\n<\/pre>\n<p>Scroll\u30af\u30e9\u30b9\u3067\u5fc5\u8981\u306aMP\u3092\u53d6\u5f97\u3067\u304d\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u7528\u610f\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [15,16,17]; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\nimport rpg.model.Brave;\r\n\r\npublic class Scroll {\r\n  private String name;\r\n  public Scroll(String name)  {\r\n    this.name = name;\r\n  }\r\n  public String getName() {\r\n    return name;\r\n  }\r\n  public void effect(Brave brave) {\r\n  }\r\n  public int needMp() {\r\n    return 0;\r\n  }\r\n}\r\n<\/pre>\n<pre class=\"brush: java; highlight: [13,14,15,16]; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\nimport rpg.model.Brave;\r\n\r\npublic class HealScroll extends Scroll {\r\n  public HealScroll() {\r\n    super(&quot;\u30db\u30a4\u30df&quot;);\r\n  }\r\n  @Override\r\n  public void effect(Brave brave) {\r\n    brave.recoverHp(20);\r\n  }\r\n  @Override\r\n  public int needMp() {\r\n    return 3;\r\n  }\r\n}\r\n<\/pre>\n<pre class=\"brush: java; highlight: [14,15,16,17]; title: ; notranslate\" title=\"\">\r\npackage rpg.model.scroll;\r\n\r\nimport rpg.model.Brave;\r\n\r\npublic class BetterHealScroll extends Scroll {\r\n\r\n  public BetterHealScroll() {\r\n    super(&quot;\u30d9\u30db\u30a4\u30df&quot;);\r\n  }\r\n  @Override\r\n  public void effect(Brave brave) {\r\n    brave.recoverHp(40);\r\n  }\r\n  @Override\r\n  public int needMp() {\r\n    return 10;\r\n  }\r\n}\r\n<\/pre>\n<p>ScrollAction\u3067MP\u304c\u8db3\u308a\u3066\u3044\u308b\u304b\u3092\u8abf\u3079\u3066\u3001\u8db3\u308a\u3066\u3044\u308c\u3070\u546a\u6587\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 20; highlight: [40,41,42,43,44,45]; title: ; notranslate\" title=\"\">\r\n  @Override\r\n  public void actionPerformed(ActionEvent e) {\r\n    System.out.println(&quot;\u546a\u6587\u3092\u4f7f\u3046&quot;);\r\n    Object&#x5B;] scrolls = createScrollArray();\r\n    if (scrolls.length == 0) {\r\n      JOptionPane.showMessageDialog(battleFrame, &quot;\u5dfb\u7269\u3092\u6301\u3063\u3066\u307e\u305b\u3093&quot;);\r\n      return;\r\n    }\r\n    Object scrollName = JOptionPane.showInputDialog(\r\n      battleFrame,\r\n      &quot;\u5dfb\u7269\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044&quot;,\r\n      &quot;\u5dfb\u7269&quot;,\r\n      JOptionPane.PLAIN_MESSAGE,\r\n      null,\r\n      scrolls,\r\n      scrolls&#x5B;0]);\r\n    System.out.println(scrollName);\r\n    if (scrollName == null) return;\r\n    Brave brave = battleFrame.getBrave();\r\n    Scroll scroll = brave.getScroll((String)scrollName);\r\n    \/\/ MP\u304c\u8db3\u308a\u3066\u3044\u308b\u304b\u8abf\u3079\u308b\r\n    if (brave.getMp() &lt; scroll.needMp()) {\r\n      JOptionPane.showMessageDialog(battleFrame, &quot;MP\u304c\u8db3\u308a\u307e\u305b\u3093\u3002&quot;);\r\n      return;\r\n    }\r\n    brave.consumeMp(scroll.needMp());\r\n    brave.useScroll(scroll);\r\n    BraveLabel bl = battleFrame.getBraveLabel();\r\n    bl.setText(&quot;HP: &quot; + brave.getHp() + &quot;\\n MP: &quot; + brave.getMp());\r\n  }\r\n<\/pre>\n<p>\u546a\u6587\u3092\u4f7f\u3046\u3068MP\u304c\u6e1b\u3063\u3066\u3057\u307e\u3046\u306e\u3067\u3001MP\u3092\u56de\u5fa9\u3059\u308b\u30a2\u30a4\u30c6\u30e0\u300c\u305b\u3044\u3059\u3044\u300d\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage rpg.model.item;\r\n\r\npublic class HolyWater extends Item {\r\n  public HolyWater() {\r\n    super(&quot;\u305b\u3044\u3059\u3044&quot;);\r\n  }\r\n}\r\n<\/pre>\n<p>ItemCreator \u3067\u306f\u3001\u78ba\u7387\u3067\u300c\u305b\u3044\u3059\u3044\u300d\u3092\u751f\u6210\u3057\u3066\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u62fe\u3048\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage rpg.model.item;\r\npublic class ItemCreator {\r\n\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 if (v &lt; 0.9) {\r\n      item = new BetterHerb();\r\n    } else {\r\n      item = new HolyWater();\r\n    }\r\n    return item;\r\n  }\r\n\r\n}\r\n<\/pre>\n<p>\u305b\u3044\u3059\u3044\u3092\u4f7f\u3063\u305f\u3089MP\u3092\u56de\u5fa9\u3059\u308b\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<br \/>\n\u52c7\u8005\u306b\u306fMP\u3092\u56de\u5fa9\u3059\u308b\u30e1\u30bd\u30c3\u30c9\u304c\u7121\u3044\u306e\u3067\u3001\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; first-line: 68; highlight: [83,84,85,86,87,88,92,93,94]; title: ; notranslate\" title=\"\">\r\n  public void useItem(Item item) {\r\n    if (items.contains(item)) {\r\n      System.out.println(item.getName() + &quot; \u3092\u4f7f\u3063\u305f\u3002&quot;);\r\n      item.effect(this);\r\n      items.remove(item);\r\n    } else {\r\n      System.out.println(item.getName() + &quot;\u3092\u6301\u3063\u3066\u306a\u304b\u3063\u305f\uff01&quot;);\r\n    }\r\n  }\r\n  public void recoverHp(int hp) {\r\n    this.hp += hp;\r\n    if (this.hp &gt; maxHp()) {\r\n      this.hp = maxHp();\r\n    }\r\n  }\r\n  public void recoverMp(int mp) {\r\n    this.mp += mp;\r\n    if (this.mp &gt; maxMp()) {\r\n      this.mp = maxMp();\r\n    }\r\n  }\r\n  private int maxHp() {\r\n    return statuses.getMaxHp(level);\r\n  }\r\n  private int maxMp() {\r\n    return statuses.getMaxMp(level);\r\n  }\r\n<\/pre>\n<p>Statuses\u30af\u30e9\u30b9\u306bgetMaxMp()\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [10,11,12,13,14,15]; title: ; notranslate\" title=\"\">\r\npackage rpg;\r\npublic class Statuses {\r\n  public int getMaxHp(int level) {\r\n    if (level == 1) return 30;\r\n    if (level == 2) return 50;\r\n    if (level == 3) return 80;\r\n    return 100;\r\n  }\r\n\r\n  public int getMaxMp(int level) {\r\n    if (level == 1) return 30;\r\n    if (level == 2) return 50;\r\n    if (level == 3) return 80;\r\n    return 100;\r\n  }\r\n}\r\n<\/pre>\n<p>HolyWater\u306bMP\u3092\u56de\u5fa9\u3059\u308b\u52b9\u679c\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"brush: java; highlight: [9,10,11,12,13]; title: ; notranslate\" title=\"\">\r\npackage rpg.model.item;\r\n\r\nimport rpg.model.Brave;\r\n\r\npublic class HolyWater extends Item {\r\n  public HolyWater() {\r\n    super(&quot;\u305b\u3044\u3059\u3044&quot;);\r\n  }\r\n  @Override\r\n  public void effect(Brave brave) {\r\n    System.out.println(&quot;MP\u304c15\u56de\u5fa9\u3057\u305f\u3002&quot;);\r\n    brave.recoverMp(15);\r\n  }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u65b0\u6a5f\u80fd\u3068\u3057\u3066\u3001\u9b54\u6cd5\u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002 \u5b9f\u969b\u306eRPG\u3067\u306f\u3001\u7d4c\u9a13\u5024\u3092\u305f\u3081\u3066\u30ec\u30d9\u30eb\u304c\u4e0a\u304c\u3063\u305f\u308a\u3059\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u9b54\u6cd5\u3092\u899a\u3048\u305f\u308a\u3057\u307e\u3059\u304c\u3001\u3053\u3053\u3067\u306f\u30b7\u30f3\u30d7\u30eb\u306b\u3059\u308b\u305f\u3081\u306b\u30a2\u30a4\u30c6\u30e0\u3084\u88c5\u5099\u3068\u540c\u69d8\u306b\u300c\u9b54\u6cd5\u306e\u5dfb &#8230; <\/p>\n","protected":false},"author":1,"featured_media":11,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[11,17,23,24],"class_list":["post-196","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java","tag-rpg","tag-23","tag-24"],"_links":{"self":[{"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts\/196","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=196"}],"version-history":[{"count":23,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts\/196\/revisions"}],"predecessor-version":[{"id":220,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/posts\/196\/revisions\/220"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=\/wp\/v2\/media\/11"}],"wp:attachment":[{"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/java.satoshis.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}