じゃんけんツール_(bash,perl,python)


いろいろな言語に触れてみたいと思い、それぞれの言語で同じような挙動となるような簡単なプログラムを組んでみました。
題材にしたのは、「じゃんけんプログラム」です。
使用した言語は、bash,perl,python です。長いので、内容は折りたたんで表示しています。
言語は仕事で使うことがあるかもしれないものから選択しました

## bash のシェルスクリプト
<details><summary>クリックすると開きます</summary><div>

```bash:janken.sh
#!/bin/bash

##########################################
#
# bash でじゃんけんツールを作成してみる
#
##########################################

## グーチョキパーをランダムで出す関数
function JANKEN () {
  Flag=$(echo $(($RANDOM % 3)))
  if [[ ${Flag} == 0 ]]; then
     janken=$(echo "グー")
     echo "###############################"
     echo ""
     echo "ぽいっ！ 僕はグー を出したよ"
     echo ""
     echo "###############################"
  elif [[ ${Flag} == 1 ]]; then
     janken=$(echo "チョキ")
     echo "###############################"
     echo ""
     echo "poi!! 僕はチョキ を出したよ"
     echo ""
     echo "###############################"
  else
     janken=$(echo "パー")
     echo "###############################"
     echo ""
     echo "ァパー!!! を僕は出したよぉ"
     echo ""
     echo "###############################"
  fi
}

## ジャンケン入力関数
function PLAY () {
echo "↓↓グー or チョキ or パー を入力してください↓↓"
read input
}

## ループ処理
function ROOP () {
while [[ ${input} != グー ]] && [[ ${input} != チョキ ]] && [[ ${input} != パー ]]
do
  PLAY
done
}

## ジャンケン開始
echo ""
echo "### Let's play ジャンケン ###"
echo ""
PLAY
ROOP
JANKEN
echo ""

while [[ ${janken} == ${input} ]]
do
  echo "あいこ！！ もう一度 グー or チョキ or パー を入力してください"
  read input
  ROOP
  JANKEN
  echo ""
done

if [[ ${janken} == グー ]] && [[ ${input} == チョキ ]]; then
  echo "残念、、あなたの負けです"
  echo "また挑戦してね"
  echo ""

elif [[ ${janken} == グー ]] && [[ ${input} == パー ]]; then
  echo "くそっ あなたの勝ちです"
  echo "おめでとう！！"
  echo ""

elif [[ ${janken} == チョキ ]] && [[ ${input} == パー ]]; then
  echo "あなたの負けです。さようなら"
  echo ""

elif [[ ${janken} == チョキ ]] && [[ ${input} == グー ]]; then
  echo "君の勝ちだ。。。次は負けないよ"
  echo ""

elif [[ ${janken} == パー ]] && [[ ${input} == グー ]]; then
  echo "僕の勝ちだ！！"
  echo "君じゃ僕には勝てないみたいだね"
  echo ""

elif [[ ${janken} == パー ]] && [[ ${input} == チョキ ]]; then
  echo "君の勝ちだね"
  echo "僕はまた強くなって戻ってくる"
  echo ""

fi

```

</div></details>
## perl 
<details><summary>クリックすると開きます</summary><div>

```perl:janken.pl
#!/usr/bin/perl

##########################################
#
# perl でじゃんけんツールを作成してみる
#
##########################################

use strict;
use warnings;

my $janken;

### ジャンケン開始
print "↓↓グー or チョキ or パー を入力してください↓↓\n";
my $input = <STDIN>;
chomp($input);

## ルーチン呼び出し
&JANKEN;

## グーチョキパーをランダムで出すルーチン
sub JANKEN{
        my $Flag = int(rand(3));
        if ($Flag == 0){
                $janken = "グー";
                print "###############################\n";
                print "\n";
                print "ぽいっ！ 僕はグー を出したよ\n";
                print "\n";
                print "###############################\n";
        }elsif ($Flag == 1){
                $janken = "チョキ";
                print "###############################\n";
                print "\n";
                print "poi!! 僕はチョキ を出したよ\n";
                print "\n";
                print "###############################\n";
        }else{
                $janken = "パー";
                print "###############################\n";
                print "\n";
                print "ァパー!!! を僕は出したよぉ\n";
                print "\n";
                print "###############################\n";
        }
}


while ($janken eq $input){
        print "あいこ！！ もう一度 グー or チョキ or パー を入力してください\n";
        my $input = <STDIN>;
        chomp($input);
        &JANKEN;
        print "\n";
}

if ($janken eq "グー" && $input eq "チョキ"){
        print "残念、、あなたの負けです\n";
        print "また挑戦してね\n";
        print "\n";
}elsif ($janken eq "グー" && $input eq "パー"){
        print "くそっ あなたの勝ちです\n";
        print "おめでとう！！\n";
        print "\n";
}elsif ($janken eq "チョキ" && $input eq "パー"){
        print "あなたの負けです。さようなら\n";
        print "\n";
}elsif ($janken eq "チョキ" && $input eq "グー"){
        print "君の勝ちだ。。。次は負けないよ\n";
        print "\n";
}elsif ($janken eq "パー" && $input eq "グー"){
        print "僕の勝ちだ！！\n";
        print "君じゃ僕には勝てないみたいだね\n";
        print "\n";
}elsif ($janken eq "パー" && $input eq "チョキ"){
        print "君の勝ちだね\n";
        print "僕はまた強くなって戻ってくる\n";
        print "\n";
}

```

</div></details>
## python  
<details><summary>クリックすると開きます</summary><div>

```python:janken.py
#!/usr/bin/python3

##########################################
#
# python でじゃんけんツールを作成してみる
#
##########################################

import random

## ジャンケン入力関数
def PLAY():
        global val
        print ("↓↓グー or チョキ or パー を入力してください↓↓")
        val = input()

## ループ処理
def ROOP():
        while val != "グー" and val != "チョキ" and val != "パー":
                PLAY()

## グーチョキパーをランダムで出す関数
def JANKEN():
        Flag = random.randrange(3)
        global janken
        if Flag == 0:
                janken = "グー"
                print("###############################")
                print("")
                print("ぽいっ！ 僕はグー を出したよ")
                print("")
                print("###############################")
        elif Flag == 1:
                janken= "チョキ"
                print("###############################")
                print("")
                print("poi!! 僕はチョキ を出したよ")
                print("")
                print("###############################")
        else:
                janken= "パー"
                print("###############################")
                print("")
                print("ァパー!!! を僕は出したよぉ")
                print("")
                print("###############################")


## ジャンケン開始
print("")
print("### Let's play ジャンケン ###")
print("")
PLAY()
ROOP()
JANKEN()
print("")

while janken == val:
        print("あいこ！！ もう一度 グー or チョキ or パー を入力してください")
        val = input()
        ROOP()
        JANKEN()

if janken == "グー" and val == "チョキ":
        print("残念、、あなたの負けです")
        print("また挑戦してね")
        print("")

elif janken == "グー" and val == "パー":
        print("くそっ あなたの勝ちです")
        print("おめでとう！！")
        print("")

elif janken == "チョキ" and val == "パー":
        print("あなたの負けです。さようなら")
        print("")

elif janken == "チョキ" and val == "グー":
        print("君の勝ちだ。。。次は負けないよ")
        print("")

elif janken == "パー" and val == "グー":
        print("僕の勝ちだ！！")
        print("君じゃ僕には勝てないみたいだね")
        print("")

elif janken == "パー" and val == "チョキ":
        print("君の勝ちだね")
        print("僕はまた強くなって戻ってくる")
        print("")


```

</div></details>