0
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?

Go言語(プログラミング)入門 -お節介おみくじ作成(変数,switch,if文)-

Last updated at Posted at 2025-01-09

おみくじ機能を作る

これまで学んできた内容を活かして、新年ということもありおみくじを作ってみます。

実現したいこと

まずは日本語でやりたいことを挙げていこうと思います。

①作りたい運勢一覧

「大吉」、「中吉」、「吉」、「小吉」、「どうしようもないもう一回引き直しな」の5つを引く可能性のある運勢とする。
容量10の運勢スライスを作って管理する。

②運勢一覧の作成

なるべく良い結果を引きたいのでバランスを操作しておく。具体的には、
実行するごとに1~10のランダムな自然数を発生させて、その自然数と運勢を紐づけることにする。
「大吉」:1~5が出たとき
「中吉」:6~7が出たとき
「吉」:8が出たとき
「小吉」:9が出たとき
「どうしようもないもう一回引き直しな」:10が出たとき
switch文で場合分けを作成する。

③お節介機能の追加

また、10を出してしまったときはもう一度おみくじを引くよう誘導したい。これはif文で書く。

コードにする。

package main

import (
	"fmt"
	"time"

	"golang.org/x/exp/rand"
)

func main() {
	//1~10までのランダムな数の生成
	rand.Seed(uint64(time.Now().UnixNano()))

	//運勢一覧スライスの作成
	unsei := make([]string, 0, 10)
	unsei = append(unsei, "「大吉」", "「中吉」", "「吉」", "「小吉」", "「どうしようもないもう一回引き直しな」")

	//ランダムな数と運勢の紐づけ
	drawOmikuji := func() string {
		NaturalNumber := rand.Intn(10) + 1
		switch {
		case 1 <= NaturalNumber && 5 >= NaturalNumber:
			return (unsei[0])
		case NaturalNumber == 6 || NaturalNumber == 7:
			return (unsei[1])
		case NaturalNumber == 8:
			return (unsei[2])
		case NaturalNumber == 9:
			return (unsei[3])
		case NaturalNumber == 10:
			return (unsei[4])
		default:
			return "予期しない結果です"
		}
	}
	result := drawOmikuji()
	fmt.Println(result)

	if result == unsei[4] {
		fmt.Println("もう一回引かせてあげよう")
		result := drawOmikuji()
		fmt.Println(result)
	}

}

実行結果

何度か実行してみます。

狙い通り大吉や中吉が中心になっています
image.png

まれに運勢が悪くても引き直してくれていることも確認できました
image.png

感想

それぞれの要素を学んでいるときは少し退屈ですが、学習した内容をつなげて一つのものを作ってみると成果が出た気になれるので、モチベーションが回復しました。
コードの書き方などはまだまだ効率化できるんだろうとは思いますが、アイデアを形にできたという点で楽しかったです。

0
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
0
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?