Google スプレッドシート で 脳トレ問題を作ってみた。

岡山市のパソコン教室 パソコンの前で悩む女性 お知らせ

Google Chrome アプリケーション に スプレッドシート があります。
知らない、触ったことのない方は、Excel のWeb版の簡易版的なアプリケーションを想像して下さい。

小中学校で配布されているパソコン、ChromeBook、その中のアプリケーションでもあるスプレッドシート、プログラミミングに興味を持つ子ならば、ブロックを重ねて動かすプログラミング以上のことまで、環境を変えることなくできるスクリプトで作っても面白いかな?

そんな発想もあり、作ってみました。

このスプレッドシートは、Excelのマクロの代わりに、スクリプトと呼ばれるコードが記述できます。
Excelと同様に、操作記録を記録しコーディングしてくれますので、試しに記録して、そこから編集する流れも可能です。😸

脳トレ問題の中に、1文字だけ違う文字を探せ!!
みたいなのがありますが、Excelやこのスプレッドシートでも作ることが出来ないのかな?
との思いから、、、作ってみました。

作成したのはこんな感じの問題

数パターンの組み合わせで、毎回違う場所、ランダムな位置に違う文字を出す。
また、探し出すのに要した時間を出すようにしてみました。

「スタート」ボタンを押下で、問題を表示する

この分部の仕組み、流れは?

  1. 問題を決める。
  2. この問題も数パターンの中からランダムに選ばれるようにする
  3. 1文字だけ違う文字の場所を決める。行、列の位置決めもランダムに出るようにする。
  4. 10行×10列に文字を配置する。
  5. 開始時間、違う文字の位置を保存する。

といった感じです。

コードはこんな感じに・・・

  let startTime;
  let posRow;
  let posCol;

  let spreadsheet = SpreadsheetApp.getActive();
  let q, ansN, ansD;

  // 入力シート
  let inshert = spreadsheet.setActiveSheet(spreadsheet.getSheetByName('仲間外れ'), true);

  startTime = new Date();

  q = Math.floor(Math.random()*5 );
  posRow = Math.floor(Math.random()*9 );
  posCol = Math.floor(Math.random()*9 );

  switch (q) {
    case 0:
      ansN = "B";
      ansD = "P";
      break;
    case 1:
      ansN = "例";
      ansD = "列";
      break;
    case 2:
      ansN = "Q";
      ansD = "O";
      break;
    case 3:
      ansN = "5";
      ansD = "S";
      break;
    default:
      ansN = "力";
      ansD = "刀";
      break;
  }

  for(var r = 0; r< 10 ; r++){
    for(var c=0; c<10; c++){
      inshert.getRange( r+2, c+2 ).setFontColor("#000000");
      if(r==posRow && c==posCol){
        inshert.getRange(r+2,c+2).setValue(ansD);
      }else{
        inshert.getRange(r+2,c+2).setValue(ansN);
      }

    }
  }

  inshert.getRange('M3').setValue(posRow);
  inshert.getRange('M4').setValue(startTime);
  inshert.getRange('M5').setValue(posCol);
  inshert.getRange('M6').setValue(startTime);

プログラミングコードの説明は、省略しますので、時間がある時にでも、調べて下さいネ♪

ランダムな位置に出すには?

Math.random関数を使って、問題と違う文字の表示位置を実行都度取得するようにしました。
この関数の使い方について詳しくは、述べませんが、興味があれば調べて使って見て下さい。

また、条件分岐として、Switch 文、If文と使い分けしております。
Switch文を使うと、問題の追加時が、楽ですから、、、、

ボタンの背面の箇所を使って、値の保存をしています。😓
こんな隠し技?もあります。

「回答」ボタン押下で、違う文字に色を付け、時間を表示する

コーディングしたのは、こんな感じです。

  let endTime;
  let posRow;
  let posCol;

  endTime = new Date();

  let spreadsheet = SpreadsheetApp.getActive();
  let inshert = spreadsheet.setActiveSheet(spreadsheet.getSheetByName('仲間外れ'), true);

  posRow = inshert.getRange('M3').getValue();
  posCol = inshert.getRange('M5').getValue();
  inshert.getRange('M6').setValue(endTime);
  inshert.getRange( posRow+2, posCol+2 ).setFontColor("#ff0000");

公開しているプログラミングコードは、参考であり、この通りに作らないとダメではありません。
当然、このような方法よりも、もっとよいコーディング例は、たくさんあることでしょうし、自分で考えられるかも知れません。

Google スプレッドシートで、こんなことも出来ますよ~といった事例として書いております。

色を変えるには?

違う文字の色を赤にしています。
赤くするので、問題生成時に、おなじ色に設定する処理を追加しています。

このために、1文字違う文字を出す位置を覚えておくといった処理にしています。

開始した時間と「回答」を押下した時間の差(引き算)でタイムを計算しています。
こちらは、セルに計算式をあらかじめ埋め込んでいます。

最後に

最後に、「回答」時に、正誤を判断する仕組みもありかと思いますが、(現在のアクティブな場所と正解の位置などで)そこまでする必要もないかと思い組込んでいません。

改良の可能性を持たせていますので、追加機能を組み込んで見て下さい♪

イベントでは、エクセルを使って、「脳トレ問題」として、このプログラミングを使っています。
エクセルで作れる脳トレ問題は、このホームページで紹介しているプログラミング例以外にもありますし、思いついた時に、作っていますので、どんどん増えてきています。

お問い合わせ

TEL:086-206-5592

WEB:WEB予約

岡山市北区のキュリオステーション岡山店
岡山県内でパソコン・プログラミング教室をお探しなら岡山市北区のキュリオステーション岡山店へ、パソコンやスマホ、プログラミングのスキルアップに、園児から通えるロボット教室、英語教室など楽しくスキルアップできる地域に愛される教室を目指しています
岡山市北区の初心者向けパソコン教室「キュリオステーション岡山店」
岡山でパソコンを楽しく学ぶならワクワク感満載の岡山市北区のキュリオステーション岡山店へ、パソコンの便利な使い方など、使えるようになるとパソコンをさわるのが楽しくて仕方ない。解りやすい説明も好評の岡山市北区のパソコン教室へ
岡山市北区のプログラミング教室「キュリオステーション岡山店」
岡山でパソコン・プログラミング教室をお探しなら、キュリオステーション岡山店へ、岡山地域で一番の問題解決力「私には解りやすかった」との感想が多い岡山市北区のプログラミング教室です。驚きの回答と効率よい学び方の相談などお気軽にお問い合わせを!!
岡山市北区~ヒューマンアカデミーロボット教室~【岡山表町教室】
岡山でロボット教室|ロボットプログラミング教室をお探しなら、岡山市で発想力と応用力を養う習い事と話題のヒューマンアカデミーロボット教室「岡山表町教室」へ。準備も片付けも自分で!普段見られない姿が見られるロボット・ロボットプログラミング教室
岡山市北区のこども英会話教室【岡山表町教室】
岡山で子ども向け英語教室・英会話教室をお探しなら、岡山市北区の恥ずかしがり屋な子ども向け英語・英会話教室ヒューマンアカデミージュニアランゲージスクール岡山表町へ、外国人講師と楽しくオンラインで英会話を楽しみながら英語を学ぶ英会話教室です。

 

パソコン・スマホのスキルアップなら、岡山市北区のパソコン教室「キュリオステーション岡山店」へ通いやすい仕組みの料金設定にしています。同じ料金設定の中高生も大人もスキルアップできる初心者向けのプログラミング教室、子ども向けの知的好奇心を育むロボット教室マンツーマン個別レッスンの英会話教室もしています。

タイトルとURLをコピーしました