4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ガンツ7回クリアの岡八郎をJavaを使って一般化しました

Last updated at Posted at 2019-12-21

はじめに

初投稿です。ITエンジニア1年目です。ご容赦ください。
この記事は超初歩的なJavaの文法しか使いません。

GANTZとは

いきなりですが、みなさんGANTZ(ガンツ)って漫画知ってますか?
詳細はここでは述べませんが、強化スーツみたいのを着た主人公たちがめちゃくちゃ強い化け物と戦う、みたいな漫画です。面白いです。
ガンツの世界では敵がめちゃくちゃ強くて気をぬくとすぐに死んでしまうハラハラした世界なのですが、大阪編という話ですごい登場人物が出てきます。それが岡八郎
です。

岡八郎とは

GANTZの世界で戦闘に勝って特典を貯めると、GANTZをクリアすることができます。
一回クリアすると
「元の世界に帰る」「誰かを生き返らせる」「強い武器を手に入れる」
の3つから1つを選択することができます。
普通に考えたら全クリしたら元の世界に帰りたいですよね。死にたくないし。
でも岡八郎はすごいです。
なんとあのGANTZを7回もクリアしているのです。すごすぎる。
そして毎回クリアするごとに新しい武器を手に入れているので岡八郎はめちゃくちゃごつい装備を手に入れているんですよね。
それまで登場したキャラと比べても異常に強キャラ感がある、インパクトのあるキャラでした
「ガンツ7回クリアの岡八郎!」
このパワーワード感はすごいです。

エンジニアとして思うこと

さて、僕はQiitaに投稿するのは初めてですが、Qiitaはガンツについて語るところではなく、プログラミングについて語るところだと聞いています。そこでITエンジニアとしてこの
「ガンツ7回クリアの岡八郎」
について考えてみたいと思います。
まずこの文を見て、少し感のいい人ならある法則性に気づくと思います。
7+1=8
7はガンツをクリアした回数、8は岡の下の名前です。
これを一般化すると
「ガンツn回クリアの岡(n+1)郎」
とすることができますね。
このように78をベタ打ちするよりも任意の数nを使った方がスケーラビリティに優れており、可読性も増すような気がします。

Javaで書いてみる

  • まずはOka.javaという名前のファイルを作ります
  • 中身に以下のコードを打ちます

public class Oka{
   public static void main(String[] args){
     System.out.println("ガンツ7回クリアの岡八郎");
   }
}

これで準備ができました。ターミナルで以下のように打ち込んでみましょう。
わくわくしますね。


javac Oka.java 
java Oka

以下のように出力されれば成功です。


ガンツ7回クリアの岡八郎

無事岡八郎がガンツを7回クリアすることができました。
しかし、この状態だと6回クリアしたい場合や8回クリアしたい場合に対応できません

一般化する

さきほどのコードを少し改良して岡八郎を一般化しましょう。


public class Oka{
   public static void main(String[] args){
     //岡がガンツをクリアした回数
     int n = 7; 
     //岡を表示する
     System.out.println("ガンツ"+ n +"回クリアの岡"+ (n+1) +"郎");
   }
}

以下のように出力されます。


ガンツ7回クリアの岡8郎

上のコードでn=8としてみると、出力結果は以下のように変化します。


ガンツ8回クリアの岡9郎

やりましたね。岡の一般化に成功しました。

for分で岡を繰り返してみる

せっかくなので岡を繰り返してみましょう。先ほどのOka.javaを次のように編集します。


public class Oka{
   public static void main(String[] args){
     //岡の繰り返し回数
     final int oka_itr = 10;
     //岡を繰り返す
     for(int n=0; n<oka_itr; n++){
       System.out.println("ガンツ"+ n +"回クリアの岡"+ (n+1) +"郎");
     }
   }
}

以下のように出力されれば成功です。


ガンツ0回クリアの岡1郎
ガンツ1回クリアの岡2郎
ガンツ2回クリアの岡3郎
ガンツ3回クリアの岡4郎
ガンツ4回クリアの岡5郎
ガンツ5回クリアの岡6郎
ガンツ6回クリアの岡7郎
ガンツ7回クリアの岡8郎
ガンツ8回クリアの岡9郎
ガンツ9回クリアの岡10郎

やりましたね!無事岡を繰り返すことができました。

まとめ今後の課題

今後の課題をしては

  • 岡がガンツをクリアする回数を実行時に引数として指定する
  • 岡をモジュール化して外部から利用する

などが考えられますが、今回はとりあえず岡の一般化に成功したのでここまでとしておきます。
ガンツを読んでて「この岡八郎、拡張性ないな〜」と思った方がいたら、是非試してみてください。

余談〜岡八郎のその後〜

初登場時にものすごいインパクトを残した岡八郎ですが、そのあとすぐめちゃくちゃ強い敵にやられて死にます。完全にかませキャラとして使われてしまったのです。ガンツ7回もクリアしたのに。。
俺は忘れない。岡八郎がガンツを7回もクリアしたことを。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?