ホーム全カテゴリーScratchスポンサーリンクScratchスクラッチ(Scratch)で神経衰弱ゲームを作ろうScratch2022.08.21Scratchで神経衰弱ゲームを作ってみます。カードをめくって絵が合えばOKというゲームです。単純なゲームでプログラムも短いのですが、アルゴリズムが割と難しかったです。Scratchで作ることに苦戦しました。このゲームでは「クローン」、変数「このスプライトのみ」をうまく使っていきましょう。絵柄カードのプログラムプログラム開始時にスプライトの固有番号を付けるスプライトをランダムに配置する神経衰弱ゲーム神経衰弱はカードをめくって2枚の絵柄を合わせていくゲームです。今回は28枚のカードで14組の絵柄を合わせていきます。細部は丁寧に作っていないので、注意していただきたいことがあります。・カードは連打でめくらないでください。1秒以上間隔をあけてください。・すべてのカードをめくり終わったら再スタートしてくださいコンプリートしてもイベントはありません。完成プログラムプログラムの完成形はこちらです。非効率なプログラムもあります。すれば効率のいいプログラムになるか考えてみてください。(作成したあと、修正する余裕がなかったのでそのまま公開しました。変数の名前に「ローカル変数」と名前がついているものは「このスプライトのみ」で作成してください。トランプの絵柄用意カードの裏面絵柄を用意してください。スクラッチのスプライトにはトランプの裏絵柄がありません。別途用意してスプライトに追加してください。今回は「いらすとや」の素材を使っています。(irasutoya.com)このイラストを使う場合、大きさを30にするとちょうど良いです。絵柄のスプライトを用意トランプの表面の絵柄を用意します。スクラッチで用意されているスプライトから適当に14種類を2個ずつ追加しましょう。スプライトのプログラムカード裏柄のプログラムカード裏柄のスプライトにメインのプラグラムを作成していきます。絵柄のスプライト14種類、各2枚用意した28枚のスプライトに作成するするプログラムです。基本的に同じプログラムをコピーすればよいです。変数の値は1つずつ変更してください。変数名に「ローカル変数」と付いているので「このスプライトのみ」で作成してください。「ローカル変数カード番号」はすべてのスプライトで違う番号を付けてください。28枚あるので1~28の番号を使います。「ローカル変数種類番号」は同じ絵柄のスプライトには同じ番号を付けてください。14種類のスプライトがあるので1~14の番号を使います。楽天市場調べ)Amazon楽天市場Yahooショッピングポチッププログラム解説カード裏柄のプログラムカードの裏柄に作成するプログラムを解説します。共通で実行したいプログラムや初期処理などはこのスプライトに作成することにします。神経衰弱の中心プログラムを作成します。・カードクリックしたときの処理(カードをめくり、絵柄が一致したかの判定)プログラム開始プログラムが開始されたときの処理です。ブロック定義を使って、大まかにプログラムを分けています。分けておかなと、あとでプログラムを修正するときに訳が分からなくなるためです。裏柄のカードを「隠す」にしています。プログラムの開始時点では裏柄カードのスプライトの位置が決まっていません。適当な場所にカードが表示されていると格好悪いので隠しています。初期化処理このプログラムで使う変数に初期値をセットしたり、不要な値を削除したりします。プログラムを始めて実行するときは不要ですが、再実行をすると前回実行した時のデータが残っていたりします。誤作動の原因になるので、プログラムの開始時には初期化をするようにしましょう。裏柄のスプライトをクローン機能で複製して並べるときに、何段目の何個目に配置するかをカウントするための変数です。X方向(横)に7列、Y方向(縦)に4段のカードを並べます。裏柄のスプライトを並べたときに、スプライトごとに番号を付けます。どのスプライトがクリックされたかを他のすスプライトからわかるようにするためです。「このスプライトのみ」で変数を作ります。裏柄スプライトをX座標、Y座標のどの位置に配置するかを設定する変数です。1枚目にめくったカードの「ローカル変数クローン番号」を記録する変数です。2枚目にめくったカードの「ローカル変数クローン番号」を記録する変数です。(一瞬だけ1枚目にめくったクローン番号が入ってきます。裏柄スプライトを配置したX軸、Y軸の座標をすべて記録します。リストの1番目には「ローカル変数クローン番号」が1のスプライトのX軸、Y軸の座標値が入るようにします。同じ場所に絵柄のスプライトを配置するために使います。絵柄カードの「ローカル変数カード番号」の一覧を作成します。絵柄カードをランダムに配置するときに使います。絵柄カードをランダムに配置した時に、裏柄スプライトの何番のカードの下に配置したかを管理する一覧です。絵柄カードをランダムに配置した時に、絵柄スプライトの何番目のカードの下に何の種類の絵柄を配置したかを管理する一覧です。裏柄カードのクローンを横7列、縦4段分並べていきます。(ほかの手段として、裏柄のスプライトを28個作成しても構いません)まず、画面の左下から右に7個並べます。次に1段上に左から右に7個並べます。7個を右に並べる作業を4回繰り返すプログラムになっています。Y位置の計算を-130+(85×Y並べ)としています。1枚目のカードを置く縦位置を-130の座標にしています。そのあと2段目は85座標上にずらして配置します。X位置の計算は-200+(65×X並べ)としています。1枚目のカードを置く横位置を-200の座標にしています。そのあと右に65座標ずらして配置します。ここで使っている-130、-200、85、65という数字は裏柄カードが重ならなずきれいに並ぶように微調整して決めました。主要な処理は「7回繰り返す」のブロックの中にあります。裏柄カードのクローンを作ります。配置する座標のX位置、Y位置は先ほどの計算式で決定します。その位置を「カード位置X」「カード位置Y」のリストに登録します。1個目のクローンはリストの1番目、2個目のクローンはリストの2番目に登録するようになっています。クローンを配置しますが、「カード位置X」「カード位置Y」から座標を取ってきます。横に配置したクローンを「表示」します。クローンの元になっている裏柄スプライトは初期化で「隠す」にしているので「表示する」に変更する必要があります。後は横に7回、縦に4回の繰り返しを行うように「X並び」「Y並び」の変数を君とアップしていきます。絵柄のカードの位置を決めるプログラムです。裏柄カード28枚が配置済みなので、28枚のうちどのカードの下にどの絵柄カードを配置するのかを決めます。毎回同じ場所に同じカードを配置するとゲームとして面白くないので、毎回ランダムに場所を決めることにします。絵柄カードのカード番号の一覧を作ります。「カードリスト」変数に絵柄カードの「ローカル変数カード番号」の一覧を作ります。今回のプログラムは少し手抜きをします。「ローカル変数カード番号」の中には1~28までの数字が重複や欠番なくすべて入っている前提にします。絵柄カードの「ローカル変数カード番号」に入れた値を念のためチェックしておきましょう。「種類配置」のリストを初期化します。今回はいったん28個のリストをすべて「0」にしておきます。(このリストはもう少し後で使います。実は初期化処理のブロックで実行してもいいです。)「カードリスト」からランダムに1つの値を取り出し、「カード配置」リストに追加していきます。ランダムに取り出した順に、裏柄カードの左下からに割り当てるイメージです。カードリストの1番目は「ローカル変数クローン番号」の1番に対応しているイメージです。一度取り出した絵柄カードを2回以上取り出さないように「カードリスト」から削除します。残ったカードリストから、ランダムに1つの値を取り出す処理を繰り返します。(カードの数28回繰り返すループ処理にするか、カードリストがなくなるまで繰り返すループ処理にするか、好きな方法を考えてみてください)カードの位置が決まったら、メッセージ「表カード配置」を発信します。絵柄カードのスプライトにはこのメッセージを受け取ると、自分の配置先に移動するプログラムを仕込んでいます。裏柄のカードがクリックされたときに神経衰弱の主要なプログラムが動くようになっています。主な機能は次のような内容です。・カードを非表示にして絵柄スプライトが見えるようにする。・2枚目のカードがクリックされたとき、1枚目の絵柄スプライトと同じ絵(種類番号)と同じかチェックします。違う絵柄の場合、裏柄カードを表示して絵柄スプライトを隠します。オープンにする裏柄カードの番号を記録するまず、裏柄スプライトがクリックされたら、スプライトが持っている「ローカル変数クローン番号」を「オープン番号」に設定します。「ローカル変数クローン番号」には裏柄スプライトのクローンを作成した時に、1枚ずつ異なる数字(1~28)が入っています。「オープン番号」に設定するのは、オープンしたカードの番号を記録しておくためです。(この時点で「オープン番号」設定するのは効率のいいプログラムではありません。効率のいいプログラムを考えてみてください。「もし、オープン済み番号=0なら」でめくったカードが1枚目か2枚目かを判断します。「オープン済み番号」が0の時は1枚目がめくられたと判断します。「オープン済み番号」に「ローカル変数クローン番号」を設定します。(オープン番号を設定しても構いません。)オープンにする裏柄スプライトを非表示にして絵柄スプライトを見えるようにします。(ここで非表示していますが、もっと早い段階に「隠す」処理をした方が、効率のいいプログラムになります。)オープンにするカードが2枚目の場合まずは、2枚目のカードも非表示します。1枚目に開いたカードと2枚目に開いたカードの絵柄カードが一致しているかチェックします。「オープン済み番号」と「オープン番号」に入っている値で、どこのカードがオープンされたかわかります。「種類配置」リストには絵柄カードの種類番号が入っています。「オープン済み番号」と「オープン番号」番目に入っている値が同じなら、同じ絵柄をオープンしたと判断できます。一致した場合は、処理は終了です。「オープン番号」「オープン済み番号」を初期化(0にする)して、次のペアを探す処理に移ります。一致しなかった場合は、1秒待って裏柄カードのクローンを作って絵柄カードを隠します。クローンを作る座標は「カード位置X」リスト、「カード位置Y」リストに入っています。(絵柄カードを隠すためにクローンを作っていますが、もともとの裏柄スプライトを表示する方法もあります。)絵柄カードのプログラム絵柄スプライトのプログラムを主に2つです。・プログラムが開始されたときに、カードの番号と種類番号をセットする。・スプライトの場所をランダムに配置する。絵柄スプライトには、ほとんどプログラムをつくっていません。裏柄スプライト側に神経衰弱の主要プログラムを作っています。プログラム開始時にスプライトの固有番号を付ける絵柄スプライトごとに「ローカル変数カード番号」と「ローカル変数種類番号」をセットします。セットする値は、スプライトごとに個別に設定します。・・・このように、「ローカル変数カード番号」には1~28の番号を重複しないように付けます。「ローカル変数種類番号」には同じ絵柄のスプライトには同じ番号を付けます。スプライトをランダムに配置するメッセージ「表カード配置」を受け取ったときの処理です。裏柄スプライトでカードの配置場所を決めています。裏柄スプライトで配置場所が決まったら「表カード配置」のメッセージを送ってきます。「カード配置」リストに自分が何番の絵柄カードの場所に配置されるのか登録されています。自分の「ローカル変数カード番号」を使って配置する番号を取得します。配置する番号がわかったら「カード位置X」リスト、「カード位置Y」リストから座標の値を取得します。座標位置にスプライトを移動します。「種類配置」リストに裏柄カードの何番目の位置に、なんの種類の絵柄が配置されているかを記録します。【スクラッチ(scratch)プログラミング入門】初期化シェアするTwitterFacebookはてブLINEコピーおく人生思うがまま関連記事Scratchmicro:bitで距離センサーを作ろう(車の距離センサーっぽい)車の距離センサーのようなものを作ってみます。バック駐車するときに障害物との距離が詰まるとピーピーと音でお知らせしてくれるやつです。距離が詰まっていくとピピピと音の間隔が短くなっていきます。このプログラム単体では大した機能ではありませんが、壁にぶつからないように自立して動くロボットなどいろいろな場面で応用できます。part2(格好良く配ろう)トランプをシャッフルして配るプログラムを考えてみましょう。前回はリストを使ってトランプをシャッフルするプログラムと、5枚ずつ配るプログラムを作りました。今回は、リストの操作だけでなく、見た目にトランプを配るプログラムを作ってみます。前回の記事をもとに改造していきます。トランプを配る動きも作っていくので、待ち時間を調整したりちょっと難しい内容になっています。プログラムを作ってみて、こんなに大変になるとは思っていませんでした。スクラッチで複数のスプライトの足並みをそろえて動かすのは難しかったです。Scratchはじめてmicro:bitを使うにはmicor:bitを使い始めるまでの手順を解説します。始め方はとても簡単です。micro:bitにアクセスするだけ。あとはmicro:bitにプログラムを転送する方法を覚えればOKです。Scratchmicro:bitでカタカナを表示するmicro:bitでカタカナを表示してみます。標準ではmicro:bitのLEDに表示できるのはアルファベットと数字です。日本人には少し不便ですね。そこで、日本語を表示できるようにしましょう。カタカナであれば簡単に表示することができます。今回はスクラッチの「演算」部品について解説します。演算部品は単体ではスプライトを動かすなどの目に見える結果を出すことができません。「制御」部品を使う場合などに必ず必要になる機能です。「数学を勉強する前に足し算、引き算、掛け算、割り算の基礎は勉強しておきましょう。Scratchでシューティングゲームを作ろうScratchでシューティングゲームを作ってみます。今回のシューティングゲームはとても簡単に作ることができます。基本的なシューティングゲームの動きは入っているので、応用してもっとすごいゲーム作成にもチャレンジしてください。ブログランキングから来ました。訪問させていただきます。PM訪問ありがとうございます。雑なプログラムですが、楽しんでいただければ嬉しいです。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。新着記事ぼったくり?WealthNaviやってみた。5年経過2024.10.18尿路結石はめちゃくちゃ痛い体験記2024.05.09Scratchでパニックボールみたいなゲームを作ろう2024.04.12パニックボールみたいなゲーム2024.03.31Scratchで迷路を解くプログラムを作ろう2024.03.19おく5歳、7歳の2児の親。ITの仕事をしながら、子供向けの教育コンテンツを考えています。現在はスクラッチの勉強をしながら情報発信中。人生思うがまま.TOP記事お問合せプライバシーポリシータイトルとURLをコピーしました。