シンプルな Linux 推測ゲームのソースコード ゲームのルール: 数字当てゲームは通常 2 人でプレイします。1 人が数字を言い、もう 1 人が数字を推測します。数字を出す人は、数字が重複しない 4 つの数字のセットを思い浮かべなければならず、推測する人にその数字を知らせてはいけません。推測した人が推測を始めることができます。数字を推測するたびに、その数字を言う人は、その数字に基づいて A と B の数字を言う必要があります。ここで、A の前の数字は正しい位置にある数字の数を表し、B の前の数字は正しいが位置が間違っている数字の数を表します。正解が 5234 で、推測者が 5346 を推測した場合、それは 1A2B となり、5 の 1 つが正しい位置にあるため 1A として記録され、数字 3 と 4 は正解だが正しい位置にないため 2B として記録され、これらを合わせると 1A2B となります。次に推測する人は、質問した人が出した A と B の数字に基づいて、正しく推測するまで (つまり、4A0B) 推測を続けます。 推測した人には 8 回のチャンスがあります。 例えば: B が数字を出し、A がそれを推測します。 ソースコード: #!/bin/bash クリア エコー エコー "# ... echo "# これは lee によって書かれた bash-shell ゲームです #" echo "# このゲームは無限の頻度で数字を推測します#" echo "# バージョン 2.1.1.20200421 #" エコー "# ... エコー -e "\n\n" 入力を宣言する パスワードを宣言する LEN_PWDを宣言する 宣言する Bを宣言する LOOPを宣言する #この関数は乱数を生成するためのものです ランダム数() { パスワード=$ランダム LEN_PWD=`echo $PASSWORD | wc -L` [[ $LEN_PWD -ne 4 ]]の場合 それから ランダムな数字 それ以外 #テストに必要な標準値を出力します。開発後は echo $PASSWORD をコメントアウトします。 入力 フィ } #この関数はユーザーのキーボードからの入力を受け入れるためのものです 入力() { read -n4 -p "0000~9999の数字を入力してください:" 入力 # 10#${input} 基数変換if [[ 10#${input} -eq 10#${PASSWORD} ]] それから エコー -e "\n" エコー "#######################################################" echo "#おめでとうございます!$LOOP 回試行しました!#" echo "# パスワードは $PASSWORD です! #" エコー "#######################################################" 出口 elif [[ $LOOP -eq 6 ]] それから エコー -e "\n" echo "$LOOP 回試行しました!ゲームオーバー!" 出口 それ以外 0 = 0 です 0 です カウント カウント エコー -e "\n" エコー "********************************" エコー "* "$A"A"$B"B *" エコー "********************************" echo "$LOOP 回試行しました! `expr 6 - $LOOP` 回終了しました!" LOOP=`式 $LOOP + 1` 入力 フィ } #この関数は変数Aの値をカウントします カウントa() { i が `seq 4` の場合 する VAR_INPUT=`式 部分文字列 $input $i 1` `seq 4` の j の場合 する VAR_PASSWORD=`式substr $PASSWORD $j 1` [[ $VAR_INPUT -eq $VAR_PASSWORD ]] && [[ $i -eq $j ]]の場合 A=`expr $A + 1` となる フィ 終わり 終わり } #この関数は変数Bの値をカウントします カウントb() { i が `seq 4` の場合 する VAR_INPUT=`式 部分文字列 $input $i 1` `seq 4` の j の場合 する VAR_PASSWORD=`式substr $PASSWORD $j 1` [[ $VAR_INPUT -eq $VAR_PASSWORD ]] && [[ $i -ne $j ]]の場合 B=`expr $B + 1` となる フィ 終わり 終わり } ループ=1 ランダムな数字 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: easycomモードでUNI-APPコンポーネントを呼び出す際に習得する必要がある実践的なスキル
>>: MySQL 8.0.18 はクローンプラグインを使用して MGR 実装を再構築します
目次マルチ環境構成とは何ですか? また、なぜそれが必要なのですか? .env ファイルはどこで設定さ...
目次1. 現在のデータベース内のテーブルを表示する2. テーブルを作成する3. 指定されたテーブル構...
目次1. カスタム指示1. グローバルカスタム指示を登録する2. グローバルカスタム指示を使用する3...
1. 場所の正規表現例を見てみましょう: 場所 = / { # 完全一致 / 、ホスト名の後に文字列...
序文vue3.0 が正式にリリースされて以来、多くの友人が vue3.0 に切り替えました。ここでは...
前面に書かれたfilter:blur と filter:contrast がこのような素晴らしい化学...
相対パス - ファイルを参照する Web ページの場所に基づいて確立されたディレクトリ パス。そのた...
序文MySQLクエリはselectコマンドを使用し、limitとoffsetパラメータを使用して、指...
1. 問題複数のフローティング要素は親要素の幅を拡張できず、親要素の高さが 0 になる可能性がありま...
自分のウェブサイトを構築する予定なので、618 プロモーションを利用して Tencent Cloud...
目次JSON.パースJSON.parse 構文リバイバーパラメータJSON.parse の機能その他...
目次序文1. ラベルスタイルを定義する2. GeoJSONデータのシミュレーション3. Vercto...
1. es起動コマンド: docker run -itd -e TAKE_FILE_OWNERSHI...
目次定期的に剪定するミラーエビクションコンテナのクリーンアップネットワークソート体積の蒸発完全にクリ...
MySQL 8.0.16で初回ログイン時のパスワードを変更する方法を紹介します。 MySQLデータベ...