検索:
「7つの習慣」から学ぶ、経営者・エンジニアに必要な原則思考

PR

はじめに

会社を経営していると、日々の意思決定や人間関係、時間の使い方など、様々な課題に向き合うことになります。今回は、そうした課題に向き合う上で土台となる考え方を教えてくれる一冊、スティーブン・R・コヴィー著「7つの習慣」をご紹介します。

以前、改めてこの本を読み直す機会があり、その際にまとめた内容をベースにお伝えします。


「7つの習慣」とは?

著者のスティーブン・リチャーズ・コヴィー(1932-2012)が書いたこの本は、全世界で3,000万部、日本国内でも200万部を超えるベストセラーで、自己啓発書の代表格として知られています。1989年の初版以来、時代を超えて読み継がれている一冊です。

なぜ他の自己啓発本と違うのか

コヴィーは、アメリカ建国以来発行された約200年分の「成功」に関する文献を調査したと言われています。その結果見えてきたのが、以下のような違いです。

  • 第二次世界大戦以降(直近50年ほど)の自己啓発書:コミュニケーションスキルやモチベーションアップなど、即効性・短期的なテクニックに焦点を当てたものが中心
  • 第二次世界大戦以前の文献:小手先のテクニックではなく、根本的な人格を育てることに焦点を当てたものが中心

「7つの習慣」は後者の考え方を土台にしており、長期的・持続的に効果を発揮する原則を扱っている点が、他の自己啓発本との大きな違いだとされています。


7つの習慣の全体像

7つの習慣は、大きく3つのステップに分かれています。

ステップ習慣目的
Step1:私的成功①主体的でいよう/②最初に終わりを思い描こう/③最優先事項を優先しよう自分が成功する(自立)
Step2:公的成功④Win-Winを考えよう/⑤まず相手の理解に徹しよう/⑥シナジーを創発しようみんなで成功する(相互依存)
Step3:再新再生⑦刃を研ごうさらに自分を磨く

順番も重要で、まず自分自身が「自立」した状態(私的成功)を築いてから、他者との「相互依存」(公的成功)に進む、という構造になっています。「依存→自立→相互依存」というステップを踏むことで、単なる技術ではなく、人格そのものが育っていく、というのがこの本の考え方です。

各習慣のポイント


習慣①:主体的でいよう

私たちの周りには、自分の力で変えられることと、変えられないことがあります。前者を「影響の輪」、後者を含めた関心事全体を「関心の輪」と呼びます。

反応的な人は、天気や他人の言動、景気など、自分にはコントロールできない「関心の輪」の外側に意識とエネルギーを注いでしまいます。不満や愚痴は多くなりますが、状況は何も変わりません。それに対して主体的な人は、自分が実際に影響を及ぼせる「影響の輪」の中に力を注ぎます。すると、行動の結果が積み重なり、影響の輪そのものが少しずつ広がっていく、という好循環が生まれます。

経営でも同じことが言えます。市場環境や景気を嘆くのではなく、「自社が今できること」に集中し続けることが、結果的に会社の影響力を広げていくことにつながります。。


習慣②:最初に終わりを思い描こう

この習慣では、「3年後に行われる自分の葬儀で、誰にどんな言葉をかけられたいか」を想像するワークが紹介されています。配偶者にどんな夫・妻だったと言われたいか、子供にどんな親だったと言われたいか、会社の同僚や部下にどんな人だったと言われたいか——こうした問いに向き合うことで、自分の内面の奥深くにある「基本的な価値観」に触れることができるとされています。

何を「人生の中心」に置くか

人は無意識のうちに、何かを人生の中心に据えて生きています。しかし、何を中心に置くかによって、心の安定度は大きく変わってくるとされています。いくつか例を挙げます。

  • 仕事中心の人:仕事の成果や評価に自分の価値を重ね合わせてしまうため、プロジェクトが失敗したり、業績が振るわなかったりすると、自分自身の存在価値まで揺らいでしまいます。経営者やマネージャーほど陥りやすいパターンです。
  • 家族中心の人:家族の幸せを何より優先する一方で、家族の誰かが自分の思い通りにならない状況(子供の反抗期、家族間のトラブルなど)に直面すると、心の安定が大きく崩れてしまいます。家族への愛情自体は尊いものですが、それだけを拠り所にすると不安定になりやすいということです。
  • お金中心の人:経済的な安定を追い求めるあまり、いつの間にかお金そのものに縛られてしまいます。資産が増えても増えても安心できず、逆にお金を失うことへの恐怖が意思決定を歪めてしまうことがあります。
  • 自己中心の人:自分の利益や快適さを最優先にする生き方です。短期的には楽ですが、周囲からの信頼や協力を得にくくなり、長期的には孤立しやすい傾向があるとされています。受け取るばかりで与えることをしないため、人間関係や社会との接点が細くなっていきます。

このように、仕事・家族・お金・自己など、何か一つの対象に人生の中心を置くと、その対象の浮き沈みに応じて心が揺さぶられ続けることになります。これに対して、コヴィーが提案するのが「原則を中心に置く」という考え方です。公正、誠実、正直、貢献、成長といった、時代や状況が変わっても揺るがない普遍的な原則を中心に据えることで、何が起きても心が安定した状態を保てる、とされています。


習慣③:最優先事項を優先しよう

「緊急度」と「重要度」で仕事を4つの領域に分けたとき、多くの人は「緊急で重要なこと(第I領域)」の対応に追われる日々を送りがちです。締切のある仕事や突発的なトラブル対応などがこれにあたります。

しかし本当に大切なのは、「緊急ではないが重要なこと(第II領域)」——中長期の計画づくり、スキルアップ、人間関係の構築、体調管理など——に、あらかじめ時間を確保しておくことだとされています。この本では「木こりのジレンマ」という例え話が紹介されています。斧の切れ味が悪くなっているのに、「研いでいる暇なんてない」と言いながら鈍った斧で木を切り続ける木こりの姿は、まさに第II領域を後回しにしてしまう私たちの姿そのものです。

第II領域の仕事を先にスケジュールに組み込み、余った時間で第I領域に対応する——この順番を意識するだけで、次第に緊急対応に追われる場面自体が減っていくとされています。


習慣④:Win-Winを考えよう

人間関係や交渉ごとには、「自分が勝って相手が負ける(Win-Lose)」「自分が負けて相手が勝つ(Lose-Win)」「両者とも負ける(Lose-Lose)」など、様々なパターンがあります。この習慣では、双方が満足できる「Win-Win」の関係、あるいはそれが実現できないなら無理に取引しない「No Deal」を選ぶという考え方が紹介されています。

Win-Winを実現するための前提として、「自分か相手か」の二者択一ではなく、双方が納得できる「第3の案」が必ず存在すると信じることが出発点になります。また、それを支えるのが「勇気」と「思いやり」のバランス、そして、この世には皆に行き渡るだけの豊かさがあるという「豊かさマインド」だとされています。


習慣⑤:まず相手の理解に徹しよう

人は誰かの話を聞いているとき、無意識のうちに「評価する(同意か反対かを判断する)」「探る(自分の関心から質問する)」「助言する(自分の経験から助言する)」「解釈する(自分の価値観で相手の行動を説明する)」といった、自分本位の反応(自叙伝的反応)をしてしまいがちです。

これらはすべて、「相手を理解する」よりも先に「自分がどう思うか」を優先してしまっている状態です。そうではなく、相手の立場に立ち、相手の価値観の中に入り込んで理解しようとすることで、初めて信頼関係が生まれるとされています。話の途中で評論を始めてしまうと、相手が本当に伝えたかったことは、その先にあったかもしれません。


習慣⑥:シナジーを創発しよう

「全体は各部分の総和よりも大きくなる」というのが、この習慣の中心にある考え方です。①〜⑤の習慣(主体性、終わりを思い描く力、優先順位づけ、Win-Winの姿勢、相手への理解)を土台にできているチームでは、メンバー一人ひとりの能力を単純に足し合わせた以上の、異次元の成果が生まれるとされています。

そのためには、グループの全員が「古い脚本」——固定観念や過去のやり方——を手放し、新しい発想を一緒に作り上げていく姿勢が必要です。対立する意見があっても、それを排除するのではなく、そこから第3の創造的な案を生み出す機会と捉えることがポイントです。


習慣⑦:刃を研ごう

最後の習慣は、「肉体」「知性」「社会」「精神」という4つの側面から、自分自身を継続的にメンテナンスし続けることの重要性を説いています。

  • 肉体:ランニングや筋トレなど、体を動かす習慣
  • 知性:読書など、学び続ける習慣
  • 社会:新しい人間関係を築いたり、苦手な人ともコミュニケーションを取ったりする習慣
  • 精神:自然に触れる、自分自身と向き合う、価値観を確認するといった習慣

先ほどの「木こりのジレンマ」がここでも当てはまります。目の前の仕事に追われて自分を磨く時間を後回しにし続けると、いずれ「斧」そのものが鈍り、成果を出すこと自体が難しくなってしまいます。①〜⑥の習慣を長期的に実践し続けるためにも、この「刃を研ぐ」時間を意識的に確保することが欠かせません。


本を読むのが苦手な方には

文章量が多く、読み切るのが大変に感じる方もいるかもしれません。そうした場合は、YouTube等で内容を分かりやすく解説している動画から入るのも一つの方法です。まずは全体像をつかんでから、気になった章だけ本で深掘りする、という読み方もおすすめです。


まとめ

「7つの習慣」は、テクニックではなく人格そのものを育てることに焦点を当てた一冊です。経営やチームマネジメントに関わる中で、判断に迷ったときの拠り所になる考え方が詰まっています。気になった方は、ぜひ手に取ってみてください。

Amazonで見る(7つの習慣 完訳版)


本記事はアフィリエイトリンクを含みます。

Arduinoで自動水やり機を作ってみた|観葉植物の水やりを自動化するDIYキット

Arduinoで自動水やり機を作ってみた|観葉植物の水やりを自動化するDIYキット

Arduinoと市販の自動水やりDIYキットを使って、観葉植物に自動で水をあげる装置を自作しました。必要な材料・配線・プログラムまで、初心者向けに手順を解説します。

PR

はじめに

出張や旅行で家を空けることが多いと、悩ましいのが観葉植物の水やりです。「気づいたら土がカラカラだった」という経験がある方も多いのではないでしょうか。

今回は、市販の自動水やりDIYキットとArduinoを組み合わせて、土の水分量をセンサーで検知し、乾いたら自動でポンプが作動する装置を作ってみました。電子工作が初めての方でも取り組める難易度なので、手順を追ってご紹介します。

製作時間の目安:2時間、難易度:★★☆☆☆、小学生高学年以上のお子様と一緒にも取り組めます。


必要な材料

今回使用したのは以下の部品です。すべてAmazonで購入できます。

部品 用途 購入リンク
自動水やり装置 DIYキット(静電容量式土壌水分センサー+小型ポンプ+リレー付属) 土壌の水分検知・水の吐出・ポンプのON/OFF制御 Amazonで見る
Arduino UNO 制御基板 Amazonで見る
ブザー(任意) 水やり時に音を鳴らす Amazonで見る
ジャンパーワイヤ・ブレッドボード 配線 Amazonで見る

全体でかかった費用は、すでにお持ちのArduinoや工具を除くと、キット代を中心に2,000円以下でした。 Arduinoをお持ちでない方は、こちらのような入門キットでの購入もおススメです。 ⇒ Arduino 入門キット

アイディア次第で色々な工作が楽しめますよ☆


装置の構想

水分センサーが鉢の水分量を検知し、一定の値以下になったらポンプが作動して水をあげる、というシンプルな仕組みです。

装置の構想図


ポンプ・センサーを配線する

まずはポンプとセンサーを配線します。

ポンプは比較的大きな電力を必要とするため、Arduinoから直接ではなく、リレーを介してON/OFFする構成にしています。

配線図

配線で特に注意したいのは、リレーモジュールの極性(+/-)です。モジュールに印字されているシルク表記を確認しながら接続しないと、正しく動作しないので気をつけてください。


制御プログラムを作る

土壌水分センサーの値を読み取り、しきい値を下回ったらポンプを作動させるプログラムです。

// アナログ入力ピン
const int analogPin = A0;

// デジタル出力ピン
const int digitalPin = 2;

// しきい値(ADCの半分)
const int threshold = 450;
int cnt = 0;

void setup() {
  pinMode(digitalPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // A0の値取得(0~1023)
  int sensorValue = analogRead(analogPin);

  // 出力判定
  bool outputState = false;
  if (sensorValue < threshold) {
    digitalWrite(digitalPin, HIGH);
    outputState = true;
    cnt = 0;

  } else {
    digitalWrite(digitalPin, LOW);
    outputState = false;
    cnt++;
  }

  // シリアル表示
  Serial.print(" , A0 = ");
  Serial.print(sensorValue);
  Serial.print(" , D2 = ");
  Serial.println(outputState ? "HIGH" : "LOW");
  Serial.print("cnt = ");
  Serial.print(cnt);

  delay(150);
}

プログラムのポイント

  • threshold(しきい値)の数値を変えることで、水をあげ始めるタイミングを調整できます。植物の種類や鉢のサイズに応じて、実際に値を確認しながら調整するのがおすすめです
  • センサーの値は、Arduinoの「シリアルモニタ」からリアルタイムで確認できます

プログラムを転送すると、しきい値(450)を下回ったタイミングでポンプがON/OFFするようになります。

実際に運用してみると、我が家の鉢のサイズ・土の種類ではしきい値400前後がちょうど良い頻度でした。設置直後の1週間ほどは、シリアルモニタで数値を確認しながら少しずつ調整することをおすすめします。


ブザーを追加する

水をあげているタイミングが分かるように、ブザーを追加しました。任意の工程です。

ブザーの配線


完成した装置

完成品1 完成品2 完成品3

設置してから数週間経ちますが、水切れで植物がしおれることがなくなりました。出張前にセットしておけば安心です。


まとめ

Arduinoと市販キットを組み合わせるだけで、比較的簡単に自動水やり機を自作できました。出張が多い方や、水やりを忘れがちな方には特におすすめです。

同じくArduinoを使った電子工作として、ペット用自動餌やりフィーダーの製作記事もあわせてご覧ください。


本記事はアフィリエイトリンクを含みます。

【Arduino】ペット自動給餌器を自作する方法|旅行・出張中の餌やりを解決

PR

日帰り旅行で帰りが遅くなる時など「ペットの餌やりをどうしよう?」ってなりますよね。

そんな時に役に立つ、タイマーでペットに自動で餌をあげる「餌自動フィーダー」を自作してみました。夏休みの自由研究などにもおススメです。

ペット自動給餌器の完成イメージ図
完成イメージ図

用意するもの

制御基板https://amzn.to/4ymxWey
Arduino UNO
モータドライバhttps://amzn.to/45dWj0C
SU-1201(株式会社イーケイジャパン)
モータhttps://amzn.to/4bSVdeq
MG-12V-1:380(Olimex LTD)

今回使用した部品(モータドライバ、モータ)の合計は、Aruduinoを除いておおよそ4,000〜5,000円程度でした。百均で購入した外装部材(土台、滑り台等)を含めても、全体で5,000円以内に収まっています。

制御には Arduinoを使用しました。 Arduinoをお持ちでない方は、こちらのような入門キットでの購入もおススメです。 ⇒ Arduino 入門キット

アイディア次第で色々な工作が楽しめます。

シャッタ制御部をつくる

まずは一番重要なシャッタをタイマーで開閉する制御部分を作ります

モータドライバSU-1201の配線
モータドライバ(SU-1201)
制御基板Arduino UNOの写真
制御基板(Arduino UNO)

モータ

https://amzn.to/4bSVdeq
MG-12V-1:380(Olimex LTD)

まずはじめに制御基板とモータドライバをドッキングします。

・ArduinoのDIGITAL 0番ピンとモータドライバ基板のJ2-0 番ピンの位置
・ArduinoのANALOG A5番ピンとモータドライバ基板のJ4-A5 番ピンの位置
が合うようにして、しっかりと奥まで差し込みます。

プログラミングをするための、Arduinoの開発環境「Arduino SDK」をインストールします。
参考サイト:https://www.kkaneko.jp/tools/win/arduinoide.html

COMポートの指定

はじめにArduino SDKを立ち上げて、COMポートを指定します。
ArduinoとPCをUSBケーブルで接続すると、該当するCOMポート番号に(Arduino UNO)が表示されるので、それを選択します。

Arduino SDKでCOMポートを選択する画面

Arduinoタイプの指定

次にArduinoのタイプをTools -> Boad: > ●Arduino AVR Boards > から、「Arduino UNO」を選択してください

Arduino SDKでボードタイプを選択する画面

サンプルプログラムの実行

設定が完了したら、以下のサンプルコードを実行し、開発環境が構築できていることを確認します

void setup() {
  // put your setup code here, to run once:
  pinMode(8, OUTPUT);
  pinMode(12, OUTPUT);
}

void loop() 
{
  // put your main code here, to run repeatedly:
  digitalWrite(8, HIGH);
  digitalWrite(12, LOW);
  delay(1000);
  digitalWrite(8, LOW);
  digitalWrite(12, HIGH);
  delay(1000);
}

Upload(右矢印マーク)ボタンを押して、プログラムを転送・実行します。

モータドライバ基板の2つのLEDが赤く1秒ずつ交互に点灯したらOKです。

実際にモータを動かしてみる

下記のコードを入力すると、モータが正転(1秒)⇒停止(1秒)⇒逆転(1秒)⇒停止(1秒)と動作します。

void setup() {
  // put your setup code here, to run once:
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop() 
{
  // put your main code here, to run repeatedly:
  analogWrite(9, 160); //回転スピードの設定
  digitalWrite(4, LOW); //回転方向の設定
  digitalWrite(5, HIGH);
  delay(1000);

  analogWrite(9, 0); //回転スピードの設定
  delay(1000);

  analogWrite(9, 160); //回転スピードの設定
  digitalWrite(4, HIGH); //回転方向の設定
  digitalWrite(5, LOW);
  delay(1000);

  analogWrite(9, 0); //回転スピードの設定
  delay(1000);
}

次にタイマーを入れます

  analogWrite(9, 0); //回転スピードの設定
  delay(3600000); //設定したいタイマー値 [ms]

このコードを14行目の前に入れれば、タイマーが作動します。delayの()に入る数字がミリ秒単位のタイマー値なので、目的に合わせて数値を入れてください。

1時間なら、60×60×1,000で3,600,000となります。

装置を作る

モータの制御ができたので、次は餌やり機の本体を製作します。

百均で以下の材料を購入しました。

100円ショップで購入した給餌器の外装材料

段ボールなどで各パーツを作り、組み立て

・土台(フレーム)は、百均で購入した木を木工用ボンドで接着

・餌を入れるホッパは、トイレットペーパーの芯がぴったりだったので、それを段ボールにはめて使用

・滑り台の部分はプラダンを折り曲げて固定して使用

完成したペット自動給餌器の外観
完成した装置の外観

②市販品の紹介セクション(新規セクションとして追加)

自作が難しそう…という方には、市販の自動給餌器もおすすめです

電子工作に慣れていない方や、もっと手軽に導入したい方には、市販の自動給餌器という選択肢もあります。タイマー機能はもちろん、スマホから餌やりができるカメラ付きモデルなど、機能も充実しています。

タイプ①:シンプルタイマー式
  • エレコム「PET-AF06WH」:ダイヤルタイマー式。1日最大6回、1回あたり約7〜112gの給餌量を16パターンから設定可能。停電時のバックアップ機能もあり(https://amzn.to/4fbQmHyx)
  • マルカン「CT-526 ペット用オートフィーダー3Days」:3日間(6食分)の給餌に対応。長期不在にも使える設計(https://amzn.to/4wTePr3
タイプ②:スマホ連携・カメラ付き
  • PETKIT「自動給餌機 P570」:スマホアプリで給餌スケジュールを設定可能。ドライフードに加えフリーズドライフードにも対応。給餌時間のずれは1分以内という検証結果あり(https://amzn.to/44Id7g6
タイプ③:大容量・長期不在対応
  • Surfola「自動給餌器 SP03」:約4Lの大容量タンク、双方向音声機能とカメラを搭載。外出先からペットの様子を確認しながら給餌できる(https://amzn.to/4yrHyEU

まとめ

Arduinoとモータドライバを組み合わせることで、比較的シンプルな仕組みでペット用の自動給餌器を自作できました。旅行や出張で家を空ける際の「ペットの餌やり問題」を解決する手段として、ぜひ挑戦してみてください。

同じくArduinoを使った電子工作として、観葉植物向けの自動水やり機の製作記事もあわせてご覧ください。植物とペット、どちらも「留守中の世話」という共通の悩みを、電子工作で解決するアイデアです。

本記事はアフィリエイトリンクを含みます。

「お宝ホリダー」の作り方|Scratchで作るパネルめくりゲーム

PR

今回はお宝ホリダーの作成方法をご紹介します。

参考書籍「Scratchでゲームをつくって楽しく学ぼう」(技術評論社)

①ステージにコードを書きます

「ゲーム準備」「ゲームスタート」「ゲームクリア」等のメッセージや、「スコア」「ハイスコア」「パネル番号」などの変数を作成しながらコーディングしてください。

②パネルにコードを書きます

リスト「てもちのパネル」を作成してください

変数「i」も作成してください

続けて下記をコーディングします

ここまでできたら「ゲーム準備を受け取ったとき」の部分をクリックしてみてください。

このとき、画面に1~25のブロックがランダムに配置されれば、正しくコーディングできています。

効果音

続けて効果音の部分をコーディングします

正解ブロックを押したら「pop」音が鳴り、ブロックが消えるようになります。

不正解のブロックを押したら、「boing」音が鳴り、ブロックは消えません。

テロップ

文字のスプライトに以下のコードを書きます

ゲームクリア時の処理

背景に下記のコードを追加

お宝ゲージを追加

お宝ゲージに下記のコードを追加します。

「お宝ゲージ」変数も追加してください

素早くパネルを消せたらゲージが増えるようにする

変数に「まえの時間」を追加して、ステージにあるコードに画像にあるコードを追加します。

「まえの時間」1つ前のパネルをクリックした時刻を記憶するための変数です。

次に「パネル」のコードに以下を追加します。

前のパネルを消してから次のパネルを消すまで、1秒未満でできればパネルゲージを1つずつ増やします。

またクリックされるたびにまえの時間をタイマー値にリセットします。

ゲージに合わせてお宝を表示する

現在はランダムで表示を切り替えているので、これをお宝ゲージに合わせて変えるように変更します

以下のように条件に合わせて変更するようにします

ホリダくんを動かす

ホリダ君を動かしてみましょう

速く消せたときの音を変える

本記事はアフィリエイトリンクを含みます。

ネプリーグみたいなクイズをScrachで作る①

ネプリーグみたいな漢字の読み方を当てるクイズをScrachで作る方法を紹介します。

正解のリストを作る

「変数」タブの「リストを作る」をクリックして、リストを作ります

左下の「+」ボタンを押して、問題の答え(この場合は漢字の読み方)のリストを作ります。

ネコのスプライトのコードに下記を入力します。

出題する漢字を作る

漢字用のスプライトを作成し、コスチュームを問題分だけ追加して作成します。

漢字用のスプライトに下記のコードを入力します

音楽も入れてみます。

好きなBGMをフリー素材でダウンロードして、それがランダムで流れるようにします。

ネコのスプライトのコードに得点の加算を追加します

Scratchでブロック崩しゲームを作る②

前回に引き続き、Scratchでブロック崩しゲームを作る方法を紹介します。

今回は、新しい種類のブロック(跳ね返らないブロック・2回当てないと壊れないブロック)の作り方を紹介します。

1.通過するブロック

Button3を選択して右クリックして「複製」を選択します。

新しく複製されたButtonのスプライトコードから「ブロック接触を送る」を削除します。

これで透過するブロックは完成です。

ただ、このままでは複製する前のブロックと同じ場所に表示されてしまい、どちらかが見えなくなってしまうので、表示する場所をずらします。

ずらしたいButtonスプライトの位置を定義している箇所を直せば、場所を変更できます。

↑こちらは高さ方向(y座標)の位置を変更する時に変える場所です。

2.二回当てないと消えないブロック

先ほどと同じように、Button3を複製して新たなブロックを作ります。

コスチュームを追加して

コスチューム1:最初の状態

コスチューム2:一回当たった状態

の見た目を作ります。

そして、ブロックを消している条件のところに「もし・でなければ」を追加し、

・コスチューム番号が1なら:次のコスチュームにする

・でなければ(つまりコスチューム番号が2なら):このクローンを削除する

を追加します。

これで2回当てないと消せないブロックを追加できます。

透過ブロックと同じように、このブロックを配置する座標も普通のブロックとずらせば完成です。

Scratchでブロック崩しゲームを作る方法①|受け皿・ボール・ブロックの基本操作を解説
Scratchで作ったブロック崩しゲームの完成イメージ

今回は、Scratch(スクラッチ)で上の画像のようなブロック崩しゲームを作る方法を紹介します。プログラミング初心者の方でも、順を追って進めれば完成できる内容です。

こちらの書籍を参考にしております。

スクラッチプログラミング事例大全集 (https://amzn.to/4vImRlI

使用するスプライトは、「Paddle(受け皿)」「Ball(ボール)」「Button3(ブロック)」の3つです。まずはこの3つのスプライトを用意するところから始めましょう。

Paddle、Ball、Button3の3つのスプライト

1.受け皿(Paddle)の操作部分の作成

最初に、受け皿をキー操作で動かす部分を作ります。「Paddle」のスプライトを選択し、以下のコードを作成してください。

Scratchの受け皿(Paddle)操作コード

こうすることで、左右キーを押すと受け皿が動くようになります。また、ボールと接触したときには「メッセージ1」を送るようにしておきます。これは、後ほどボール側の処理と連動させるために必要な設定です。

2. ボールの制御

次に、ボールを動かす処理を作っていきます。まずは効果音を用意しましょう。

「音」タブの画面左下にある「+」マークを押して、好きな音を追加してください。

Scratchの音タブで効果音を追加する画面

音は、以下の3つの場面に合わせて選ぶのがおすすめです。

 ① ボールが受け皿に当たって跳ね返るとき

 ② ボールがブロックに当たってブロックが壊れるとき

 ③ ボールが落ちてゲームオーバーになったとき

今回はそれぞれ、①「Wobble」、②「Suction Cup」、③「Alien Creak2」を選びました。音の種類によってゲームの雰囲気が変わるので、好みに合わせて選んでみてください。

続いて、「Ball」のスプライトに以下のコードを作成します。

まず、ボールの落下とゲームオーバーの処理です。

ボールが落下してゲームオーバーになる処理のコード

続いて、ボールが受け皿に当たったときの処理を作ります。

ボールが受け皿に当たって跳ね返る処理のコード

最後に、ボールとブロックが接触したときの処理です。この処理を作る前に、イベントの「新しいメッセージ」から「ブロック接触」というメッセージをあらかじめ追加しておく必要があります。

ボールとブロックが接触したときの処理のコード

3. ブロックの処理

最後に、「Button3」のスプライトにブロックの処理を追加します。

まず、ブロックの配置処理です。

Scratchでブロックを配置する処理のコード

次に、ブロックの接触(消去)処理を追加します。

ブロックが消去される処理のコード

以上で、以下のようなブロック崩しゲームが完成します。

完成したScratchのブロック崩しゲーム画面

まとめ

今回は、Scratchでブロック崩しゲームを作る基本的な方法を紹介しました。受け皿の操作、ボールの跳ね返り、ブロックの配置・消去という3つの要素を組み合わせることで、シンプルながら遊べるゲームが完成します。

次回の記事では、通過するブロックや2回当てないと壊れないブロックなど、さらに応用的なギミックの作り方を紹介します。あわせてご覧ください。

⇒ Scratchでブロック崩しゲームを作る②(応用編)

ぜひ改良を加えて、自分だけのオリジナルステージを作ってみてください。

Scratchでマリオ系のアクションゲームを作る③

前回は主人公をジャンプさせる方法を紹介しました。

次にステージを作る方法を紹介します。

Tiledのインストール

ステージの作成には第1回でも紹介したSuperpowers Asset Packを活用してみたいと思います。

ステージの編集ソフトは Tiled というフリーソフトを使うと簡単に行えます。

Tiled をダウンロードしたら立ち上げて、新しいプロジェクトを作成します。
次に新しいマップを作成します。

Scratchの画面サイズは「480 × 360」なので、分かりやすくそれに合わせたステージを作成します。

今回素材として使用する Superpowers Asset Pack の最小単位に合わせて

・タイルの大きさ:幅 8 px、高さ 8 px
・マップの大きさ:「固定」⇒「幅 60:タイル(480ピクセル)」×「高さ 45:タイル(360ピクセル)」

Superpowers Asset Packのタイルセットを開きます。

↓タイルセットの場所↓

(任意のパス)/superpowers-asset-packs-master/prehistoric-platformer/background-elements/tileset-1.png

※タイルファイルを選択する際、「マップに埋め込み」にチェックを入れます。

タイルファイルを開くと下図のように、右下の「タイルセット」の領域に素材が表示されます。

タイルセットをマウスでドラッグして、使用したい領域分を選択します。

左クリックで、ハンコを押すようにペタペタと好きなタイルを貼り、ステージを作っていきます。

ステージが完成したら、画像ファイルとして保存します。

C#でList型の2次元配列を使う

行ごとに大きさが変動するような2次元配列を使いたいときは、List型の2次元配列を使うと便利です。

下記のように使用します。

       public void DataGet(string[] data_lines) {

            //int j = 0;
            Boolean is_first = true;

           // 最初のドラッグ&ドロップで取得するデータ
            if (IsData == false)
            {
                this.titles = data_lines[0].Split(',');   // 先頭行を1次元配列で取得
            }

            list_num = data_lines.Length;


            foreach (string line in data_lines)
            {
                List<int> Items = new List<int>();

                // データを一次元配列に入れる
                string[] cells = line.Split(',');   // cells[]に各行の値1次元配列で取り込む

                if (is_first == true)
                {
                    is_first = false;
                }
                else {
                    /* データ */
                    for (int j = 0; j < cells.Length; j++)
                        if (cells[j] == "") {
                            break;
                        }else
                        {
                        Items.Add(Convert.ToInt16(cells[j]));
                    }
                    pList.Add(Items);
                }
            }
      }    

リストのサイズの最大値を取得する場合は下記のように記述します。

                PS_F.DataGet(data_lines);
                int ColNumMax= PS_F.pList.Count;//50
                int ColNumMin = PS_F.pList.Max(innerList => innerList.Count);

データの指定方法は下記のように記述します。

int value = PS_F.pList[3][7];  // 3行目の7列目を取得する