タグ

ブックマーク / devroom.viscuit.com (83)

  • テトリス

    ビスケットでテトリスがついにできました.つくってみると簡単でしたが,メガネの数は相当多いです. 制作は方眼紙モードで真ん中の荒さにします. 落ちてくるブロックは,方眼紙のマス目を一つの四角の大きさになるように描きます. この逆Lブロックを一つ描けば90度の回転くらい自動でやって欲しいところですが,このビスケットでは方眼紙モードでの回転はできないので,4つの向きをそれぞれ別の絵として作るしかありません(将来のビスケットではできるようになると思います). ブロックの他に次のような絵も描いておきます. 画面に四角を並べるのを楽するためにメガネで作ります. これで緑のバツを一つ置くと横に紫のバツがならんで,それが一つづつが縦に四角を並べます.ボードの大きさを変えたい時も簡単にできます. 最初にこのように絵をおきます. 緑のバツが紫のバツの列に変わって , それぞれが四角の列にかわります. このブロ

    テトリス
    hcnkino
    hcnkino 2017/05/09
  • リアルタイム反射ゲーム

    ボールが一定間隔で発射されて,星を消してゆくゲームの原型を作りました.ビスケットでプログラムを作る上でいくつか重要なテクニックが入っているのでご紹介します. ゲームの最初の配置はこんな感じ. ボールは体と影(小さい丸)の2つの部品でできています.この二つの部品がどのように置かれているかで,飛ぶ方向が変わります. 斜めの板が置かれていて,ボールがそこに当たると飛ぶ方向が変わります.斜めの板は2種類で,ボールが4方向に飛びますから,反射のめがねは8つです. ボールを一定間隔で発射する発射台です.間隔を数えるために2進法のテクニックが使われています.火を1つ生成する(1つ目のめがね).火が2つ重なったら,それが消えて隣に一つ火ができる(2つ目のめがね).火が3つ並んだら全部消えてボールを左に発射(3つ目のめがね)3つ並ぶには8回生成されますから,8ステップに1回ボールが発射されます. この仕組

    リアルタイム反射ゲーム
    hcnkino
    hcnkino 2017/05/08
  • 斜めの落ちゲー

    結構面白いオリジナルゲームができたのでご紹介します. ゲームの最初の状態は このようになってます.この青い点の所に数字が埋まります. 一番上の矢印の下にランダムに1,2,4の数字がでて,落ちてゆきます. ランダムに生成するメガネは 落ちてゆくのはこれ. このゲームの面白さは,落ち方がランダムなところです.それがあるので,先が読見にくくなってます. 1が2つ並んでいるのを消すと2に,2が2つ並んでいるのを消すと4になります.消すのは下の方の数をタッチします. ゲームの目的は,4を4つ並べて消すことにあります.こちらも下の数をタッチして消します. 消えると得点となります.得点は2進法の火でカウントされ,爆弾にまで火が進めばクリアです.爆弾は丁度5個分離れていますので,この場合は32点でクリアです. ゲームはこのリンクからどうぞ. ゲームのリンク PCではFlash が見えるブラウザで.スマホ,

    hcnkino
    hcnkino 2017/05/08
  • 倉庫番

    宮城県の杉山さんが,昔懐かしいゲーム倉庫番を作ってくださいましたので,ご紹介します. 倉庫番というのは,平面のゲームで荷物を押して所定の場所に片付けるパズルです.荷物を押すことしかできないので,たとえば壁にくっつけてしまったらそこから引き出すことはできません.角に入れてしまったらもう動かせません.荷物は一つしか押せません.荷物が障害物になったりするので,順番を考えて行ったり来たりして解きます. 最初の画面はこうなってます. このプログラムのミソは「空白(何もない)」という場所も絵として表現してある点です.そうじゃなければ「うごけない」というケースを沢山列挙しなければならないのでメガネがすごく増えてしまいます.昔のBASICでゲームを作っていた人ならよく使うテクニックでもあります. まずは,人の隣に空白があって,その空白をタッチしたらそちらに動くというメガネです. 杉山さんのプログラムでは,

    hcnkino
    hcnkino 2017/05/08
  • シンギュラリティは来るのか

    シンギュラリティ(技術的特異点)というのが昨年あたりから騒がれ出しました.人間は将棋でコンピュータに負けても,囲碁はまだ負けないと思われていたのが,突然負けたりしたことが,大きく効いているみたいですね.文科省の学習指導要領のなかに「プログラミング」という言葉がここまではっきりと入ったのは,囲碁の事件が影響しているという話もあります. 最初は,人工知能のプログラムは人間が書いていました.人工知能が賢くなるとコンピュータがプログラムを作るようになり,それが進むと人工知能のプログラムは人工知能が作るようになります.最初はそうやってできた子の人工知能はそれほど賢くないかもしれませんが,そのうち親を超える賢さを持つようになるでしょう.作られる人工知能が親を超えた時,あとは人間の手を離れて,勝手にどんどん賢くなってゆきます.それがシンギュラリティです. どんな技術があれば,そのような超賢い人工知能が作

    シンギュラリティは来るのか
    hcnkino
    hcnkino 2017/04/11
  • 我が国発のプログラミング言語(Viscuit)

    総務省の補正予算「若年層に対するプログラミング教育の普及推進」に我々が採択されました. 審査の観点のところで「我が国発のプログラミング言語」ということでビスケットの名前を出していただいています.ありがたいことです. しかし,国産であることはあまり重要ではありません.他にも日人が作ったよいツールは沢山ありますから.それよりも僕が重要だと思っているのは,開発者が現場に出てアップデートしている,ということです.それがどういうことなのかをお話しましょう. 授業やワークショップをやっていて,何か問題があったとします.たとえばある男の子が全然言うことを聞かなくて,その子に引きずられて進行が遅れてしまったとか,タブレットの操作に慣れていない子が数名いたので,スタッフが1人つきっきりになってしまったとか. 普通なら,その後の反省会でどういう進行をすればそのような問題を防げるか,いろいろな意見が出ることに

    我が国発のプログラミング言語(Viscuit)
    hcnkino
    hcnkino 2017/04/02
    開発者が現場に出る
  • プログラミング言語をつくること

    昨日の夜,スナックネルというネット上の対談番組?でScratchの阿部さんがゲストで出演されていまして.内容はとても面白かったのですが,その中で一つ僕が注目したのは,アラン・ケイさんは「プログラミング言語を作る能力がなければプログラミングをやったとは言えない」ということをおっしゃっているそうで. 僕も当にそう思っていて.今のコンピュータを支える2大発明は何かと聞かれたら,一つは集積回路という発明で,ものすごい数のトランジスタの回路をとても小さく作れるようになったこと.もう一つがプログラミング言語という発明で,コンピュータと人間をつなぐ記述方法なんだろうなと,思ってます.まあ,それくらいプログラミング言語というアイデアはすごいのです. 別の言い方をすると,ハードウェアの発展が集積回路の性能の向上だとすると,ソフトウェアの発展は新しいプログラミング言語の発明ということになるのでしょうね. プ

    プログラミング言語をつくること
    hcnkino
    hcnkino 2017/03/28
  • ビスケットであそぼうの目次

    ビスケットのの中身が2倍あると書きましたが,当です. 下に目次を載せましたが,昨年の6月で一旦書いたときは3章までの内容しかなくて,それで1冊にしようと考えていました.実際に2年前にを出していたらそこまでだったでしょう. ところが昨年の3月くらいにipadのバージョンがリリースされて,今回のキモである「方眼紙」のモードが導入されてから,面白い応用が次々と発明されまして.それは次ののネタにしようかと迷いましたが.次のまでにはさらに面白い応用が発明されるだろうから,全部いれてしまえ,ということでこれだけの内容になりました.実は削ったのもいろいろとあります. にも書いてますが,ビスケットは覚えなければならない手順がとても少ないので,説明は当に数ページで終わってしまいます.なのでこれだけの内容ですがページ数はそれほど多くありません. 私たちは,ワークショップのうまいやり方を指導する「

    ビスケットであそぼうの目次
    hcnkino
    hcnkino 2017/03/24
  • 言語の進化とプログラミング教育

    プログラミング言語というのは,人間が頭に浮かんだものを正確にコンピュータに伝えるために何らかの方法で記述する方式です.人間はそのプログラミング言語の使い方を習得するのと同時に,コンピュータはその言語で書かれたものを解釈して自分が実行できる形式である機械語のレベルにまで変換できなければなりません. 昔はコンピュータの入力装置としてパンチカードとカードリーダーというのがありました.カードに穴をあけて,1行分のテキストを表現します.これを重ねて何行かのプログラムとしてコンピュータに読み込ませて実行しました. そこから文字ターミナルという入出力装置に変わって,画面全体でカーソルを移動しながらテキストを編集できるようになりました.プログラミング言語の文法も行から少し自由になりました.ターミナルが入出力装置であるという性質を生かして,人間がプログラムを一方的に記述するのではなく,コンピュータ側からその

    言語の進化とプログラミング教育
    hcnkino
    hcnkino 2017/02/07
    プログラムを書けるかどうか,という入口でもがいているのではなくて,コンピュータに何をさせたいのか,ということを思いつく能力がますます重要になってくるということです.
  • ドーナッツ

    今日は展示の柱になっている,面白い立体の形を作ることができるドーナッツというアプリをご紹介します.このアプリ,奥が深いんでこのブログの回が進むとなんども登場すると思います. ブロックを並べて機械を作ります. これは回転の先に棒がついて,棒がくるくる回転します. その回転の先にボールをつけると, ボールが回りますが,そのボールを筆にして空間で形を作ると,リングの形になります. このように回転ー棒の先にまた回転ー棒をつけると 2段階で回転します.棒の長さや回転数は違いますが,太陽・地球・月の動き方ですね. そこにボールをつけてみると. のようになります. でもこれでは立体と言いつつ平べったい形です.そこで,ひねるという操作を2つ目の回転の前に入れます. 2つの回転が90度ひねられてます.そこにボールをつけると このような形が出来上がります.2つ目の回転数が5になっているので,1つ目の回転が1周

    ドーナッツ
    hcnkino
    hcnkino 2017/02/05
  • 1次元セルオートマトン

    昨日のファシリテータ講習にいらした方がトライしてらしたので,作ってみました. ある規則に従って計算するとこういう模様ができあがるというものです. 規則というのは,こういうものです. 上が今の世代で,下が次の世代です.たとえば,左上のメガネは今の世代で白が3つ続いていたら,次の世代では白になるという意味です.3つのセルの色がどうなっているかで次の世代の色がどうなるかをこの8つのルールで決めることができます.このルールを色々と変えて遊ぶことができます. 少し追記します.ここでポイントとなっているのはメガネの中に見える小さな黒い点です.この黒い点が次の世代のセルを計算させるきっかけとして動いています.黒い点があるところしか計算しません.それがないと無限に生成してしまいますから. そこから最初にパターンを並べるためにこういうテクニックも使ってます. まず,青いばつは横に10個ならんだ?と黒い点を作

    1次元セルオートマトン
    hcnkino
    hcnkino 2017/02/05
  • 信号機のシミュレーション

    ビスケットでのプログラミングは他のプログラミング言語といろいろと違うために,これを作ろうと思ってもどのように作ればよいか,なかなか慣れないと難しいでしょう. 今回は,ご質問をいただいたので,そのプログラムを作ってみたいと思います.お題は信号機のシミュレーションです. 優しいものから考えて行きます.車用の信号で赤,青,黄色の3色があるというやつですね. 個人制作で,設定を押して,方眼紙のモードにします.実行速度も亀の一番遅いのにします. まず絵を描きます.アニメーションを作るときに,それぞれの部品で変化しない部分に同じ色を使って描くことが重要です.同じ色を使うことで変化した部分が強調されるからです.同じ色で描くには,下絵の機能(お絵かきで右の絵をタップするとその絵で使われている色をとりだすことができる)をつかいます.ここでは,3つの信号機で,消えているときランプの色が他の2つで同じ色になるよ

    信号機のシミュレーション
    hcnkino
    hcnkino 2017/01/28
  • パズル系ゲームのプロトタイピングにどうですか?Viscuit

    記事は,「ゲームエンジン・ライブラリ・ツールの開発 Advent Calendar 2016」の5日目です.ビスケットをよくご存知ない方でも読めるように書いています. ビスケットは,プログラミングを自分ではやらないような人たちに,少しでもプログラミングの楽しさとか可能性を知ってもらおうと思って2003年に作りました.そこから,機能を削ったり増やしたり少しずつ変わってきています.今は,スマホやタブレットでも遊べるようになっています. ビスケットでのプログラミングは癒されるので,僕は寝る前にベットの中でプログラムを作って遊んだりしています. 今回,ゲームを作る人たち向けということで,ビスケットをゲームのプロトタイピングに使うことをご紹介します. ペグソリティアというゲームを作りながらビスケットの説明をしましょう.ペグソリティアは並んでいるボールを一つだけ飛び越えてボールを取り除き,最終的にボ

    パズル系ゲームのプロトタイピングにどうですか?Viscuit
    hcnkino
    hcnkino 2016/12/05
  • 宣言型言語の話 | ビスケット開発室

    ビスケットは宣言型言語ということで,少しそれがどういうものか話してみましょう. プログラミングに必要な能力は,どういう言語を使うかで変わってきます. 普通のプログラミング言語では2つの数の足し算ができます.Scratchもそうですね. 数が10個あったとき,その合計を求めるという問題を考えましょう.沢山の数を足すときに,たとえば人間だったら,足して10になるペアを見つけて,それから順に足して行けば,暗算で計算できますよね.1と2と7を見つけて10にするという,3つの数を同時に計算できたりもします.コンピュータの場合は,前から順に足して行くのがよいでしょうか?後ろから足してもいいですね.コンピュータが沢山ある場合は,数をそれぞれに分割して,それぞれのコンピュータで合計を求めてから,最後に全部を足してもよいでしょう.いずれにしても,コンピュータができるのは2つの数の足し算だけなので,それをどの

    宣言型言語の話 | ビスケット開発室
  • 論理回路

    ビスケットでのプログラミングのコツは変化を作るということです.変化しなくてよいものを作らなくてよいのです.どういうときに変化するかというと,間違っている場合にそれを正しいものにする,ということです. 一番簡単なNOTゲートです.NOTは入力が0の時は出力が1,入力が1の時は出力が0になるというものです. 上のメガネは,入力が0で出力も0のときは(間違っているので)出力を1にする,というものです.同様に,下のメガネは,入力が1で出力も1のときは出力を0にします. 同じ考え方でANDゲートは,2つの入力が1のときは出力が1,それ以外は出力は0です. 上のメガネは,2つの入力が1で出力が0のとき出力を1にします.下の二つのメガネは,入力のどちらかが0で出力が1のときは出力を0にします. ORゲートも同様です. 回路を作るにはそれぞれの入力や出力を電線で繋がなければなりませんが,ビスケットでは電線

    論理回路
  • コンピュータに教えるという発想

    プログラミングを学ぶのか,プログラミングで学ぶのかとか,いろいろな議論があるけれども,だいぶ見えてきたような気がします. 例えば,ビスケットで漢字の書き取りをする話や,昨日の学年別手書き入力など,これを同時にやればいいんだということですね. まず,必要なのは無限に保存できる電子ノート.手書きの良さを失いたくないので,iPad proとApple Pencil くらいのデバイスが欲しいです.小さいproか,できればiPad miniくらいのサイズのがあればもっといいですが. それを小1がつかいます. その上で文字の練習や漢字の書き取りをします.するとデバイスが少しずつ学習してその子が知っている漢字,単語を覚えて行き,認識できるようになります. 書いた文字を文字として認識してフォントの文字に清書するのかどうかは,後から決めます.とりあえず入力した情報はすべて保存しておいて,それをどのように見る

    コンピュータに教えるという発想
    hcnkino
    hcnkino 2016/11/24
  • 子供にとっての理想のコンピュータの入力

    いつもはソフトウェアの話ですが今回はハードウェアの話を書きます.ここでいう子供というのは小学生のことです. まず,子供たちにキーボードを使わせるということに僕は反対です. わかりやすくするために話を4つに分けます. 1)人間にとって理想のコンピュータの入力 2)日人にとっての理想のコンピュータ入力 3)現実とのギャップからどうやって理想に近づけるか 4)子供の教育をどうするか 子供にキーボードを触らせるということは,1)から3)の議論をすっ飛ばしてます.未来永劫,今のコンピュータの形が変わらないのだったらそれでもいいのですが,僕はコンピュータをより良くしようと考えている研究者なので,形が変わらないという説は受け入れられません. まず1)人間にとって理想のコンピュータの入力です. 最近,音声認識の精度があがり,入力はそれでいいんじゃないか,という説もありますが.短い時間に限定するならよいで

    子供にとっての理想のコンピュータの入力
    hcnkino
    hcnkino 2016/11/23
  • 変数とはなにか

    ビスケットには変数はありません.変数がないのでとてもまともなプログラムなんて組めないと思われるのも仕方がありません.ところが,これまでいろいろとみてきたビスケットのプログラムでは,変数を使っていないにもかかわらず,想像以上に高度なプログラムがつくられています. 変数とはなんでしょうか.何のために必要でしょうか. 手続き型言語では,状態を保持する仕組みのために変数を使っています.というか変数以外に状態を表現する方法がありません. Prologのような論理型言語や,関数型言語では変数は状態を保持するというよりも,値を参照するためにあります.変数というのは値が変化する数という意味ですが,これらの言語では一度値が決まると他の値に変わることがありません(単一代入という言い方をします).数学での変数と同じです.数学の変数に慣れている人が,値を代入してどんどん変化してしまう手続き型の変数に戸惑うという理

    変数とはなにか
    hcnkino
    hcnkino 2016/11/14
    []
  • マインスイーパー

    マインスイーパーがビスケットでできました. 地雷を隠すために,壁と同じ色で透明度が高い絵を使っています. まず,ランダムに地雷を置く部分です. あらかじめ画面に幾つか十字の矢印を置いておきます.これらはランダムに動いて,1/5の確率で?に変わります. ?は6通りの絵に変わります.5つ繋がっている縦・横.3つ繋がっている縦・横,2つ繋がっている縦・横. これらはその数だけ地雷の絵になります. 次に,縦横斜め8方向にある地雷の数を数えるプログラムです. ステージはこのように地面に覆われています.ここには十字矢印が動いてどこかに地雷が置かれているはずですが,地面と同じ色なので見えません. この地面をタッチすると,青い点(0の意味)と点線四角を生成ます.もし,ここに地雷があれば爆発します. 地雷がなければ,点線の四角は8つの方向の矢印に変わります.これらの矢印は独立した絵です. それぞれの矢印の先

    マインスイーパー
    hcnkino
    hcnkino 2016/11/09
    [viscuit][ビスケット][ゲーム]
  • プログラミングにおける回転と方向

    来,プログラミング教育の中に方向をどうやって教えるか,という問題は入っていないと思います.それは別の遊びやなにかで教えてゆく,というか普通に遊んでて年齢が上がれば自然と獲得できるものだとは思います. それでも,ある種のプログラミング教材で,ロボットなどの制御からプログラミングにつなげているタイプでは方向感が必要になってしまいます.ロボットへの命令が「前へ進め」「右に曲がれ」となっていて,実際に画面上ではロボットはどっちに進むのか,わけがわからないですから. それと区別するためなのか,ロボットから見た相対的な方向に対して,画面上で見た絶対的な方向を示すために,上や右の代わりに,北や東という方角を使ったりしていますが.そもそも地図が読める学年にならないとその言葉自体意味がないのではと思います. こういうプログラミング能力とは直接関係のないことをプログラミングを学ぶ上で求めてしまうのは遠回りと

    プログラミングにおける回転と方向
    hcnkino
    hcnkino 2016/11/07