Linuxは数字当てゲームのソースコードを実装する

Linuxは数字当てゲームのソースコードを実装する

シンプルな 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 がそれを推測します。
AとB
1234 1A0B
5678 2A1B
5674 1A1B
5638 1A1B
2678 2A2B
6278 4A0B (推測)

ソースコード:

#!/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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 101 シェル スクリプト推測ゲーム コード
  • 数字推測ゲームを実装するシェルスクリプト

<<:  easycomモードでUNI-APPコンポーネントを呼び出す際に習得する必要がある実践的なスキル

>>:  MySQL 8.0.18 はクローンプラグインを使用して MGR 実装を再構築します

推薦する

JSは画像の滝の流れの効果を実現します

この記事では、画像ウォーターフォールフローを実現するためのJSの具体的なコードを参考までに共有します...

Mysql Workbench クエリ mysql データベース メソッド

Mysql Workbench はオープンソースのデータベース クライアントです。このオープンソース...

TomcatはLog4jを使用してcatalina.outログを出力します。

Tomcat のデフォルトのログは java.util.logging を使用しますが、これにはい...

HTML印刷関連の操作と実装の詳細な説明

原則的にはwindow.print()メソッドを呼び出すことですが、このメソッドは現在のページ全体を...

CSS でテキストカラーグラデーションを実装する 3 つの方法

Web フロントエンド開発のプロセスでは、UI デザイナーはグラデーション テキストを使用したデザイ...

dockerでlnmp環境を構築する方法

プロジェクトディレクトリを作成する php ディレクトリをコピーする次のプロジェクト構造を作成します...

Vueはデジタル千単位区切り形式をグローバルに実装します

この記事の例では、Vue がデジタル 3 桁区切り形式をグローバルに実装するための具体的なコードを参...

Docker での Redis のマスタースレーブ構成チュートリアルの詳細説明

1. Redisイメージを取得するdocker pull redis 2. それぞれポート6379、...

JavaScriptアップロードファイル制限パラメータケースの詳細な説明

プロジェクトシナリオ: 1. アップロードファイルの制限関数: 1. フロントエンド操作による異常な...

4つのReactコンポーネントにおけるDOMスタイル設定の詳細な説明

1. インラインスタイル仮想DOMにインラインスタイルを追加するには、式を使用してスタイルオブジェク...

js の hasOwnProperty のプロパティとインスタンスの使用法の詳細な説明

1. js は hasOwnProperty が不正に占有されることから保護しません。オブジェクトに...

MySQL でのストアド プロシージャと関数の作成の詳細な説明

目次1. ストアドプロシージャ1.1. 基本構文1.2 実行権限を指定してストアドプロシージャを作成...

Nginx でファイル ホットリンク保護サービスを構築する方法を学ぶ例

序文多くのサイトが、ポイントやゴールドコインなど、情報のダウンロードに料金を請求していることは誰もが...

MySQLでテーブルデータを削除する方法

MySQL でデータを削除する方法は 2 つあります。1 つは DELETE ステートメント、もう ...