いつものじゃんけんゲームを Julia のお勉強として書いてみました。Julia のバージョンは 1.0.4 です。
janken.jl
using Printf mutable struct Person name::String wincount::Int hand::Int end function judge(player1::Person, player2::Person) show_hand(player::Person) = ["グー", "チョキ", "パー"][player.hand] @printf("%s 対 %s で ", show_hand(player1), show_hand(player2)) winner = player1 if player1.hand == player2.hand println("引き分けです。") return elseif (3 + player1.hand - player2.hand) % 3 == 1 winner = player2 end println("$(winner.name)の勝ちです。") winner.wincount += 1 end function game(player1::Person, player2::Person, i::Int) println("*** $(i)回戦 ***") n = "" while true n = Base.prompt("$(player2.name)の手を入力して下さい(1:グー, 2:チョキ, 3:パー)") if n == "1" || n == "2" || n == "3" ; break end end player2.hand = parse(Int, n) player1.hand = rand(1:3) judge(player1, player2) end function winner(player1::Person, player2::Person) p1 = player1.wincount p2 = player2.wincount print("\n*** 最終結果 ***\n$(p1) 対 $(p2) で ") final_winner = player1 if p1 == p2 println("引き分けです。") return elseif p1 < p2 final_winner = player2 end println("$(final_winner.name)の勝ちです。") end function main() pc = Person("Computer", 0, 0) name = Base.prompt("あなたの名前を入力して下さい") if name == "" ; name = "名無し" end player = Person(name, 0, 0) print("$(pc.name) 対 $(player.name) :じゃんけん開始\n\n") for i in 1:5 game(pc, player, i) end winner(pc, player) end main()
Julia はオブジェクト指向言語ではないですね。コードの見た目はすっきりした感じです。
Go言語版はこちらです。リンク先に他の言語での実装もまとめてあります。
Go言語でじゃんけんゲーム - Camera Obscura