クラベル節約、こだわり、使い道。「決め手」がわかる比較サイト。Desktop」を使って簡単なゲームを作ってみるサンプルです。Desktopは、パソコン作業を効率化するための便利なツールで、もともとプログラミングの知識を必要とせず幅広い自動化の動作を簡単な設定で行うことができるようになっています。本来ゲーム開発を行うようなツールではないのですが、自動化ツールのいろいろな使い方のアイデアのひとつとして、今回は古典的な数当てゲームである「Hit&Blow(ヒットアンドブロ―)」を題材に、実際に遊べるフローをサンプルとして作ってみます。Desktopを使って、ヒットアンドブロー(マスターマインド)という古典的なゲームを再現します。ヒットアンドブロ―のルールヒットアンドブロ―とは、コンピュータがランダムに決めた4桁の数字を推理して当てるパズルゲームです。もとは数字だけではなく色のついたピンの種類などを推理するマスターマインドと呼ばれるボードゲームがモデルとなっています。プレイヤーは予想した4桁の数字を入力することで、正解の数字に近づくためのヒントがもらえます。ヒントには「ヒット」と「ブロー」があり、予想した4桁の数字のうち、数字の番号と桁の位置が一致している場合は「ヒット」、数字の番号は含まれているが桁の位置が異なる場合は「ブロー」として、いくつの「ヒット」「ブロー」があるかがヒントとなります。「1357」は「4ヒット、0ブロー」などとなります。4ヒットはすべての数字と桁の位置が一致している状態なので、「4ヒットの状態=正解」となります。いくつかの条件として、コンピュータが決める4桁の数字はすべて異なる数字で、「4444」や「1123」のように同じ数字が複数含まれることはありません。ゲームは回数制限を設けるものやそうでないもの正解までの正解を競うものなどがありますが、今回は10回以内に正解にたどり着けば勝ち(ゲームクリア)、という条件とします。使い方(遊び方)フローを実行すると、コンピュータが正解の4桁の数字を自動的に作り、そのあと最初の入力ウィンドウが表示されます。ボタンをクリックすると1回目の判定に進みますが、この際、入力した内容が4桁の数字以外であった場合はエラーが表示され再度入力画面に戻ります。(この時、回数制限のカウントは変化しません)4桁の数字が判定されると、入力された4桁の数字とともに、「Hit(ヒット)」と「Blow(ブロー)」のヒントが表示され入力画面に戻ります。表示されたヒントを基に繰り返し数字を入力していき、正解の数字を予想していきます。予想した数字が「4ヒット」になると正解となり、クリアメッセージが表示されます。10回繰り返し正解にたどり着けなかった場合、ユーザーの負けとなりゲーム終了メッセージが表示されます。正解もしくは10回繰り返し不正解になって上記のいずれかのメッセージが表示されたらフローが終了します。作成したフローのスクリーンショットです。クリックすると拡大します。コード上記のスクリーンショットと同じフローをコピーして取り出したテキストのコードです。Desktopの編集画面に張り付けることで上記のアクションをそのまま登録することができます。ButtonPressed4フロー設定のポイントなどランダムな4桁の数字を準備する1から11までのアクションがランダムな4桁の数字を作るフローになっています。Desktopには、「ランダムテキストの作成」というアクションがあり、これによりアルファベットや記号などを含めたランダムな文字列のほか、数字だけを組み合わせたランダムな文字列も作ることができます。このアクションは本来パスワードなどの自動設定を行うために用意されたもので、今回のヒットアンドブロ―のルールで使用できない「4444」や「1123」のように同じ数字が被る文字列も出力されてしまうためそのまま使うことができません。そのため、今回の例では数字を一桁ずつ作ってリストに格納し、作成済みの文字列と比べて数字がすでに含まれていない場合だけ新たにリストに格納し、数字が被らない4桁の数字が出来上がるまで繰り返す処理としています。4桁の数字が出来上がったかどうかの判定には「正規表現」を使っています。正規表現とは、ある「文字の羅列」を数字や記号などの組み合わせを使って表現する手法のひとつです。「あ」で始まって「お」で終わる5文字の言葉や4桁の数字など、単純な文字の比較だけでは表現できない構造を正規表現を使って表すことができます。ここでは^[0-9]{4}$という正規表現を使っていますが、これは4桁の数字(3桁でもなく5桁でもない)を判定するための正規表現です。この正規表現では数字のダブりのチェックは行っていませんが、ダブった数字が重ならないように事前に処理されているため、ここでは4桁の桁数が揃ったかどうかを判定するためのアクションとしています。この「テキストの解析」アクションでは、指定したテキストの検索を行って該当するテキストが見つかると%Position%という変数にテキストが見つかった位置(n文字目)が数値として格納されます。見つからなかった場合は「-1」が格納されるため、%Position%の値が「-1」か「それ以外か」を見ることで文字が含まれているかどうかの判定が可能です。今回はLoopアクションの繰り返し条件にこの判定を利用し、4桁の数字が揃うまで繰り返し処理が継続されるようにしています。プレイヤーの入力の初期判定を行うプレイヤー(ここではあえてゲームっぽくこう記述します)が4桁の数字を入力する処理は12行目から20行目のアクションで構成されています。ここではまず、プレイヤーが入力した文字列が4桁の数字になっているかどうかを判定するのですが、この判定は前項と同じ「テキストの解析」アクションと正規表現を使っています。前述の通り、4桁の数字が入力されている場合、%Position%変数に「-1」以外の数字が格納されるため、ここでは「if」アクションで%Position%が「0」より小さい場合(-1の場合)にエラーメッセージを表示するフローとしています。このエラーに到達した場合、「ラベル」と「移動先」アクションを使って再度入力のアクションの位置までプロセスを戻します。「ヒット」と「ブロー」の数をカウントする4桁の数字が入力されていることが確認できたら、コンピュータの正解と比較し、ヒットとブローの数をカウントします。ここではカウントした数値を格納するために%Hit%と%Blow%のほか、判定中の桁数を格納する%Digit%変数も準備しています。each」アクションを使って行います。eachはリストの要素の数だけ繰り返し処理ができるアクションですが、ここで4桁の数字の生成に使用した%AnswerList%を指定することで、一文字ずつのチェックを行うことができます。数字が存在するかどうかは「テキストの解析」アクションを使います。eachで取り出した%CurrentItem%の数字が含まれていれば「ヒット」もしくは「ブロー」であることがわかります。その数字が見つかった場所は%Position%に格納されるので、現在チェック中の桁数と%Position%の値が一致していれば「ヒット」であることがわかります。この「現在チェック中の桁数」はループアクションなどでは保持されたいないため、先ほど別途用意した%Digit%変数を使い、ループのたびに増加させることで桁の位置を判断しています。eachのループが終了した段階でそれぞれの値が%Hit%と%Blow%変数に格納された状態となります。正解もしくはゲーム終了の判定を行う最後に35行目から41行目のアクションで正解やゲーム終了の判定を行います。ここまでで%Hit%と%Blow%のカウントができているので、まずはプレイヤーの入力した数字%UserInput%と、その数字に対する%Hit%と%Blow%の内容を%UserInputList%リストに追加しておきます。ボックスは以下のように入力しています。Blowこのリストはゲームが継続する際のヒント表示に使われるほか、正解やゲーム終了時の結果表示にも使われます。この段階で%Hit%の値が「4」になっていればすべての数字と桁の位置が一致しているため、正解となりゲーム終了です。「If」アクションを使い正解のメッセージを表示して「フローを停止する」アクションを使うことでフロー全体が停止されゲームも終了します。%Hit%が4以外の場合は処理が継続され、ループが設定された13行目のアクションへと戻ります。15行目の「入力ダイアログを表示」アクションには%UserInputList%を入力ダイアログメッセージに指定しておくことで、ゲームが継続した際のヒントが表示され、過去の入力内容とヒントを参考に入力ボックスに入力ができるようになります。最終的に全体のループが10回繰り返され、正解にたどり着かなかった場合、最後の41行目のアクションに指定された「メッセージ表示」が実行され、ゲームが終了します。Desktopは本来ゲーム開発を行うようなツールではないのですが、ツールに用意されているアクションの使い方によっては、今回のような簡単なゲームやユーティリティのアプリのような使い方もできます。Desktopのようなツールは「ローコード」や「ノーコード」開発と呼ばれ、プログラムのコードこそ書かないものの、プロセス設計などの基礎的な知識を学ぶことができるため、プログラミングの入門としても活用することが可能です。Desktopのアクションに分解し、実際に遊べるフローをサンプルとして作ってみました。アイデア次第ではゲーム的な要素を取り入れたプロセス管理(ゲーミフィケーション)やパフォーマンスの管理などいろいろな応用にも使えるかもしれません。いろいろなアイデアを基に自動化にチャレンジしてみてください。お読みくださりありがとうございました。今回の内容が少しでもお役に立てば幸いです。コピークラベル(Cravel)をフォローする広告この記事を書いた人クラベル(Cravel)Webサイト構築、Wordpressのカスタマイズやphpプログラミングなどやってます。BPM(ビジネスプロセス管理)、BPR(業務改革)コンサルなどにも従事。世の中すべてピタゴラ装置をモットーに自動化します。ブログは省エネ運営中。Cocoonカスタマイズやゲーム、ガジェットの話題など。Desktop:条件(〇〇の場合)アクションの使い方。Desktopでブール変数を使う方法です。Desktop:文字列型変数の使い方。コメントをキャンセルメールアドレスが公開されることはありません。名前メールサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。広告クラベル(Cravel)Webサイト構築、Wordpressのカスタマイズやphpプログラミングなどやってます。BPM(ビジネスプロセス管理)、BPR(業務改革)コンサルなどにも従事。世の中すべてピタゴラ装置をモットーに自動化します。ブログは省エネ運営中。Cocoonカスタマイズやゲーム、ガジェットの話題など。Coffee当サイトは皆さまのご支援で成り立っています。当サイトの情報が少しでもお役に立てたらお気持ちだけでもご支援いただけると励みになります。Desktop:文字列型変数の使い方。Desktop:条件(〇〇の場合)アクションの使い方。Desktop:文字列型変数の使い方。Desktop:条件(〇〇の場合)アクションの使い方。Reserved.メニュークラベル検索タイトルとURLをコピーしました。