applewatchを付けて、座り仕事をしっぱなしで仕事をしていると、1時間に1回立ち上がってくださいと促されますが、スタンディングで作業をしていても、そのアラートが出て「どないせいちゅ〜ねん」とひとりで時計に突っ込んでいる、ユゲタです。
仕方が無いので、1分間肩回しの運動をして、軽い運動をこなすようにしています。
本日は、じゃんけんゲームをGo言語で作ってみますよ。
本日のIT謎掛け
「AppleWatch」と、かけまして・・・
「風邪のひき始め」と、ときます。
そのココロは・・・
震えて知らせてくれます。
Go言語でじゃんけんゲーム(ターミナル版)
package main
import "fmt"
import "math/rand"
import "time"
func main(){
str_spr := [] string{"グー" , "チョキ" , "パー"}
var my_spr int
print("じゃんけん : [0:グー 1:チョキ 2:パー] : ")
fmt.Scan(&my_spr)
println("あなたの出した手は、", str_spr[my_spr] ,"です。")
com_spr := spr_com_rand()
println("コンピュータの出した手は、", str_spr[com_spr] ,"です。")
res := spr_match(my_spr , com_spr)
result_view(res)
}
func spr_match(my_spr int , com_spr int) string{
if my_spr == com_spr {
return "draw"
} else if my_spr == 0 && com_spr == 1{
return "win"
} else if my_spr == 1 && com_spr == 2{
return "win"
} else if my_spr == 2 && com_spr == 0{
return "win"
} else {
return "lose"
}
}
func spr_com_rand() int{
my_rand := rand.New(rand.NewSource(1))
my_rand.Seed(time.Now().UnixNano())
return my_rand.Intn(3)
}
func result_view(res string){
if res == "win"{
println("あなたの勝ちです。")
} else if res == "lose" {
println("あなたの負けです。")
} else {
println("引き分けです。")
}
}
実行と解説
$ go run janken.go
じゃんけん : [0:グー 1:チョキ 2:パー] : 1
あなたの出した手は、 チョキ です。
コンピュータの出した手は、 パー です。
あなたの勝ちです。
$ go run janken.go
じゃんけん : [0:グー 1:チョキ 2:パー] : 1
あなたの出した手は、 チョキ です。
コンピュータの出した手は、 グー です。
あなたの負けです。
$ go run janken.go
じゃんけん : [0:グー 1:チョキ 2:パー] : 1
あなたの出した手は、 チョキ です。
コンピュータの出した手は、 チョキ です。
引き分けです。
コンパイル系言語の独特の書き方をする"Go言語"ですが、久しぶりにコーディングすると、少し手こずります。
他のプログラム言語を使っていると、そのクセになれるのに結構苦労するかもしれませんね。
今回は、処理をできるだけ関数化して、乱数、条件分岐、などを構築しましたが、
pythonと同じ感じでimportを忘れることがあるとすぐにエラーがでるので、この辺に慣れないといけませんね。
特に乱数の扱いは、他の言語ほど簡単ではなく、シードする処理をしないと、同じ値が返ってしまうので、乱数についての知識がない人には「めんどくさい」以外の何物でもないでしょうね。
まとめ
runで、インタプリタのように実行してみましたが、以下のようにしてbuildすると、処理速度も早くなるので、本番化する時は、こちらでどうそ。
# コンパイル
$ go build janken.go
# 実行
$./janken
*.goファイルと同じファイル名で拡張子無しのファイルがコンパイル後のファイルになるので、名称は、開発開始時にちゃんと決めておかないとあとでトラブらないようにしましょう。
0 件のコメント:
コメントを投稿