よこなのへたのよこずき

noteもよろしくね

何も作ったことない若者がじゃんけん作った

初めてJavaについて書きます。
ついでに初めてJavaを書きます(ごめんなさい)。

Javaアドベントカレンダーのこの記事:プログラミング初心者がじゃんけんのプログラムを書いてみた
影響されまして、私も挑戦してみました。

まずは予防線はるところからいきます。
Java
・2013年4月に文系からSIer社会人となる
・新人研修でJavaコピペ体験をする
・配属されてからもJavaコピペ祭りに参加する
・2014年頭にSJC-P認定ガイドを読んでやっとnewの意味とかがわかる
・現場でコード読めるようになる
・日々読むようになったけどほぼ書かない(if文くらいしか)
ヤバイ!!!!!!

…と、十分ハードルをさげたところで本題に入ります。
要するに今まで本読んだり話聞いたりするばっかりだったんですが初めて何か作ったというわけです。

実現したいこと
1. ユーザがコマンドラインでグーかチョキかパーを指定する
2. プログラムもランダムにグーかチョキかパーを出す
3. 勝敗を返す(あいこのときは別の手を出してもらう)
4. 勝ち、負けの数をカウントする
・・・つまりただのじゃんけんや!

はい。続いてコード晒す前に、考えたことをざっくり伝えておきます。
●学んだこと、初めてやったこと
・正規分解、互換分解というものがある*1
・BufferedReaderをつかう
・Mapをつかう(………w)
GitHubを使(お)う(とする)
●分からなかったこと
・どこらへんがどうしてどのくらいクソコードなの
・どれくらいメソッドわけたらいいの
・例外処理どうしたらいいの
・どうしたら数値と文字列をうまくあれやこれやできるの
・勝敗の判定これでいいの
GitHubどうなってんの
●これからやりたいこと
・マサカリ受け止めて血みどろになる(クダサイ)
・Effective Javaやら何やらを読んで色々直す
ほんっとうに、書き方のお作法が全然分からなかった٩(๑꒦ິȏ꒦ິ๑

ということで…初子の公園デビューな気持ちで晒します。
練習用アプリ:じゃんけん

うにゃあああああああん(☝ ՞ਊ ՞)=☞)՞ਊ ՞)
ではもう少し具体的に、思ったことを記載して終わりにします。
コンストラクタ
ここでこんなことしていいのか…そもそも判定ロジックこれでいいのか…
勝ち負けジャッジのために、入力された手をキーにして勝利の手をMapにつっこんでみた。
if文とかswitch文でやるよりスッキリするかな(見た目が)って思っただけなんだ・・・
◆transferNumメソッド
何これ感を拭えない。
数字だけ入力してもらいたい × グー、チョキ、パーを出力したい の結果。
あとdefaultの処理…これは…
◆isTiedメソッド
無駄がありそうかなぁ?
やりたい判定はformedShape.equals(selectedShape)だけで片付くけど、
あいこのメッセージを呼び出し元じゃなくてこっちで出すことにしたらごちゃっとした。

とりあえず動くものが出来た…これからはちゃんと書きながら勉強します><
マサカリクダサイ( 。・_・。)人(。・_・。 )

 

最後に思わぬ罠をひとつ。英語だとrock, paper, scissorsで日本語だとグーチョキパー。
つまりチョキとパーが日英で対応していないのだ!
そこ最初間違えて定数の宣言逆にしていたんですよ。
結果:

*1:整理して、別途まとめ書きたいとおもっています