※スクール生以外にはURLを公開しないでください。

振替が必要な場合は、振替可能日からお選びください。
無断欠席などを除き、レッスンを消滅することはありません。
お願い(やり取りの簡易化)
良い例
質問:○月○日(○曜日)の13:00から2授業できますか?
回答:はい、できます(^^)
※曜日まで書いてもらえると助かります
悪い例
質問:○月○日できますか?
回答:はい、何時がいいですか?
質問:午前中はできますか?
回答:つづく・・・
◆スクール都合でお休みした場合(事例:一度風邪で急遽お休みを頂いたことがあります)
振替をお願い致します。
通常の振替より融通が利きますので、ご連絡ください。
休みとする場合は、25%OFFと致します。
◆海津校では休会はありません。
やりたくなったら再開すれば良いと思っているので退会とします。
再開する場合は続きから行いますが、忘れている部分を思い出す必要があるので、
振り返り期間が必要になりますので、承知おきください。
※再入会時には、新しいアカウントになります。
教育版マイクラのインストールは誰でもでき、10回無料で体験できる
①教育版の利用には、Microsoft 365のアカウントが必要
②安心・安全なマルチプレイをサポートする学習支援
③すぐに始められるプログラミング環境
④バリエーション豊富なワールドテンプレート
⑤教育版ならではのアイテム

コードアドベンチャーカリキュラムです。
見た目の変更はありますが、内容の変更はありません。
中級・上級の途中にあるミニ講座の目安は、2~6回です。
オリジナルの創作については、開放日に実施してもらうこともできます。
ステージ4の後に行うミニ講座"家を作ろう"の参考動画は1-6.作品紹介
海津校オリジナル問題を2つ用意しました。
・ステージ7の後に、1~2回で終わる応用問題を用意しています。
授業では数を数えることに特化していますが、変数を使って計算できることを知ってほしいので用意しました。
ステージ7応用問題動画
・ステージ15の後に、2~4回で終わる応用問題を用意しています。
今までは短いコースをクリアするだけで失敗してもすぐ直せましたが、大きなものを作る大変さを学ぶ場として用意しました。
計画を立てて進めることを学んでもらいます。
ラストミッション動画
ラストミッションの答え
★ラストミッションの答え
001 let snakeCount = 0
002 let snakeRunTime = 0
003 let TemValue = 0
004 let TotalRunTime = 0
005 let blockCountArray: number[] = []
006
007 player.onChat("LetsGo", function () {
008 blockCountArray = [0, 0, 0, 0, 0, 0, 0]
009 agent.teleport(world(319, 119, 823), SOUTH)
010 loops.pause(1000)
011 TotalRunTime = gameplay.timeQuery(GAME_TIME)
012 agent.move(FORWARD, 2)
013 DownStair(1)
014 agent.move(FORWARD, 8)
015 agent.setItem(JACK_O_LANTERN, 1, 1)
016 while (true) {
017 if (agent.inspect(AgentInspection.Block, DOWN) == BLOCK_OF_BAMBOO) {
018 SetInArray(0)
019 agent.move(FORWARD, 1)
020 } else if (agent.inspect(AgentInspection.Block, DOWN) == GREEN_CONCRETE) {
021 SetInArray(1)
022 TemValue = blockCountArray[1] / 3
023 if (TemValue - Math.trunc(TemValue) == 0) {
024 agent.place(RIGHT)
025 }
026 UpStair(1)
027 } else if (agent.inspect(AgentInspection.Block, DOWN) == LIME_CONCRETE) {
028 SetInArray(2)
029 DownStair(1)
030 } else if (agent.inspect(AgentInspection.Block, DOWN) == LAPIS_LAZULI_BLOCK) {
031 SetInArray(3)
032 agent.turn(RIGHT_TURN)
033 agent.move(FORWARD, 1)
034 } else if (agent.inspect(AgentInspection.Block, DOWN) == REDSTONE_BLOCK) {
035 SetInArray(4)
036 agent.turn(LEFT_TURN)
037 agent.move(FORWARD, 1)
038 } else if (agent.inspect(AgentInspection.Block, DOWN) == DIAMOND_BLOCK) {
039 SetInArray(5)
040 snakeRunTime = gameplay.timeQuery(GAME_TIME)
041 SnakeRoad()
042 snakeRunTime = (gameplay.timeQuery(GAME_TIME) - snakeRunTime) / 20
043 gameplay.title(mobs.target(LOCAL_PLAYER), "スネーク道:" + snakeRunTime + "秒", "")
044 } else if (agent.inspect(AgentInspection.Block, DOWN) == GOLD_BLOCK) {
045 SetInArray(6)
046 break;
047 }
048 }
049
050 TotalRunTime = (gameplay.timeQuery(GAME_TIME) - TotalRunTime) / 20
051 gameplay.title(mobs.target(LOCAL_PLAYER), "走行タイム:" + TotalRunTime + "秒", "")
052 player.say("竹ブロック :" + blockCountArray[0] + "個")
053 player.say("緑ブロック :" + blockCountArray[1] + "個")
054 player.say("黄緑ブロック :" + blockCountArray[2] + "個")
055 player.say("青ブロック :" + blockCountArray[3] + "個")
056 player.say("赤ブロック :" + blockCountArray[4] + "個")
057 player.say("ダイヤブロック:" + blockCountArray[5] + "個")
058 player.say("金ブロック :" + blockCountArray[6] + "個")
059 })
060
061 function UpStair(id: number) {
062 for (let index = 0; index < id; index++) {
063 agent.move(UP, 1)
064 agent.move(FORWARD, 1)
065 }
066 }
067
068 function DownStair(id: number) {
069 for (let index = 0; index < id; index++) {
070 agent.move(FORWARD, 1)
071 agent.move(DOWN, 1)
072 }
073 }
074
075 function SnakeRoad() {
076 agent.turn(RIGHT_TURN)
077 agent.move(FORWARD, 16)
078 agent.move(RIGHT, 2)
079 agent.turn(RIGHT_TURN)
080 SnakeRoad1()
081 agent.move(FORWARD, 7)
082 agent.move(LEFT, 3)
083 agent.turn(LEFT_TURN)
084 agent.turn(LEFT_TURN)
085 SnakeRoad2()
086 agent.move(FORWARD, 4)
087 agent.turn(LEFT_TURN)
088 SnakeRoad3()
089 agent.move(BACK, 2)
090 agent.move(LEFT, 17)
091 }
092
093 function SnakeRoad1() {
094 for (let index = 0; index < 5; index++) {
095 agent.move(FORWARD, 7)
096 agent.move(LEFT, 2)
097 agent.move(BACK, 7)
098 agent.move(LEFT, 2)
099 }
100 }
101
102 function SnakeRoad2() {
103 for (let index = 0; index < 2; index++) {
104 snakeCount = 2
105 for (let index = 0; index < 4; index++) {
106 agent.move(UP, snakeCount)
107 agent.move(FORWARD, snakeCount)
108 agent.move(DOWN, snakeCount)
109 agent.move(FORWARD, 2)
110 snakeCount += 1
111 }
112 agent.turn(LEFT_TURN)
113 }
114 }
115
116 function SnakeRoad3() {
117 for (let snakeUpDownCount = 0; snakeUpDownCount <= 1; snakeUpDownCount++) {
118 DownStair(8)
119 agent.move(FORWARD, 4)
120 UpStair(8)
121 agent.turn(RIGHT_TURN)
122 if (snakeUpDownCount == 0) {
123 agent.move(FORWARD, 5)
124 agent.turn(RIGHT_TURN)
125 }
126 }
127 }
128
129 function SetInArray(id: number) {
130 blockCountArray[id] += 1
131 }
2枚目はゲーム開発コースのカリキュラムです。
【体験者のご意見】いぬたぬきが2Dゲームの世界に!?
"エクセルで分析"みたいな方が個人的にはかっこいいのですが、このテーマでは子供は続かない。。。
なので、ゲームをテーマとしているそうです。
難易度はかなり高いです、一部の大学生を除き、こんなことできません。
小・中学生でここまでできるようになれば、すごいです。
★ここで作るゲームで遊ぶことができます。★
スマフォで遊んでみてください。(PCだとうまく表示されないので)
【ステージ16~18:アクションゲーム】
ここから遊べます◆
操作:
ステージの先にある扉や宝箱を取ると、次のステージに行けます。
Aボタンでジャンプできます。(Bボタンは使いません)
バネを踏むと、ハイジャンプが出来たりします。小さな敵は踏みつぶすことができます。

【ステージ19~21:シューティングゲーム】
ここから遊べます◆
操作:
左側にいるのがプレイヤーです。右から出てくるのが敵になります。
Aボタンでミサイルを発射、敵を倒すとアイテムが出てくるのでBボタンでパワーアップします。

ここからJavaScriptで作成します。
【ステージ25:アクションゲーム】
ここから遊べます◆
操作:
土管に当たらないようにペンギンを進めます。
Aボタンでジャンプできます。(Bボタンは使いません)

【ステージ26:スネークゲーム】
ここから遊べます◆
操作:
十字キーで操作します(Aボタン/Bボタンは使いません)
リンゴを取ると成長し、壁や蛇の体に当たると、ゲームオーバーになります。

【ステージ27:マインスイーパー】
ここから遊べます◆
操作:
Aボタンで開放、Bボタンでフラグを立てます。

【ステージ28で作るタレットゲーム】
ここから遊べます◆
操作:
Aボタンで砲台からミサイルを発射して、敵を倒します。
スコアが貯まると、Bボタンでレベルアップします。

★JavaScript stage25_flyPenguinの答え

001 let character = sprites.create(assets.image`myImage0`, SpriteKind.Player) //キャラクターを表示する
002 character.setPosition(30, 30) // キャラクターの位置を決める
003 character.ay = 250 // キャラクターを表示する
004
005 scene.setBackgroundColor(6) // 背景色を決める
006 info.setScore(0)
007
008 controller.A.onEvent(ControllerButtonEvent.Pressed, function () { // Aボタンが押されたとき
009 character.vy = -130 // キャラクター
010 })
011
012 game.onUpdate(function () { // ゲームが更新されたとき
013 if (character.y >= 120) // キャラクターが落ちた時
014 game.over() // ゲームオーバー
015 })
016
017 game.onUpdateInterval(1500, function () { // 定期処理1500ms間隔
018 let sprite = sprites.create(assets.image`myImage`, SpriteKind.Enemy) // 土管を表示する
019 sprite.x = 160 // 土管の開始位置を調節
020 sprite.y = randint(30, 90) // 土管の高さをランダムにする
021 sprite.vx = -30 // 土管が右から左に向かって移動させる
022 info.player1.changeScoreBy(1)
023 })
024
025 sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function () { // PlayerとEnemyが重なったとき
026 game.over() // ゲームオーバー
027 })
★JavaScript stage26_snakegameの答え

001 let tilemapLevel = assets.tilemap`level0` // ステージ(画像)を呼び出す
002 let tilemapWidth = tilemapLevel.width // ステージ(画像)の幅を設定
003 let tilemapHeight = tilemapLevel.height // ステージ(画像)の高さを設定
004 tiles.setCurrentTilemap(tilemapLevel) // ステージ(画像)のを表示する
005
006 let snakeHead = sprites.create(assets.image`snakeHeadLeft`, SpriteKind.Player) // スネークの頭(左)呼び出す
007 let snakeHeadColume = tilemapWidth / 2 // 頭の位置を画像中央にする(幅)
008 let snakeHeadRow = tilemapHeight / 2 // 頭の位置を画像中央にする(高さ)
009 scene.cameraFollowSprite(snakeHead) // カメラが頭を中心にする
010 let snakeHeadDirection = 0 // 頭の向きの初期値
011
012 let snakeBodies:Sprite[]= [] // 体の配列
013 let snakeBodyLocation: tiles.Location[] = [] // 体の位置
014
015 game.onUpdateInterval(100, function () { // 定期処理100ms間隔
016 if (snakeHeadDirection == 0) { // 頭の方向 = 左
017 snakeHeadColume -= 1 // 頭の位置を1つ左
018 snakeHead.setImage(assets.image`snakeHeadLeft`) // 左向きの頭を表示
019 } else if (snakeHeadDirection == 1) { // 頭の方向 = 下
020 snakeHeadRow += 1 // 頭の位置を1つ下
021 snakeHead.setImage(assets.image`snakeHeadDown`) // 下向きの頭を表示
022 } else if (snakeHeadDirection == 2) { // 頭の方向 = 上
023 snakeHeadRow -= 1 // 頭の位置を1つ上
024 snakeHead.setImage(assets.image`snakeHeadUp`) // 上向きの頭を表示
025 } else if (snakeHeadDirection == 3) { // 頭の方向 = 右
026 snakeHeadColume += 1 // 頭の位置を1つ右
027 snakeHead.setImage(assets.image`snakeHeadRight`) // 右向きの頭を表示
028 }
029
030 if (snakeHeadColume tilemapWidth - 1 || snakeHeadRow tilemapHeight - 1) // 赤枠接触判定
031 game.over() // ゲームオーバー
032
033 for (let i = 0; i < snakeBodies.length; ++i) { // スネークの体分ループ
034 let ri = (snakeBodies.length - 1) - i // 最後の体が入っている場所から1つづ前の場所 ※length=5の時 4→3→2→1→0
035 if (ri == 0) // 頭の入っている場所
036 snakeBodyLocation[0] = snakeHead.tilemapLocation() // 頭の場所を設定
037 else // 体の入っている場所
038 snakeBodyLocation[ri] = snakeBodyLocation[ri - 1] // 体の場所を設定
039 }
040
041 for(let i = 0; i < snakeBodyLocation.length; ++i) // スネークの体分ループ
042 tiles.placeOnTile(snakeBodies[i], snakeBodyLocation[i]) // 体の先頭から順に表示する
043
044 tiles.placeOnTile(snakeHead, tiles.getTileLocation(snakeHeadColume, snakeHeadRow)) // 頭を表示
045 })
046
047 controller.left.onEvent(ControllerButtonEvent.Pressed, function () { // 左ボタンが押された時
048 if (snakeHeadDirection == 3) // 右向き時に左(=0)が押された
049 return // 何もしない
050 snakeHeadDirection = 0 // 左向きにする
051 })
052
053 controller.down.onEvent(ControllerButtonEvent.Pressed, function () { // 下ボタンが押された時
054 if (snakeHeadDirection == 2) // 上向き時に下(=1)が押された
055 return // 何もしない
056 snakeHeadDirection = 1 // 下向きにする
057 })
058
059 controller.up.onEvent(ControllerButtonEvent.Pressed, function () { // 上ボタンが押された時
060 if (snakeHeadDirection == 1) // 下向き時に上(=2)が押された
061 return // 何もしない
062 snakeHeadDirection = 2 // 上向きにする
063 })
064
065 controller.right.onEvent(ControllerButtonEvent.Pressed, function () { // 右ボタンが押された時
066 if (snakeHeadDirection == 0) // 左向き時に右(=3)が押された
067 return // 何もしない
068 snakeHeadDirection = 3 // 右向きにする
069 })
070
071 function placeFood() { // 食べ物(リンゴ)を置く
072 tiles.setTileAt(tiles.getTileLocation(randint(1, tilemapWidth - 2), randint(1, tilemapHeight - 2)), assets.tile`apple`); // リンゴを赤枠の内側に置く
073 }
074
075 function extendBody() { // 体を伸ばす
076 let snakeBody = sprites.create(assets.image`snakeBody`, SpriteKind.Enemy) // 体と重なるとゲームオーバーにしたいので、体は敵と見なす
077 if (snakeHeadDirection == 0) // 左向きの時
078 tiles.placeOnTile(snakeBody, tiles.getTileLocation(snakeHeadColume + 1, snakeHeadRow)) // 左向きなので右側に体を表示する
079 else if (snakeHeadDirection == 1) // 下向きの時
080 tiles.placeOnTile(snakeBody, tiles.getTileLocation(snakeHeadColume, snakeHeadRow - 1)) // 下向きなので上側に体を表示する
081 else if (snakeHeadDirection == 2) // 上向きの時
082 tiles.placeOnTile(snakeBody, tiles.getTileLocation(snakeHeadColume, snakeHeadRow + 1)) // 上向きなので下側に体を表示する
083 else if (snakeHeadDirection == 3) // 右向きの時
084 tiles.placeOnTile(snakeBody, tiles.getTileLocation(snakeHeadColume - 1, snakeHeadRow)) // 右向きなので左側に体を表示する
085 snakeBodies.push(snakeBody) // 体を設定する
086 snakeBodyLocation.push(snakeBody.tilemapLocation()) // 体の位置情報を設定する
087 }
088
089 scene.onOverlapTile(SpriteKind.Player, assets.tile`apple`, function (sprite: Sprite, location: tiles.Location) { // 頭と食べ物が重なったとき
090 tiles.setTileAt(location, assets.tile`transparency16`) // 取ったリンゴを消す
091 placeFood() // 食べ物(リンゴ)を置く
092 extendBody() // 体を伸ばす
093 })
094
095 sprites.onOverlap(SpriteKind.Player, SpriteKind.Enemy, function (sprite: Sprite, otherSprite: Sprite) { // 敵(=体 or 赤枠)、と重なったとき
096 game.over() // ゲームオーバー
097 })
098
099 placeFood() // リンゴを置く
★JavaScript stage27_Minesweeperの答え

001 let tilemapLevel = assets.tilemap`レベル` // 空タイルを設定する
002 let tilemapWidth = tilemapLevel.width // 空タイルの幅
003 let tilemapHeight = tilemapLevel.height // 空タイルの高さ
004 scene.setTileMapLevel(assets.tilemap`レベル`) // タイルを表示する
005
006 let cursor = sprites.create(assets.image`cursor`) // カーソルを表示する
007 let cursorColumn = 0 // カーソルの列位置
008 let cursorRow = 0 // カーソルの行位置
009
010 function countNearMines(location: tiles.Location) { // 周囲の爆弾の数を数える
011 let nearMines = 0 // 初期化
012
013 for (let r = -1; r < 2; ++r) // 左の行~右の行の間ループする
014 for (let c = -1; c < 2; ++c) { // 上の行~下の行の間ループする
015 let tileLocation = tiles.getTileLocation(location.column + c, location.row + r) // カーソルの位置を取得
016 let tile = tileLocation.getImage() // タイルの種類を取得する
017
018 if (tile == assets.tile`unopenedWithMine`) // 爆弾タイルの時
019 nearMines += 1 // 爆弾の数を数える
020 else if (tile == assets.tile`unopenedFlagWithMine`) // 爆弾タイルフラグの時
021 nearMines += 1 // 爆弾の数を数える
022 }
023
024 return nearMines
025 }
026
027 controller.left.onEvent(ControllerButtonEvent.Pressed, function () { // 左が押されたとき
028 cursorColumn -= 1 // カーソルを左へ
029 })
030
031 controller.right.onEvent(ControllerButtonEvent.Pressed, function () { // 右が押されたとき
032 cursorColumn += 1 // カーソルを右へ
033 })
034
035 controller.down.onEvent(ControllerButtonEvent.Pressed, function () { // 下が押されたとき
036 cursorRow += 1 // カーソルを下へ
037 })
038
039 controller.up.onEvent(ControllerButtonEvent.Pressed, function () { // 上が押されたとき
040 cursorRow -= 1 // カーソルを上へ
041 })
042
043 game.onUpdate(function () { // ゲームが更新されたとき
044 cursorColumn = Math.clamp(0, tilemapWidth - 1, cursorColumn) // カーソルの列範囲制限
045 cursorRow = Math.clamp(0, tilemapHeight - 1, cursorRow) // カーソルの行範囲制限
046
047 tiles.placeOnTile(cursor, tiles.getTileLocation(cursorColumn, cursorRow)) // カーソルの位置を取得
048 })
049
050 function openTile(tileLocation: tiles.Location){ // タイルを開けた時
051 let tile = tileLocation.getImage() // タイル情報を取得
052
053 if (tile == assets.tile`unopened`) { // 判定前のタイルのとき
054 let nearMines = countNearMines(tileLocation) // 周囲の爆弾数を取得
055 let nearMinesTiles = [assets.tile`openedEmpty`, assets.tile`opened1`, assets.tile`opened2`, assets.tile`opened3`, assets.tile`opened4`, assets.tile`opened5`, assets.tile`opened6`, assets.tile`opened7`, assets.tile`opened8`] // 数字画像を配列にセット
056 tiles.setTileAt(tileLocation, nearMinesTiles[nearMines]) // 何もないタイルを設定
057 if (nearMines == 0){ // 近くに爆弾がないとき
058 for (let r = -1; r < 2; ++r) // 左の行~右の行の間ループする
059 for (let c = -1; c < 2; ++c) // 上の行~下の行の間ループする
060 openTile(tiles.getTileLocation(tileLocation.column +c, tileLocation.row + r)) // 再帰
061 }
062 } else if (tile == assets.tile`unopenedWithMine`) { // 爆弾タイルのとき
063 tiles.setTileAt(tileLocation, assets.tile`openedMine`) // 爆弾タイルを設定
064 game.currentScene().render() // 表示を更新する
065 game.over() // ゲームオーバー
066 }
067 }
068
069 controller.A.onEvent(ControllerButtonEvent.Pressed, function () { // Aボタンが押されたとき
070 openTile(cursor.tilemapLocation()) // タイルを開けた時
071 })
072
073 controller.B.onEvent(ControllerButtonEvent.Pressed, function () { // Bボタンが押されたとき
074 let tileLocation = cursor.tilemapLocation() // タイルの位置を取得する
075 let tile = tileLocation.getImage() // タイル情報を取得
076
077 if (tile == assets.tile`unopened`) // タイルがunopenedの時
078 tiles.setTileAt(tileLocation, assets.tile`unopenedFlag`) // タイルをunopenedFlagにする
079 else if (tile == assets.tile`unopenedFlag`) // タイルがunopenedFlagの時
080 tiles.setTileAt(tileLocation, assets.tile`unopened`) // タイルをunopenedにする
081 else if (tile == assets.tile`unopenedWithMine`) // タイルがunopenedWithMineの時
082 tiles.setTileAt(tileLocation, assets.tile`unopenedFlagWithMine`) // タイルをunopenedFlagWithMineにする
083 else if (tile == assets.tile`unopenedFlagWithMine`) // タイルがunopenedFlagWithMineの時
084 tiles.setTileAt(tileLocation, assets.tile`unopenedWithMine`) // タイルをunopenedWithMineにする
085 })
086
087 game.onUpdate(function(){ // 更新する
088 if (tiles.getTilesByType(assets.tile`unopened`).length > 0) //nopenedがあるときは終了する
089 return
090 if (tiles.getTilesByType(assets.tile`unopenedFlag`).length > 0) // unopenedFlagがあるときは終了する
091 return
092 if (tiles.getTilesByType(assets.tile`unopenedWithMine`).length > 0) // unopenedWithMineがあるときは終了する
093 return
094 game.currentScene().render() // 画面を更新する
095 game.over(true) // ゲーム終了
096 })
★JavaScript stage28_Turretの答え

001 let turret = sprites.create(assets.image`turret`) // 武器画像を読み込む&表示
002 let shotSight = sprites.create(assets.image`shotSight`) // 弾を読み込む&表示
003 turret.setPosition(80, 112) // 武器の位置を決める
004 shotSight.setPosition(80, 112) // 弾の位置を決める
005
006 let turretDegrees = 90 // 武器の角度を決める
007 let fireInterval = 1500 // アイテム1 弾の速度を決める
008 let enemySpawnInterval = 2000 // アイテム2 敵の登場間隔を決める
009 let turretWobbleIntensity = 0 // アイテム3 弾に揺らぎを作る
010 let turretRotateBy = 90 // アイテム4 弾の発射角度
011 let upgradeItemIndex = 0 // アイテムの番号
012
013 let upgradeItems: Sprite[] = [] // アップグレードアイテム
014 let upgradeItemIcons = [ // アップグレードアイコン登録
015 assets.image`fireRateUpgrade`, // 火力
016 assets.image`enemySpawnRateUpgrade`, // 敵出現
017 assets.image`wobbleUpgrade`, //
018 assets.image`controlUpgrade`, //
019 ]
020
021 let upgradeItemPrices = [ // スコア閾値
022 5, // 1つ目の閾値
023 10, // 2つ目の閾値
024 15, // 3つ目の閾値
025 30, // 4つ目の閾値
026 ]
027
028 info.setScore(0) // スコアを作る
029
030 function computeVector(degrees: number) { // ベクトルを計算する
031 let radians = (degrees / 180) * Math.PI // ラジアン
032 let vx = Math.cos(radians) // X方向の位置を決める
033 let vy = -Math.sin(radians) // Y方向の位置を決める
034 return { x: vx, y: vy } // 戻り値
035 }
036
037 loops.forever(function () { // 常時更新する
038 if (controller.left.isPressed()) // 左ボタンが押された
039 turretDegrees += turretRotateBy // 20度左になる :左90~180
040 if (controller.right.isPressed()) // 右ボタンが押された
041 turretDegrees -= turretRotateBy // 20度右になる :右0~90
042 turretDegrees = Math.clamp(0, 180, turretDegrees) // 範囲制限を設ける(0~180度)
043
044 let v = computeVector(turretDegrees) // 角度から位置を決める
045 let vx = v.x * 10.0 // 位置から速度を決める
046 let vy = v.y * 10.0 // 位置から速度を決める
047 shotSight.setPosition(turret.x + vx, turret.y + vy) // 狙う方向を決める
048
049 loops.pause(60) // 60ms停止する
050 })
051
052 loops.forever(function () { // 常時更新する
053 if (!controller.A.isPressed()) // Aボタン以外が押された
054 return
055 let v = computeVector(turretDegrees + randint(-turretWobbleIntensity, +turretWobbleIntensity)) // 角度から位置を決める
056 let vx = v.x * 60.0 // 位置から速度を決める
057 let vy = v.y * 60.0 // 位置から速度を決める
058 sprites.createProjectileFromSprite(assets.image`projectile`, turret, vx, vy) // 弾を発射する
059
060 loops.pause(fireInterval) // 一定時間停止する
061 })
062
063 loops.forever(function () { // 常時更新する
064 let enemy = sprites.create(assets.image`enemy`, SpriteKind.Enemy) // 敵画像を読み込む&表示
065 enemy.setPosition(randint(20, 140), 0) // 敵の位置を決める(横はランダム、高さは固定)
066 enemy.vy = 20 // 敵を下に移動する
067 enemy.setFlag(SpriteFlag.AutoDestroy, true) // 敵が下に移動して見えなくなったら消す
068 loops.pause(enemySpawnInterval) // 一定時間停止する
069 })
070
071 sprites.onOverlap(SpriteKind.Projectile, SpriteKind.Enemy, function (sprite: Sprite, otherSprite: Sprite) { //弾と敵が重なったとき
072 otherSprite.destroy() // 敵を消す
073 info.changeScoreBy(15) // スコアを15増やす
074 })
075
076 controller.down.onEvent(ControllerButtonEvent.Pressed, function () { // 下ボタンが押されたとき
077 upgradeItemIndex += 1
078 })
079
080 controller.up.onEvent(ControllerButtonEvent.Pressed, function () { // 上ボタンが押されたとき
081 upgradeItemIndex -= 1
082 })
083
084 controller.B.onEvent(ControllerButtonEvent.Pressed, function () { // Bボタンが押されたとき
085 let upgradeItemPrice = upgradeItemPrices[upgradeItemIndex] // スコア閾値を代入
086 if (info.score() < upgradeItemPrice) // スコアが足りていない
087 return // 何もしない
088
089 if (upgradeItemIndex == 0) // アイテムが0番目の時
090 fireInterval -= 50 // 弾の速度を50減らす
091 else if (upgradeItemIndex == 1) // アイテムが1番目の時
092 enemySpawnInterval -= 100 // 敵の登場間隔を100減らす
093 else if (upgradeItemIndex == 2) // アイテムが2番目の時
094 turretWobbleIntensity += 1 // 強度を15増やす
095 else if (upgradeItemIndex == 3) // アイテムが3番目の時
096 turretRotateBy -= 3 // 角度を3増やす
097
098 info.changeScoreBy(-upgradeItemPrice) // アイテムを使うのでスコアを減らす
099 upgradeItemPrices[upgradeItemIndex] *= 1.2 // アイテムを使う際に必要なスコア閾値を上げる(何度を上げるため)
100 })
101
102 sprites.onDestroyed(SpriteKind.Enemy, function (sprite) { // 敵が消滅したとき
103 if (sprite.y > 120) // 敵の高さが120(画面外)になったら
104 info.changeScoreBy(-10) // スコアを10減らす
105 })
106
107 game.onUpdate(function () { // ゲームが更新されたとき
108 if (info.score() <= -50) // -50点になったら
109 game.over() // ゲームオーバー
110 })
111
112 function drawUpgradeItemPrice(icon: Image, price: number) { // ピンクに変える
113 for (let y = 0; y < icon.height; ++y) // 縦方向をピクセルづつずらす
114 for (let x = 0; x < icon.width; ++x) { // 縦方向をピクセルづつずらす
115 if (icon.getPixel(x, y) != 12) // 紫(=12)じゃないとき
116 continue // 何もしない(ループを再開する)
117 icon.setPixel(x, y, 3) // ピンク(=3)にする
118 }
119 }
120
121 game.onUpdate(function () { // ゲームが更新されたとき
122 upgradeItemIndex = Math.clamp(0, upgradeItems.length - 1, upgradeItemIndex) // アイコンの範囲指定
123 for (let i = 0; i < upgradeItems.length; ++i) { // アイコン分ループ
124 let upgradeItemIcon = upgradeItemIcons[i].clone() // アイコンを取得
125 if (i == upgradeItemIndex) // 今のアイテムの時
126 upgradeItemIcon.drawRect(0, 0, 12, 12, 7) // 緑色の枠をつける
127 let upgradeItemPrice = upgradeItemPrices[i] // 閾値を取得
128 if (info.score() >= upgradeItemPrice) // スコアと閾値を比較する
129 drawUpgradeItemPrice(upgradeItemIcon, upgradeItemPrice)// ピンクに変える
130 upgradeItems[i].setImage(upgradeItemIcon) // 描画する
131 }
132 })
133
134 function initializeUpgradeItems() { // 初期化
135 for (let i = 0; i < upgradeItemIcons.length; ++i) { // アイコン分ループ
136 let upgradeItem = sprites.create(upgradeItemIcons[i]) // アイコンの読み出し
137 upgradeItem.setPosition(10, 10 + i * 16) // 位置を決める
138 upgradeItems.push(upgradeItem) // ゲーム中のは配列に登録
139 }
140 }
141
142 initializeUpgradeItems()
★JavaScript stage29_circuitの答え

001 let tilemapLevel = assets.tilemap`ステージa`
002 let tilemapWidth = tilemapLevel.width
003 let tilemapHeight = tilemapLevel.height
004 let level = 0
005
006 let cursor = sprites.create(assets.image`cursor`)
007 let cursorColumn = 0
008 let cursorRow = 0
009
010
011 enum Direction {
012 Left,
013 Down,
014 Up,
015 Right,
016 }
017
018 function getLocationInDirection(location: tiles.Location, direction: Direction) {
019 if (direction == Direction.Left)
020 return tiles.getTileLocation(location.column - 1, location.row)
021 if (direction == Direction.Down)
022 return tiles.getTileLocation(location.column, location.row + 1)
023 if (direction == Direction.Up)
024 return tiles.getTileLocation(location.column, location.row - 1)
025 if (direction == Direction.Right)
026 return tiles.getTileLocation(location.column + 1, location.row)
027 return null
028 }
029
030 function getNeighboringLocations(location: tiles.Location) {
031 let neighboringLocations = []
032
033 neighboringLocations.push(getLocationInDirection(location, Direction.Left))
034 neighboringLocations.push(getLocationInDirection(location, Direction.Down))
035 neighboringLocations.push(getLocationInDirection(location, Direction.Up))
036 neighboringLocations.push(getLocationInDirection(location, Direction.Right))
037
038 return neighboringLocations
039 }
040
041 function processNeighbors(location: tiles.Location, callback: (location: tiles.Location) => void) {
042 for (const neighboringLocation of getNeighboringLocations(location))
043 callback(neighboringLocation)
044 }
045
046 let tileKind = {
047 wireOff: assets.tile`wireOff`,
048 wireOn: assets.tile`wireOn`,
049 lightOff: assets.tile`lightOff`,
050 lightOn: assets.tile`lightOn`,
051 switchOff: assets.tile`switchOff`,
052 switchOn: assets.tile`switchOn`,
053 logicNotGate: assets.tile`logicNotGate`,
054 logicAndGate: assets.tile`logicAndGate`,
055 logicOrGate: assets.tile`logicOrGate`,
056 logicXorGate: assets.tile`logicXorGate`,
057 }
058
059 function initializeStage(level: number) {
060 let levels = [assets.tilemap`ステージa`, assets.tilemap`ステージb`, assets.tilemap`ステージc`, assets.tilemap`ステージd`, assets.tilemap`ステージe`, assets.tilemap`ステージf`]
061
062 if (level >= levels.length)
063 game.over(true)
064 let tilemapLevel = levels[level]
065 let tilemapWidth = tilemapLevel.width
066 let tilemapHeight = tilemapLevel.height
067
068 scene.setTileMapLevel(tilemapLevel)
069
070 for (let r = 0; r < tilemapHeight - 1; ++r)
071 for (let c = 0; c < tilemapWidth - 1; ++c)
072 performLogicGate(tiles.getTileLocation(c, r))
073 }
074
075 game.onUpdate(function () {
076 cursorColumn = Math.clamp(0, tilemapWidth - 1, cursorColumn)
077 cursorRow = Math.clamp(0, tilemapHeight - 1, cursorRow)
078
079 tiles.placeOnTile(cursor, tiles.getTileLocation(cursorColumn, cursorRow))
080 })
081
082 controller.left.onEvent(ControllerButtonEvent.Pressed, function () {
083 cursorColumn -= 1
084 })
085
086 controller.down.onEvent(ControllerButtonEvent.Pressed, function () {
087 cursorRow += 1
088 })
089
090 controller.up.onEvent(ControllerButtonEvent.Pressed, function () {
091 cursorRow -= 1
092 })
093
094 controller.right.onEvent(ControllerButtonEvent.Pressed, function () {
095 cursorColumn += 1
096 })
097
098 function turnWireOn(location: tiles.Location) {
099 if (location.getImage() != tileKind.wireOff)
100 return
101 tiles.setTileAt(location, tileKind.wireOn)
102 processNeighbors(location, turnOn)
103 processNeighbors(location, performLogicGate)
104 }
105
106 function turnWireOff(location: tiles.Location) {
107 if (location.getImage() != tileKind.wireOn)
108 return
109 tiles.setTileAt(location, tileKind.wireOff)
110 processNeighbors(location, turnOff)
111 processNeighbors(location, performLogicGate)
112 }
113
114 function turnLightOn(location: tiles.Location) {
115 if (location.getImage() != tileKind.lightOff)
116 return
117 tiles.setTileAt(location, tileKind.lightOn)
118 }
119
120 function turnLightOff(location: tiles.Location) {
121 if (location.getImage() != tileKind.lightOn)
122 return
123 tiles.setTileAt(location, tileKind.lightOff)
124 }
125
126 function turnOn(location: tiles.Location) {
127 turnWireOn(location)
128 turnLightOn(location)
129 }
130
131 function turnOff(location: tiles.Location) {
132 turnWireOff(location)
133 turnLightOff(location)
134 }
135
136 function isOnAt(location: tiles.Location) {
137 let tile = location.getImage()
138
139 if (tile == tileKind.switchOn)
140 return true
141 if (tile == tileKind.wireOn)
142 return true
143
144 return false
145 }
146
147 function performLogicNotGate(location: tiles.Location) {
148 if (location.getImage() != tileKind.logicNotGate)
149 return
150 let outputLocation = getLocationInDirection(location, Direction.Right)
151 if (isOnAt(getLocationInDirection(location, Direction.Left)))
152 turnOff(outputLocation)
153 else
154 turnOn(outputLocation)
155 }
156
157 function performLogicAndGate(location: tiles.Location) {
158 if (location.getImage() != tileKind.logicAndGate)
159 return
160 let input1 = isOnAt(getLocationInDirection(location, Direction.Up))
161 let input2 = isOnAt(getLocationInDirection(location, Direction.Down))
162 let outputLocation = getLocationInDirection(location, Direction.Right)
163 if (input1 && input2)
164 turnOn(outputLocation)
165 else
166 turnOff(outputLocation)
167 }
168
169 function performLogicOrGate(location: tiles.Location) {
170 if (location.getImage() != tileKind.logicOrGate)
171 return
172 let input1 = isOnAt(getLocationInDirection(location, Direction.Up))
173 let input2 = isOnAt(getLocationInDirection(location, Direction.Down))
174 let outputLocation = getLocationInDirection(location, Direction.Right)
175 if (input1 || input2)
176 turnOn(outputLocation)
177 else
178 turnOff(outputLocation)
179 }
180
181 function performLogicXorGate(location: tiles.Location) {
182 if (location.getImage() != tileKind.logicXorGate)
183 return
184 let input1 = isOnAt(getLocationInDirection(location, Direction.Up))
185 let input2 = isOnAt(getLocationInDirection(location, Direction.Down))
186 let outputLocation = getLocationInDirection(location, Direction.Right)
187 if (input1 != input2)
188 turnOn(outputLocation)
189 else
190 turnOff(outputLocation)
191 }
192
193 function performLogicGate(location: tiles.Location) {
194 performLogicNotGate(location)
195 performLogicAndGate(location)
196 performLogicOrGate(location)
197 performLogicXorGate(location)
198 }
199
200 controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
201 let tileLocation = cursor.tilemapLocation()
202 let tile = tileLocation.getImage()
203
204 if (tile == tileKind.switchOff) {
205 tiles.setTileAt(tileLocation, tileKind.switchOn)
206 processNeighbors(tileLocation, turnOn)
207 } else if (tile == tileKind.switchOn) {
208 tiles.setTileAt(tileLocation, tileKind.switchOff)
209 processNeighbors(tileLocation, turnOff)
210 }
211 })
212
213 game.onUpdateInterval(1000, function () {
214 if (tiles.getTilesByType(tileKind.lightOff).length > 0)
215 return
216 level += 1
217 initializeStage(level)
218 pause(500)
219 })
220
221 controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
222 tiles.setTileAt(cursor.tilemapLocation(), tileKind.lightOn)
223 })
224
225 initializeStage(level)
[動画]コードアドベンチャーで身につく6つの力って何?
上記動画の補足
大人がプログラムを知る必要があるか?
→必要です。(本部の考えは尊重していますが、この点は異なりました)
理由1:相手が何ができるかわからなければ、相手と会話することもできません。
理由2:今後、子供が何を学ぶべきなのか、親が判断できない。
古くからある習い事は周囲に経験者が何人かいて、なんとなく何ができて何ができないのか知っていると思います。
相手が何ができる/できないがわからなければ、会話すらできません。
情報の分野は多岐に渡っていて、既に細分化が行われておりそれぞれの分野に専門家がいます。
まずは、中学/高校の教科書を読んでみましょう。
(1-12.情報知識)
このスクールで学ぶことは、体験会でも説明させて頂いたように6つのスキルを学習します。
1.要素分析
:問題は様々な要素が絡み合っていることが多いので、要素毎に分けることが必要になります。
2.パターンの発見
:同じことを何度もやるのは大変なので、同じものを見つけ出すことが必要です。
3.抽象化
:シンプルで理解しやすい形で表現することは、かなり大切です。また、1番初めに思いついた方法が良い方法とは限りません、より良い方法を探し出すことが必要です。
4.アルゴリズム化
:何かを実現するとき実現方法は何パターンもあります。その中で一番よい方法を見つけます。
5.試行錯誤
:仮説を立てて検証することで、より深く考える力になります。
6.コーディング
:プログラムを学ぶ中で、1~5の思考訓練をします。
最近AIの話題が多いのでコメントします。
現時点のAIは道具です。どんな道具でも使い方があるようにAIにもあります。
道具を使いこなせば良いと思います。
ただ、倫理的・社会的な議論によっては、単なる道具としての枠を超えていく可能性はあります。
私はスキーができません。どんなに優れた道具があってもスキーはできません。
まずは、初心者用の道具と指導者が必要です。
AIの指導者を見つけることは簡単ではないので、簡単なことからはじめて慣れていき、周りの人より少しできれば重宝されます。
ステージ1では、PCでのマイクラ操作とエージェントに指示を出すことを学びます。
ステージ2~6の問題の一部を紹介します。
ステージ7~9の問題の一部を紹介します。
ステージ10~12の問題の一部とJavaScriptを紹介します。
ステージ13~15のJavaScriptを体験することで、
ビジュアルプログラムとテキストプログラムの関係をしることができるようになるため、
経験者と会話が成立するレベルになると思っています。(相手の知識にも寄ります)
授業参観は基本的にいつでも可能です。
子供たちのエリアに入ることができますので、そばで見守ってあげてください。
子供たちのことを理解している親が近くで見ることが大事だと思います。
あと、子供が何を学んでいるかご自身の目で確かめてください。
子供自身は何を学ぶべきかの判断は付きません。今後の進路を決める時に知っておくと役に立つかもしれません。
時間の許す限り、少なくとも2~3カ月のペースで授業参観をしてください。
よく見に来る方とそうでない方では差を感じます。思考力や論理的思考は、日常生活の中で身に付くものであり、
子供が何を学んでいるのか理解し、子供の可能性を引き出してください。
どういったことができるか、その際に相談させてください。
2024年8月に2度、サーバがダウンして授業にならないことが発生しました。
本スクールでは、いぬたぬきの授業と実践としているため、ネットワークの問題が致命的になっています。
サーバ管理は委託しているのですが、それでも今の時代このようなトラブルは発生します。
大金をかけている銀行でもシステムダウンが発生するものなので、発生することは必然です。
何らかのトラブルが発生した場合は、通常レッスンとは異なる問題を実施します。
授業なしでも進めれる問題(タイムアタック、宝探し、ドリル)を実施します。
※その時の進行度合いで、臨機応変に対応します。
※納得がいかない場合は"事前"に連絡お願いします。お金が発生することなので遠慮なく言ってください。
※タイピングは家でもできるので、優先しません。
プログラミングの移り変わりを1枚にまとめて見ました。
プログラミング歴史を語ると何ページにもなるので、かなり省略しています。
30年前は、スーパーマンが数名で製品を作っていました。
たくさん製品を作ることができませんでした。
15年前だと、役割分担が進んできてコミュニケーションが重要になってきました。
それと同時に、プログラミングを知らない人でも開発ができるように、補助ツールが進化しました。
現在では、モデル開発が盛んになって来て、アイデアを出す人がツールを使って具体的な形にしていく流れになって来ています。
そのためには、情報の知識・経験が必要になってきます。
最終的な製品にするためには本開発が必要です。補助ツールなので製品には耐えれない。
今後どのような変化が起きるかまではわかりませんが、
機械への指示書(プログラミング)は必要になってくるので、
プログラミングを知っている人は有利で、仕事の幅も広がると思います。
★娘とオープンキャンパスに行ってきました★
理系の学科や、経済学部のオープンキャンパスを見てきたのですが、2024年度から始まる大学共通テストで文系でも情報Ⅰを取り入れている学科は多いようです。
凡例:●必須、◎おすすめ
■パソコンの選び方 配信者:パソコン博士TAIKI
◎ パソコンの選び方!(30:48) 部品(メモリ、ストレージ、CPU、GPU)の紹介もあります
■小学生でもわかる半導体 配信者:パソコン博士TAIKI
◎ 半導体(18:17) シリコン/ゲルマニウム?!
■考え方 配信者:サラタメさん
◎ 考え方の1つ"嫌われる勇気"(15:22) 自分の課題? アルフレッド・アドラー
■考え方 配信者:イチケン
プリント基板実装の舞台裏"(18:14)
■【高校情報Ⅰ】 配信者:せかチャン
教科書に添って説明されています。高校レベルなので深くはないですが、わかりやすく説明してくれます
量が多いので、気合いを入れてから見てみてください。
◎ 情報教育
家庭学習までの流れ
①請求フォームから申請する
※所属の教室名“CA海津校”を入力ください
②申請後送られてきたURLからダウンロードする
③教育版インストール
④教育版アカウント取得
⑤教育版マイクラにログイン
「他教室ではできるのに…」とならないために公開致します。
楽しく学習するためにアルファベットの学習をおすすめします。 私がおすすめしている方法は、音で学習することです。
下記youtubeは穏やかに聴けるのでおすすめです。BGMとしてお使いください。
「ステージ1~ステージ5」くらいまでの問題集になっています。 コードアドベンチャーの世界を体験してもらうことができます。 海津校にも書籍がありますので、興味がありましたらお声かけください。
スキン作成-紹介動画-
スキン作成ソフトURL
ソフトの使い方
現在、便利なツールが多いので、知識がなくても高度なことができるようになって来ています。
高度な知識を持っていても、ツールを操作できないと役に立たないこともあります。
このツールもやっていることは、色塗りですが、
パソコンを使って、便利な機能に触れることは体験になるので、何度か体験してみると良いと思います。
プログラミング検定を海津校で受験できます。内容はリーフレットを参照ください。
プロ検定のレベル1は小学生レベルだそうです、レベル2以降は中学生レベルとなります。
プロ検定のリーフレット
申し込み書(スクールにあります)
日程は、1-1.スケジュールを参照ください
検定問題サンプルをお見せします。
まず、動画を見てどのような操作が行われているのか?画像がどのように動くのかを推測します。
次に選択肢の中から一致するものを選びます。わからない場合は再度動画を見ます。
検定問題サンプル
ビジュアル言語レベル1
検定問題サンプル
JavaScript言語レベル1

タイピングで英単語を楽しく学ぼう!
2025/4月から海津校で新しいカリキュラムがスタートします。その名もイングリッシュゲート「36構文と700単語、タイピング」コース!タイピングを通じて、英単語を楽しく学びます。
イングリッシュゲート ホームページ
イングリッシュゲート youtube
英単語は書いて覚えるもの?タイピングでも楽しく効果的に学べます!英語を学ぶのに一番大事なことは、どんな形であれ、好きになること。ちょっとでも「英語って楽しいかも」と感じてもらえれば、大成功です。
ゲームで英単語を覚えるものもあると思いますが、ほっといても続かないことあると思います。(私もそうでした)
小学校では、英語を好きになるようなカリキュラムになっていますが、中学生になって英語の壁があるようです。
このカリキュラムの目標は、中学校の英語授業は、小学校で学んだ内容を前提に進むことが多いため、中学生になると急な変化に戸惑うお子さまもいるようです。そこで、このカリキュラムを通じて、楽しみながら自然に英単語に触れ、中学校入学前に英語に対する苦手意識を少しでも減らすことが目標です。
◆料金とお試し期間
海津校では2025年4月からスタートします。通常料金は月額8000円です。
◆カリキュラムの内容
週1回の授業:動画視聴+マインクラフト+タイピングを行います。
自宅学習:タイピング練習を毎日5分から始めましょう。宿題ではなく習慣づけを目指します。
自宅でやりなさいと言っても続かないと思いますので、”ご飯を食べたら英語をする”、"お風呂の後に英語をする"。など促しをお願いします。
◆料金とお試し期間
海津校では2025年4月からスタートします。通常料金は月額8000円ですが、2025年4月〜8月の期間中はお試し価格として月額3000円でご提供いたします。
◆選べる学習強度
お子様に応じて調整していきましょう。
[A]しっかり学ぶモード :書きの単語テストをして90%正解 & ダイヤの剣をゲットできたら、次に進むコースです。
[B]学ぶモード :書きの単語テストをして75%正解 & ダイヤの剣をゲットできたら、次に進むコースです。
[C]ちょっぴり学ぶモード:書きの単語テストをして50%正解 & 金の剣をゲットできたら、次に進むコースです。
[D]楽しむモード :書きの単語テストはしますが合格ラインはもうけません、ただただ英単語に触れることを目指します。
不合格だった場合、次週練習してテストを実施します。
※〇〇の剣については、体験会で説明します。
◆選べる進行速度
週に20単語登場します、覚えれる数はお子様によって変わります。
[8]1週間で8単語:1ステージ(60単語)を7週間で進めます
[10]1週間で10単語:1ステージ(60単語)を6週間で進めます
[12]1週間で12単語:1ステージ(60単語)を5週間で進めます
[15]1週間で15単語:1ステージ(60単語)を4週間で進めます
◆不定期に面談します
学習ペースが最適か面談します相談しましょう(必須)。自分が知らない単語を覚えると考えてみてください。1コマで20単語登場する仕組みになっています。
悩みに悩みましたが、参加回数や練習した回数に応じて、ポイント(シール)を集めて、景品と交換できるようにしたいと思います。
1. レッスン
2. 予習/復習動画
3. なぞとき
4. 3Dパズル
5. STEM教育
6. 左右テスト
7. アルファベットテスト
8. 教室アルファベットタイピング
9. 教室アルファベットタイピング
10. 教室ローマ字タイピング
11. 教室英単語132タイピング
(注)レッスン回数等は、さかのぼって算出します。
謎解きは脳を活性化させ、エンターテイメントとして学習を楽しむことができる
有益なアクティビティだそうです。
本部が用意してくれている謎解きが、20問程度あります。
教室にもおいてあるので、もっていってください。
こちらに、問題と答えを用意しました。
問題と答え
※左の問題は英語が含まれていますが、お渡しするものはすべて日本語です。
教室の玄関に100均一で売っているパズルを置きました。
自由に持って帰ってください。
個人的にコスパがいいと思っているので、子供たちと遊んでください。
家に置いてもらってもいいし、教室の玄関に飾ってもらってもいいです。
※私は、同じものをばらして子供とタイム競って遊びました。
◆21世紀型の新しい教育「STEM教育(ステム)」が世界各国で導入され始めているらしいです。
・Science(科学)
・Technoloogy(技術)
・Engineerring(工学)
・Mathematics(数学)
◆"Apitor Robot x"で遊ぶことで、STEMを学ぶことができるそうです。
Apitor Robot x
12種類のロボットの形状だけでなく、自由な発想力でロボットを作り出すことができます。
◆"Apitor Robot x"を貸し出します
費用:300円 ※パーツ紛失対応用
期間:3週間程度
期間:何度でも
対象者:ステージ5をクリア
※プログラミングで分岐を必要とするため
お試し感覚:OK
組み立て図は、付属アプリで見るのをおすすめします。そのまま操作もできます。
※細かいパーツも多いので、床でやることをお勧めします。
子供には壊さないでね&無くさないでねと念押ししますが、
そういったこともあると思うのであまり気にしないでください。
◆プログラミングについて
これまでプログラミング学習ツールをいくつか比較してきましたが、他のプログラミング学習は便利な機能が多い反面、基本的なことが抜けているように感じています。
(これからの時代では、あまり気にする必要はないかもしれませんが)
イメージ:ニンジンを半月切りにする
〇コードアドベンチャー
1.包丁を選ぶ、2.皮をむく、
3.にんじんを縦半分に切る、
4.横向きに切る、5.完成。
〇"Apitor Robot x"
1.機械に入れる、2.ボタンを押す、3.完成
方向テストやり方
ご家庭で遊びながら、覚えてください。
目的:左右を理解する。
自分基点と相手基点を理解する。
方向と動作を区別する。
エージェントを動かすときに、左右を使用します。
序盤は間違っていても反対にすれば、結果的に正解になります。
徐々に複雑なプログラムを書くので、左右を理解していないと、新しいことを覚えることが難しくなります。
日常生活の中で「右のモノを取って」「右に飛行機が飛んでるよ」などを取り入れて意識させることをお願いします。
問題は3種類あります(38枚)
1. 自分から見た方向(18枚)
2. 相手から見た方向(12枚)
3. 自分の向きを変える(8枚)
◆本部提供のタイピングゲーム
(Chrome/Edge対応)
◆本部から楽しめるタイピングゲームがリリースされました。タイピングには少しだけ力を入れます。
教室ではレッスンを優先しますので、教室でタイピングがしたい場合は、〇〇分やりたいと宣言ください。
※私は「カリキュラムが進んでない」と言われるのが怖いので。。。
◆学習の流れ
1. 本部タイピングゲームで慣れる!
2. 教室練習動画で練習する。
3. 本部タイピングゲームで競う!
※2と3は並行に進んでもよいです。
※慌てる必要はありません、強制だけはしないようにお願いします。
◆タイピングはこちら
タイピング&予習復習ページ
※お子さんにはこちらのURLを教えてください。
◆タイピング2種類用意してます。
どちらも家で練習できます。
①本部公開のタイピングゲーム
目的: 楽しむ! 速度を極める!
家庭用と教室用との違い。
・家庭用ではランキングが表示されない。
・家庭用ではコインがたまらない
※限られた予算で開発しているので、
バグを見つけてもそっとしてください。
②教室からの練習動画(youtube)
目的:音と一緒に単語を覚える
3種類用意しています。
1つ目 アルファベット
2つ目 ひらがな50音
3つ目 英単語132
※それぞれ十段階用意してます。
再生速度が違うだけです。
※①は音が無いのと間違えても見直すことができないので、それを補うために②練習動画を用意しています。
◆大人向けですが、無料で模試が受けれてレベルがわかるサイトです。興味があれば試してみてください。
文章が大人向けなので子供は難しいです
タイピング技能検定(イータイピングマスター)
※教室と関係はありません。
※最新版は教室に張ってありますので、そちらをご確認ください。
このリストにある景品は全てAmazonで購入できるものです。Amazonで販売されなくなったものは景品リストから削除します。
他サービスで購入することはしません。購入ルートが増えると正直大変なので、承知おきください。
できる限り期待に応えるつもりです、改善点があれば教えてください。
ほしいものがない場合ですが、シールを集めるだけでも良いです。
この一覧にないものを景品にすることはできますので、気軽に相談ください。
写真などを見せてもらえるとイメージが湧きやすいです。
イメージは親御さんで購入してもらい、それをこちらで購入させて頂きます。
領収書が必要になりますので、宛名は空欄もしくは、海津キッズプログラミングスクールにしてください。
領収書がない場合は引き取れません。
なんとなくですが、コンサートのチケットやゲームなどは渡したくないです。
金額ですが、5000円以下でお願いします。あまり高価なものは渡したくないので。
申込フォーム:ジャパンツアー2024

定員50家庭 先着、プレミア開催
①-1 英語×マイクラコース体験会
①-2 AIプログラミング体験会
② ジャパンツアー2024(プレミア試験実施)
会場:ウインクあいち
7月28日(日曜日)
10:30~11:30
英語×マイクラコース体験会
(定員8名 抽選)
12:00~13:00
AIプログラミング体験会
(定員8名 抽選)
14:00~16:00
ジャパンツアー2024
(定員50家庭 先着、プレミア開催)