遊び場16
sumimさんのSqueakToyレッスンに触発されて今、作ったファイルのアップのテストです。見えるかな? --Toshi - 2002-07-13, 01:10:07
ちょっと、絵がでかすぎですね。すいません。これはsumimさんのものに、オブジェクトのリサイズを加えたもので、3次元っぽくなるかなぁ?と期待していましたが、3次元というより、やっぱり、オブジェクトが大きくなったり、小さくなったりするだけでした(笑)。苦労したのは、Test-Yes-Noと(sumimさんのレッスンを読んでない証拠?)、実行文の置き方(これもsumimさんのレッスンを読んでいない証拠)、あとは座標系が期待していたのと違う点です。 --Toshi - 2002-07-13, 01:18:39
早速にありがとうございます。よかったら、.pr ファイルをアップしていただくと雰囲気がつかみやすいです。SqueakToys(商標の関係で最近はこう呼ぶそうです)は、工夫次第でいろいろと楽しめて面白いですよね。レッスンのほうはお気になさらずに、どんどん遊んで何か発見がありましたら教えてください。--sumim - 2002-07-13, 01:26:15
それでは、お言葉に甘えてアップさせてもらいます。SqueakToysはなにかプロジェクトファイルが大きくなりますね?通常のプログラミングでMorphを作成したよりも大きくなる気がするのですが。。。 --Toshi - 2002-07-13, 01:35:41
EtoyTest 1.pr
拝見しました。微妙にほのぼのとした雰囲気が出ていていいですね。--sumim - 2002-07-13, 03:29:29
こんにちは。阿部です。私には十分3次元に見えました:-) increase byとbounceを使うとスクリプトが少し短くなるかもしれません。
本格的にやるには3次元キャラクタを作って動かすでしょうか。
SqueakToysの座標系は、算数や数学で使われているものに合わせていると思われます。
あと、プロジェクトのファイルサイズが大きいのは、イメージの一部(プロジェクトに存在するオブジェクト全部)をダンプしているためです。--abee - 2002-07-13, 14:24:49
阿部さん、ご無沙汰しております。日本語環境構築、ご苦労様&ありがとうございます。それに関してですが、最近Linuxを使うことが多いのでUnix用のVMに漢字入力のパッチをあてましたが、うまく動いていません。現在の私の知識では難しそうです。私自信、その必要に迫られていないので、とりあえず放ってあります。進展があれば御知らせします。
SqueakToysに関しては、昨日までろくに知らなかったので(本で読んだだけです)「おまけ」程度に思っていましたが、実際はかなりの柔軟性を持っていますね。でも、私のマシンではあれだけのスクリプトでも重いです(Celeron 450MHz)。
SqueakToysに関する答え、アドバイス、それと「おせじ」、ありがとうございます。
んで、調子に乗ってゲームです。「フラッシュ暗算」(SqueakToysではありません)。 ソロバンが欲しくなりました。 --Toshi - 2002-07-13, 15:11:52
Flash Computing.pr -- 「フラッシュ暗算」は著作権を主張する方がいらっしゃるようなのでリンクを外させていただきます。sumimさんにお願いしてアップしたファイルを削除してもらうつもりです。sumimさんをはじめ、みなさんにご迷惑をお掛け致します。今度はオリジナルでガンバリます。 --Toshi - 2002-07-24, 17:21:00
こちらこそ、ご無沙汰です。Flash Computingを拝見しました。私はこの手のゲームが苦手で、1桁、5回、1000msが限界です:-) 回答の入力とその正否判定があると面白いかも。あと、LabelButtonMorphでメニューが開いたときに、項目をどれも選ばすにメニューの外でクリックすると、nil asNumberになります。また、NumberLabelMorphは現時点では動かないようですが、これは完成するとアップダウンボタン付で数値を設定できるラベルになるのですね。--abee - 2002-07-18, 22:22:07
そうそう、ここは「お試しページ」なので、sumimさんにお願いしてToshiさん専用の遊び場に移動してはいかがでしょうか。--abee - 2002-07-18, 22:24:12 移動しました。--sumim
わざわざチェックして頂き、ありがとうござい>>buttonClickの、
value _ ((SelectionMenu selections:menu) startUpWithCaption:'select new value') asNumber.
を、
value _ (SelectionMenu selections:menu) startUpWithCaption:'select new value'.
(value isNil) ifTrue:[
^nil.
].
value _ value asNumber.
にすれば「一応」大丈夫ですね。
もしもよかったら教えて頂きたいのですが、修正では value を使いまわししています。私の性格(?)では、これはOKなのですが、Smalltalkとしては一般的ではないのでしょうか?
言語としてというよりも、人によるように思います。私も変数の使いまわしを行なうことがありますが、明らかに意味が異なるような場合は避けています。
私は普段からなるべくコメントを書かないように心掛けているので、変数名はコメントの変わりとして可読性を上げるための重要な要素だと思っています(iとかjの意味をコメントで書くのはあまり好きではありません。昔と違って十分なリソースがあるわけですから、贅沢に使うべきだと思っています)。
また、長いメソッドの場合は要注意かもしれません。つい先日も、既存のメソッド中の変数名を使いまわしていて、突然動かなくなったことがありました。これは、この変数に代入されていた値をメソッドの後の方で使っていたにも関わらず、一時的で局所的な変数と読み間違えていたためでした。--abee
- ありがとうございます。私は「面倒なのでコメントはあまり書かない」のと、変数は後々困るので、なるべくわかりやすい変数名を使うようにしています。特にインスタンス変数の命名は重要ですね。それのアクセス用のメソッドなどに影響しますから。--Toshi - 2002-07-25, 11:52:13
もう一点、nilの時に画面を書き換える必要がないので、^nil していますが、特に返したいオブジェクトない場合、やっぱり self を返すのが基本なのでしょうか?で、エラーの場合、nil を返すとか?
慣習として、メソッドが不正常終了した場合はnilを返すようです。これも厳密に決まっているわけではなく、そのようなケースが多いということです。同様に、selfはリターンを省略した場合のデフォルトの返り値であることもあり、正常終了時に用いることが多いようです(関数的なメソッド以外)。
もちろん、場合によっては異常時にシグナルを上げて例外処理を行なうようなこともあります。
一般的に、VisualWorksでは、Smalltalkの慣習がよく守られており、Squeakではあまり守られていません。Smalltalk With Styleという本もありますので、もし興味がおありでしたら、一読されるのもよいかもしれません。--abee
- なるほど、一応、エラー時にはnilを返すようにはしていたのですが、今はシステムのエラーメッセージが私のエラー処理になっています (^^;)。ご紹介の本は購入リストに入れておきます。感謝します。--Toshi - 2002-07-25, 11:59:01
上記の2点、よく迷います。 -- Toshi - 2002-07-20, 12:13:46
NubmerLabelMorph は最初、SyntaxMorphのNumber(fancy)のラッパーを作ろうとしましたが、私の手に負えなかったので、自作で似たようなものを作ろうとしました。これも手に負えなかった(面倒?)ので、LabelButtonMorphを作ったしだいです。
それから、わざわざ私のページを作って頂いて、sumimさんとabeeさんに感謝します。 --Toshi - 2002-07-20, 12:33:11
いえいえ、おやすい御用です。むしろ配慮がいたらず遅くなってしまい恐縮です。--sumim - 2002-07-20, 14:14:35
いきなりですが、Squeakを使って音楽します!
SqueakにはMIDIやFMサウンド、MP3などのクラスやSiren(最近、ホームページにアクセスできなくなりました)などのアプリケーションがありますが、MIDIはいいソフトを持っていたり、FMサウンドはちょっとショボイし、SirenはWindowsで問題があったりします。
そこでSmalltalkの勉強と自分で自由に変更できるように正弦波から作成して、奇妙な音楽を作ってみたいと思います(できるかなぁ?)。--Toshi - 2002-07-25, 23:32:00
正弦波
まずは基本の正弦波ですね。その名も SineWaveGenerator (そのままだぁ!)。これのインスタンスは正弦波の高さを next メソッドで次々に返します。インスタンスを生成するために必要なパラメータは、周波数、最大値の大きさ、一周期を何等分するかと、最初の位相です。まあ、こんな感じかな? SineWaveGenerator.st --Toshi - 2002-07-25, 23:46:43
この正弦波は大きさ(magnitude. radiusとかdiameterとかがよかったかも?)を持っていましたが、後々のことを考えて1固定に変更しました。
複数の正弦波の合成
音は波形で表すことができるけど、正弦波とその倍音の正弦波(複数)を合成することで波形を生成できるってことらしいです。詳しくはフーリエ変換とかで調べてください。倍音とは、その周波数の整数倍の周波数を持った波形のことですね(う〜ん、説明が下手だなぁ)。クラスSoundWaveGeneratorは複数の正弦波を管理して合成するものです。
エンベロープ
ペネロープはサンダーバードにでてきますが、エンベロープはシンセサイザーによくでてくる言葉です。普通の楽器は吹き始め(弾き始め)のアタック音、ほぼ一定の大きさで続く持続音、音が消え初めて消えるまでの減衰音に分けて説明される場合が多いのですが、この一連の音の大きさをエンベロープというわけです。
実はSqueakにはEnvelopeクラスがあり、そのまま使えますが一応作ってみました。
実験
今までのクラスの実験です。Sound-Waves.stを file inして以下を実行します。test2はCeleron 450MHzで2分ほどかかります。
SineWaveGenerator example1
SineWaveGenerator example2
SoundWaveGenerator test1
SoundWaveGenerator test2
SoundWaveGenerator test3
SoundEnvelope showOnDisplay
- 2002-07-27, 22:32:19
う〜ん、画像イメージを読み込んで、それから音を勝手に作成するものを実行してみたのだけれど、あまり面白いものが作れない。音の変化や種類も乏しい。音はその倍音の位相と大きさ、ピッチとボリューム、そしてボリューム、ピッチの変化(トレモロ、ビブラート)なども指定できるようにしたのだけど、1つの音を作成するのが結構面倒。もう少し単純な方法で音を作成できるようにしなければ。
それとは別にWindowsのWaveファイルと読み書きできるクラスを作成。もっともPCMしかサポートしないけど。リアルタイムに音楽を生成しようとは思っていないので、とりあえずはOKかと思う。Music-WaveFile.st --Toshi - 2002-08-06, 14:54:53
ちょっと休憩
フラクタルを表示するプログラムを作成しました。結構きれいだったので載せておきます。
Graphics-Fractal.stを file in して、
Mandelbrot new mandelbrot1 をdo itすると500x500でよく見るマンデルブローのイメージを描きます。Transcriptに計算と描画にかかった時間(ミリ秒)を表示します。
Mandelbrot new mandelbrot2 をdo itするとユーザに矩形を選択するマウスカーソルになるので矩形を指定します。描画が済むと次に矩形を選択するモードになり、現在描かれているイメージの中を指定するとその部分が拡大されるようになっていて、イメージの外を指定すると終了するようになっています。
2つのイメージが違うのは計算に使用している係数を+、−にしているからです。
--Toshi - 2002-08-30, 23:43:32
久しぶりの書込みですが、お友達のサイトでもSwikiを立ち上げたので、そこで遊んでました。そこでMIDIを使った自動作曲プログラムをアップしています。まあ、興味があれば、http://factory.tvnet.ne.jp:8080/Workshop へもよってください。まだ、あんまりコンテンツがないのですが。。。--Toshi - 2002-09-30, 19:49:48
拝見しました。みでぃん子、ちからが入っていますね。GUI 構築用ツールの話は聞いていましたが、こういうものだったのですね。あと、確かにウチの情報は探しにくいですね。某所でも指摘されていましたから、なんとかしないといけないのですが…(^_^;)。--sumim - 2002-09-30, 20:04:28
ありがとうございます。GUIに関しては、本当はMorphを貼っていって作成できればいいのですが、そのツールを作るには(私には)技術的に問題あるのでPrefab(GUI構築ツール)を使いました。AlignmentMorphやLayoutFrameなども使ってみたのですが面倒ですね。
サイトの構成に関しては、Swikiというものを知らなかったので最初は迷いましたが、コツが判れば自由に行き来できますね。いや〜、Swikiって本当に面白い。--Toshi - 2002-10-01, 13:58:17
初めまして、masaと申します。上記でも取り上げられているToshiの「みでぃん子」があるSwikiサイトですが、Linuxに移行した事を受けてポートを変更しています。http://factory.tvnet.ne.jp:8080/Workshop になってますので、よろしくです。--masa
紹介しました。修正しておきました。お知らせありがとうございます。>masa さん --sumim - 2002-11-15, 18:48:42
お久しぶりですが、忙しかったです。知人のウェディングドレスの手伝いもしたりして。。。
abeeさんに進められたSmalltalk With Styleは注文してあったのですが、Amazonからメールで在庫がないようなのでキャンセルさせていただきました、とのメールがきました。Quick Trip to ObjectlandとSmalltalk-80 The Languageは大分前にきていたので忘れてましたが。--Toshi - 2002-12-15, 13:39:35
ごうもごぶさたしております。Smalltalk With Style は残念でしたね。どこかで入手できないものなのでしょうか…。--sumim - 2002-12-15, 20:01:12
ううっ、また、久しぶりになってしまいましたが、ちょっと前からSwikiを立ち上げていて、ごくごく少数(2,3人)にアクセスして試していました。まだ、内容がほとんどないのですが、まあ、よかったらどうぞ。。。http://baliset.dtdns.net:8888/Public です。Swikiも最近ちょっとコードなんかを触ってみようかと考えています。--Toshi - 2003-01-24, 23:42:07
>Swikiも最近ちょっとコードなんかを触ってみようかと
私も Comanche で Web アプリを組んでみたいと思うのですが、なかなか手が出せずにいます。こんなのばっかりです(^_^;)。--sumim - 2003-01-25, 00:16:25
このページを編集 (12487 bytes)
|
以下の 2 ページから参照されています。 |
This page has been visited 6370 times.