Bashシェルスクリプトで楽しむ!驚きのテキストアート&パズルを作ろう

プログラムを学び始めていく中で、Bashシェルスクリプトは非常に役立つツールです。普段はシステム管理や自動化タスクで活用されますが、その創造性を発揮して楽しいテキストアートやパズルを作ることもできるのです。このような作品を作ることで、コーディングスキルを磨きながら楽しむことができるでしょう。この記事では、Bashシェルスクリプトを使ったテキストアートと簡単なパズルの作り方についてご紹介します。

Bashシェルスクリプトとは

Bashは、LinuxやmacOSで広く使用されるコマンドラインインターフェイスで、コマンドを組み合わせて複雑なタスクを自動化するのに適しています。シェルスクリプトは、これらのコマンドを一連の指示としてファイルに書き込むことで、まとめて実行することができます。テキストアートやパズルを作成するには、主に標準入力/出力、制御構造、そして文字列操作を駆使します。

テキストアートに挑戦

テキストアートとは、ASCII文字を使って絵やデザインを作成することです。Bashシェルスクリプトを活用して、オリジナルのテキストアートを作成するには以下のステップを踏むと良いでしょう。

簡単なテキストアートの作成

まずは、シンプルなハート型のテキストアートを作成してみましょう。以下の例では、エコーコマンドを使用して形を描きます。

#!/bin/bash

echo "  **     **  "
echo " ****   **** "
echo "****** ******"
echo " *********** "
echo "  *********  "
echo "   *******   "
echo "    *****    "
echo "     ***     "
echo "      *      "

このスクリプトを実行することで、ハート型をASCIIアートとして出力することができます。

複雑なアートの作成

さらに複雑なテキストアートを作成するためには、ループや条件分岐を使用して動的に生成することも可能です。例えば、パターンを用いて星型のデザインを自動生成することができます。

#!/bin/bash

n=5
for ((i=1; i<=n; i++))
do
   for ((j=i; j<n; j++))
   do
      echo -n " "
   done
   for ((j=1; j<=(2*i-1); j++))
   do
      echo -n "*"
   done
   echo
done
for ((i=n-1; i>=1; i--))
do
   for ((j=n; j>i; j--))
   do
      echo -n " "
   done
   for ((j=1; j<=(2*i-1); j++))
   do
      echo -n "*"
   done
   echo
done

このスクリプトは菱形の星型を生成し、引数を変えることでサイズを調整できます。

Bashで作るパズルゲーム

Bashスクリプトを使って、簡単なパズルゲームを作成することもできます。これにより、シェルスクリプトの論理的思考とデバッグの技術を試せます。

数当てゲーム

まずは「数当てゲーム」を実装してみましょう。プレイヤーはランダムに選ばれた数を当てることでゲームが成り立ちます。

#!/bin/bash

target=$(( $RANDOM % 100 + 1 ))
attempts=0
echo "1から100の間の数字を当ててください。"

while true; do
    read -p "数字を入力してください: " guess
    attempts=$((attempts + 1))

    if [[ $guess -eq $target ]]; then
        echo "正解!$attempts 回目で当たりました。"
        break
    elif [[ $guess -lt $target ]]; then
        echo "小さすぎます。もっと大きい数字を試してください。"
    else
        echo "大きすぎます。もっと小さい数字を試してください。"
    fi
done

出力解析で作る言葉のパズル

出力解析は、プレイヤーが与えられるヒントを基にしその言葉を推測するゲームです。これは、文字列操作とループを組み合わせて実装できます。

#!/bin/bash

word="BASH"
scrambled=$(echo $word | fold -w1 | shuf | tr -d '\n')

echo "この文字を元に戻してください: $scrambled"

while true; do
    read -p "並び替えた言葉を入力してください: " guess
    if [[ $guess == $word ]]; then
        echo "正解!"
        break
    else
        echo "間違いです、もう一度試してください。"
    fi
done

最後に

このように、Bashシェルスクリプトを使用することで、シンプルでありながら楽しめるテキストアートやパズルを作成することができました。これらの練習を通じて、コーディングスキルを向上させるだけでなく、論理的思考力と創造性を引き出すことができます。Bashシェルは非常に多様で応用力のあるツールですので、ぜひその可能性を探求し続けてください。テキストアートやパズルをデザインするという楽しいアプローチを通じて、より高度なスクリプト作成にも挑戦してみましょう。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする
シェル芸・ワンライナー

コメント

タイトルとURLをコピーしました