RealBasic University

このコラムはStone Table Softwareのオーナーであり、またREALbasic Developerの編集者でもあるMarc Zeedar氏により書かれたものを、著者の許可を得て翻訳したものです。この翻訳はHREM Researchにより提供されています。この日本語版へのご意見はRBU-Jまでご連絡下さい。

URL: http://www.applelinks.com/rbu/018/
INDEXに戻る

REALbasicによるアニメーション:スプライトII

先週、我々はスプライトspritesを紹介し、非常に単純な棒人間のアニメーションを組み立てるためにそれらを使用しました。今週、我々はもう少し複雑なお祭りの射撃場ゲームのようなShooting Galleryを始めるつもりです。"Shooting Gallery"は決して十分な形の整ったゲームではなく、単なるデモです。しかし、それはスプライトがどのように動くかを理解するのを助けてくれるでしょう。もっとも重要なことには、このゲームが同時に動く複数のスプライトをどのようにコントロールするかを説明してくれます。このゲームは私がスプライトについて勉強しようと思っていた数年前に書きました。将来的には私はスプライトと高品質グラフィックスを使用して実際に一つのゲームを完成させることを計画しています。しかし、このゲームは出だしとして、また退屈なユーティリティからの気分転換として適しているでしょう。

このゲームについて

Shooting Galleryは単純なゲームです。しかし、内部的にはあなたがそれを拡張したいと思えば、より複雑なものをサポート出来るようにデザインされています。私はどうにかそのように見えるこの「素晴らしい」グラフィックスを約30秒で完成しました。私の幼稚なグラフィックスをもっと精巧なものに単に取り替えただけで劇的にゲーム性を向上させることになるでしょう。この背景はたまたま手元にあったBryceに描いた画像です。私は当初、背景用お祭りの射撃ブースを描こうと思ったのですが、面倒になり、どうでもよくなりました(結局、私はこれを実際のゲームのようにする事よりもスプライトを理解する事に関心を持ちました。)

このゲームはどのようなものでしょうか?それは基本的に鴨の集団が画面の上部を様々な方向やスピードで左や右に飛んでいます。ユーザは水平に移動する砲台をコントロールします。砲台は左右キーで移動します。一つのクールな点 は砲台の移動速度が加速することです:矢印キーを長く押し続ければ続けるほど、砲台はより早く移動します(最高速度まで)

ユーザが「発射」キー(スペースキー)を押すと、ミサイルが砲台から垂直に発射されます。ミサイルが鴨と衝突すると鴨が爆発します。ミサイルがどの鴨にも当たらず画面から出て行くとミサイルはなくなります。プレイヤーは一度に一個のミサイルを発射することができます。プレイヤーが発射するミサイルの数に制限はありませんが、実際のゲームではユーザの発射可能な数を制限するのが適切でしょう。

すべてのスプライトはラップします。これは韻をふんだ歌詞を速く歌うことではなく、もし鴨たちがスクリーンの端まで来たとき、彼らを画面の反対側から出てくることを意味します。

プレーヤーが全ての鴨を倒すとゲームは終わります。(通常鴨は10羽ですが、プログラマがそれを変更することは可能です。)

プロジェクトの開始

まず、REALbasic 3.xを起動して、新しいプロジェクトを作成してください(ファイルメニューから"New"選ぶ)。そして、プロジェクトのデフォルト・ウィンドウ Window1 を開いて、属性パレットに移動します:ここで幾つかのセッティングを変更します。

最初に、HasBackgroundColorチェックボックスをチェックして、BackColorが白(white)になっていることを確かめてください(もし、そうなっていなければ、色の付いた四角形をクリックして、現れたカラーピッカーで白を選んで下さい)。次に、ウィンドウのタイトルを"Shooting Gallery"に変更して、FullScreenオプションをチェックしてください。Window1の属性はこのようになっているはずです:

では、ツール・パレットから、Window1の上にスプライトサーフェイスspriteSurface()をドラッグします。貼り付ける場所はどこでも構いません。その位置やサイズはコードで設定しますので今は重要な事ではありません。

変更すべきspriteSurface1の設定の一つはFrameSpeed属性です:0ではなく、1あるいは2にセットされているのを確かめてください。(0はアニメーションの速度を可能な限り速くすることを意味しますが、それでは通常速すぎます。)

次は何でしょうか。インターフェースです。さて、我々は幾つかのメニューを付け足しますが、それはWindow1のインターフェースのためです。ゲームそれ自身は完全にスプライトサーフェイス全体を占有します!

メニューを追加する前に、まずここでプロジェクトを保存しましょう。プロジェクト・フォルダー内にそれを保存するようにして下さい:我々はこのゲーム用にグラフィックやサウンドを追加するつもりですが、それらは常にREALbasicのプロジェクトファイルに対して外部に存在しています。これはあなたがプロジェクトを開くたびに、REALbasicはそれらのグラフィックやサウンドのファイルを探すということを意味します:それらをプロジェクトファイルと同じフォルダにまとめておくのが最も簡単です。

プロジェクトのメニュー・オブジェクトを開いて、Apple Menuアイコンに行ってください。その下の余白のところで"RBU Shooting Galleryについて..."と入力してReturnキーを押してください。新しいアイテムを選択したまま、AppleAbout(短くてより使いやすい)に名前を変更してください。

次に、Fileメニューに2つの項目を加えます。"New Game"を追加して、そのCommandKey属性を"N"にします。そして次に区切りのラインを加えます。(区切りのラインを加えるためには、空白ののメニューをクリックして、そのテキストにハイフォン「-」を入力します。)最後に、項目をドラッグして、それらを再配置します:最初に、"New game"、次に区切りのライン、そして最後に終了メニューがくるようします。メニューは最終的にこのようになっているはずです:

我々はメニューをもう一つだけ加えなければなりません:まず"Options"というメニューを作成します。編集メニューの右の空白の長方形をクリックして、"Options"と入力しReturnキーを押します。その真下を選択し"Sound On"と入力しReturnキーを押してください。

これでインターフェイスは完了です! 次は、コードです。

我々が加える最初のコードはカスタム・クラスです。Fileメニューにいき、"New Class"を選んでください。プロジェクト・ウィンドウに現われるClass1オブジェクトを選択して、その名前をduckClassに変更してください。では、それを開いてください。

このクラスにいくつかの重要な属性を加えていきます。複数の鴨のインスタンスinstancesを作成することによって、我々は個々の特定の鴨の詳細(生きているかか、死んでいるか、爆発中かというような)を覚えておくことができます。

duckClassに次の属性を追加してください。(属性を追加するには、duckClassが開いていることを確かめて、次に、Editメニューに行き、追加しようとするそれぞれの変数について"New Property"を選択します):

次に、Window1に一連の属性を追加します。duckClassを閉じて、Window1を開いてください。Window1に以下の属性を追加します:

これらの属性は何を意味しているのでしょうか?それらの多くは名前から判ります、そして、幾つかに付いては順を追って説明します。しかし、ここでそれらの幾つかについて説明したいと思います。Directionには砲台の動く方向(右か左)を記憶しています。numberOfDucksではゲーム出てくる鴨の数の設定です。Scoreではプレイヤーのスコアを記録します(鴨に当たればプラス100点の得点、ミサイルを発射するごとに25点が引かれます)。MissleLaunchedはミサイルが発射されたかどうかを表わすブール変数(真または偽の変数)です、一方、ミサイルそれ自身はshotスプライトに記録されています。プレイヤーの砲台はshipSpriteに、また砲台のスピードはspeedに記憶されています。SoundOnはサウンドが有効になっているかどうかを記憶しています。最も重要な属性は、もちろん、duckSprite配列でしょう:そこには全ての鴨が格納されています。

コード化を始めるために、Window1Openイベントに行き、以下のものを入力しましょう:

   // spriteSurface のサイズの設定 
spriteSurface1.width = islandsunset.width
spriteSurface1.height = islandsunset.height

// spriteSurface をウィンドウの中央におく
spriteSurface1.left = (screen(0).width - spriteSurface1.width) \ 2
spriteSurface1.top = (screen(0).height - spriteSurface1.height) \ 2

// スプライトの生成
initSprites

私はコードの中にコメント(REALbasicは '//のあとに続くテキストを無視します)を書きましたので、我々がここで何を行っているかは明らかでしょう:我々はプログラムによってspriteSurface1のサイズ及び位置を設定しています(これはWindow1の上にドラッグしたときどこに置くかが重要でなかった理由です)。islandsunsetは背景の画像の名前です。

どのようにスプライトサーフェイスをウィンドウの中央に設定するかに注意してください:我々はWindow1FullScreenに設定しましたので、その大きさは我々のモニターと同じ大きさのはずです。我々はscreenオブジェクトを使って、モニターの高さや幅を取得します(コンピュータは複数のモニタを使うことができ、スクリーン0はメニューバーのあるモニタだと言うことを覚えておきましょう)、それから中心位置をちょっとした計算で求めます。

追記

中央揃えを計算する公式は簡単です(数学嫌いの私にとってさえ):長い方の幅から短い方の幅を引いて、その結果を2で割ります。例題です:1024のスクリーンから800のオブジェクトを引くと224です。224を2で割ると112になります。小さい方のオブジェクトの左側を112とすると、おのずと右側も112になり、これで中央揃えしたことになります。これと同じ方法を使用して、ダイアログボックスあるいは他のウィンドウも中央揃えをすることができまする。

次に、我々が数分前に作成したメニューを使用可能にしましょう。Window1のenableMenuItemsイベントに行き、次のものをで入力してください:

   // メニューの初期化 
AppleAbout.enabled = true
FileNewGame.enabled = true
OptionsSoundOn.enabled = true
OptionsSoundOn.checked = soundOn

ここでは我々は新しいことをしていることに気が付きましたか:我々はOptionsSoundOnメニューのchecked属性をブール変数soundOnに一致させています。それはsoundOntrueのときに、そこにチェックマークが入ることを意味しています。しかし、falseの場合には、チェックマークはつきません。

それらのメニューについて話をしている間に、メニューを処理するいくつかのハンドラを設定しましょう。Editメニューに行って、"New Menu Handler"を選び、出てきたダイアログのポップアップメニューから"AppleAbout"を選んでOkayをクリックします。追加されたAppleAbouthandlerに、次のコードを入力します:

   dim s as string 

s = "RBU Shooting Gallery 1.0" + chr(13)
s = s + "Copyright ゥ2001 by REALbasic University"
msgBox s

これは簡単なAbout Boxです。しかし、この小さなデモには十分です。今後のコラムでより気のきいたAbout Boxを取り扱うでしょう。

FileNewGameOptionsSoundOnのメニューハンドラを加えましょう。最初のハンドラにこのコードを入れてください。

   // ゲームの開始 
initGame
SpriteSurface1.Run

技術的に、これはゲームの中心となる部分です:我々はゲームの変数を初期化し、スプライトサーフェイスを起動します。スプライトサーフェイスはユーザがマウスをクリックするか(あるいはエンターやエスケープを押して)ゲームの終了させるか、全ての鴨が撃たれるまでずっと実行されます。しかし、実際には、ゲームをコントロールす殆どのコードは、ゲームの中のアニメーションの各フレームの更新を処理するspriteSurface1の中のNextFrameイベントに書かれています。それはゲームの真の心臓部分です。

さて、OptionsSoundOnに次を入力します:

   // サウンドの切り替え 
soundOn = not soundOn

なんて簡単なことでしょう!メニューのチェックされた状態をここでセットする必要はなく、単にブール変数soundOnを変更すればよいことに注目してください。私がRealBasicを始めた時は、これで少し混乱しました。私はここでは状態を単に変更しているだけで、もし私がそれを更新する前にユーザがメニューをプルダウンしたらどうなるのだろうかと心配しました。しかし、enableMenuItemsイベントにメニューのチェック状態を設定したことを思い出してください。enableMenuItemsの中の全てのコードが実行されるまでは、メニューは実際にはドロップダウンされてユーザの目に触れることはありませんので、ユーザは間違ったチェックの入ったメニューを見ることは決してないのです。これは以下のことを思えておく良い機会です:enableMenuItemsはユーザがメニューバーをクリックした時には、メニューがドロップダウンされるにいつでも呼ばれます。これはチェックマークや、メニューの変更、メニューアイテムのオン・オフをセットするのには理想の場所といえるでしょう。

これで今週は十分でしょう。我々のプログラムはこの時点ではまだ殆ど完成していませんが、来週それらを完成できるでしょう。それまでのために、あなたが必要とするグラフィックやサウンドと同様に、完成したプロジェクトファイルをお渡しすることにしました。そうすれば、現実にゲームをやってみることができ、コードを見ることができます。来週、コードについて説明しますので、あなたは何が起こっているのか正確に理解できるでしょう。

今週と来週の間に私の絵を描き直して下さっても結構です。ただし、同じくらいのサイズで、同じ名前を使用してください。

次週

我々はShooting Gallery を完成させます。

Letters

今週、数週間前に始めた非公式の"REALbasic Uses"の調査の一部として受取った手紙を含めようと決心しました。

最初に、参加してくれた人々に感謝したいと思います。私は考えの多様性だけでなく、これらの多くのプロジェクトの抱えている望みの大きさ、範囲に感嘆し、感動しました!RealBasic Universityはあなたの為にこれらのプロジェクトを作ることはないでしょう(そんなことをしてはあなたの全ての楽しみを損なうでしょう)、しかし私はこのコラムがどのようにすればそれができるのかを勉強する手助けになればと思います。(「空腹の人に魚を釣ることを教えれば、彼らは再び空腹になることはない」という古い諺を知っていますか?プログラミングも同じ事です。)

私は、これらのプロジェクト案が私を刺激したのと同様にあなたを発奮させることを望みます。私はまた今後のRBUのプロジェクトを計画するときにそれらを参考にするつもりです -- 私はこれらの特定のプロジェクトを作成しないでしょう、しかし、この種のプログラムを構築するのを支援する要素を組み込むつもりです。

我々の最初の手紙(順序通りではありません)はJulianさんからです:

あなたの質問に対して:

a. 簡単なゲーム、とくに言葉遊び。言葉の玉手箱、 文字の入替え(これらがすでにあるのは知っています)
b. 単語検索プログラム
c. データベース
d. トラファルガーの戦いでの出来事をしめすプログラム

いいですね、Julianさん:私は単語ゲームが好きですので、いつかRBUで一つ挑戦してみるかもしれません。

Jim Martin さんは次のように書いています:

私は有能な若い選手たちを指導するプロのテニスコーチです。私はしばしば彼らの試合を録画し、その後で分析します。私はスコアや、誰がサーブしたか、どこにそれぞれのボールが入ったか、サーブが得点になったか失点かを記録できるようなプログラムを作れればと思います。それから、私はそれを全て印刷し、改善の必要のあるショットの記録を保存しておきたいのです。私はあなたのコラムに感謝しています。そして、各レッスンを待ち望んでいます。良い仕事を続けてください。

面白い考えですね、Jimさん!私はそのようなものを書くのに十分なほどテニス好きではありません。しかし、それはそんなに複雑なものでもないように思えます。それは基本的にインターフェースとある種のデータベース(RB組込み、あるいはあなた自身のフォーマットのもの)が必要でしょう。

次は、Alexander Bennett さんは地球の反対側から手書きをくれました:

Marcさん、今日は。

RBUおよびいつものレッスンに伴った有用なコメントに感謝します。

あなたの調査に答えて -- 私はオーストラリアのクィーンズランドの小さな町で3人の医師が家庭医療を実施するために使用する医療記録や会計システムを作成したことがあります。医療産業で情報システムを用いて仕事をした人々は、この種のサイズのプログラムが重要だと認めるでしょう。

システムは4Dで書かれています。それは強力ですが特に風変わりで、ある種のインターフェイスを作る私の能力をいつも制約する独裁的なインターフェイスであると言わざるを得ません。ある種のコントロールの属性が(私にとって)理解できない理由で、私がそこにあると期待するところには実装されていません。4Dは本当のオブジェクト指向のプログラミングではなく、自分達の独自のプログラミングを奨励しています。それに加え、4D社およびその系列会社は私のような金のない、フルタイムではないプログラマーに対してはあまり親切な人々ではありません -- ほとんど助けにならないことがおおく、また小さなアップグレードでもとても高価です。

私の経歴はHyperCardで、80年代後半および90年代初めの頃には、個人の医療業務を経営するためのシステムを作ろうとして、多くの時間をそれで苦労しました。私がHyperCardが好きだったのはその構造の上品さと制約の無さ、そして容易に書くことのできるXCMDでプログラミングができることでした。 HyperCardが私の必要とするデータベースを継続できないこと、そしてアップルはもはやプログラムを開発する気は無いのだと判った時は実に悲しい日でした。

私はつい最近REALBasicを発見しました。私の4Dの経験とは対照的に、REALBasic社の人々は本当に優秀で、私の質問に答えて、また適切な方向に私を指導してくれました - 私はまだプログラムを購入していないのに! プログラムは使いやすく、そして相互援助の雰囲気がしみ込んでいるように思えます、それは4Dコミュニティーの私に対する冷たい事務的な仕打ちと対照的でした。

私の4Dシステムを改善するべきだったのですが、ここ28日間をREALBasicで遊んでしまいました。私が4Dで作ったインターフェースをREALBasicでエミュレートできるかを確かめるために幾つかのコントロールを色々と試してみました。REALBasicでグラフィックスを使用するこつを得るのに少々時間がかかりました。しかし、REALBasicには4Dよりもより多くのプログラミングの能力があり、コードが再利用のしやすいですね。

このため、私の計画は次の6ヶ月程度を私のフロントエンドをREALBasicに移行することに費やし、そして4Dのプラグインによって4Dサーバー(私は複数のユーザライセンス料を支払っています)を継続して使用することです。私はこのプロセスにおいて、あなたの見識が非常に有用であると思っています。私は特にキャンパスコントロールを加速する方法を勉強したいと思っています。また、Macと恐怖のPCの両方で上品さを保持するインターフェイスを作りたいと思っています。私はまたシステムをインターネット機能を拡張して、私と同僚が「エクスプローラー」と「アウトルックエキスプレス」を介してでは無く、そのインターフェイスで接続できればと思っています。

よい仕事を続けてください。

大きな挑戦のようですね、Alexanderさん!私はデータベースのエキスパートではありません。しかしREALbasicは確かにあなたが行っている事にとって有用で恐らく理想的でしょう。多数のデータベースサーバに接続できるだけでなく、さらにMac OS、MacOS Xおよびウィンドウズ用のプログラムさえもコンパイルすることができます。クライアント-サーバ技術を取り込んだ多くのプログラムがREALbasicで書かれています。ですから、私には、あなたのサーバと複数のクライアントを使って、インターネットを介してあなたのデータベースに接続するシステム書いているあなたが目に浮かびます。素晴らしいではないですか!

あなたのキャンパスコントロールへの言及は私にとっての時機を得た要求です:私はある時点でキャンパスクラスでカスタムコントロールを作るためのレッスンを行おうと思っています。それはREALbasicでできる最も強力なことのうちの一つです。それは少し上級的になりますが、それほど難しくはありません。

Tom Nugent, Jr. さんです:

今日は、私はあなたのRB-Universityを楽しんでいます。

私はRealBasicを何に使いたいかという質問に関して、2つのカテゴリーがあります。私はRBで行いたい馬鹿げたような大きな野心を持っていますので、それらは恐らくあなたのコラムには直接適用できないでしょう。しかしながら、そのなかにコラムで使うことのできる幾つかの有用なかけらもあるでしょう。

1)グラフィックス
a)イメージの継ぎ張り:私は多数の写真を取り込んで、個々の写真を変型させて継ぎ張りをするQuickStitchと呼ばれるプログラムを持っています。問題はそれがWindowsからの移植なので、Macではあまりうまく動かないということです。また、その会社はこのプログラムを止めてしまいました。私は複数のイメージを取り込んで、1つのより大きなイメージへそれらを組み合わせるためのアルゴリズムを少し学習しているところです。しかし、私はRBでの画素単位の画像操作に関して殆ど糸口を掴めていません。

b) データ取得:スキャンした画像データを取得する幾つかのプログラムがここにあります。そして、色んな点をクリックすることによって元の画像が何かが判ります。この既存のプログラムの問題はそれらのうちの幾つかは OS 8.6 あるいはそれ以降では動作せず、また他のものは私の必要な機能(画像を拡大、縮小して、クリックしながらあちこち移動させる機能、また画像毎に複数のラインを描くというような機能)を持っていないということです。それで、私はスクリーン上で画像をスクロールし、それをズームした時に画像の座標を変換するシステムを見い出さなければならなくなりそうです。

2)スケジューリング
私は競技イベントのスケジューリングすることに取り組んでいます。今まではエクセルでそれを取り扱ってきました。しかし、ユーザがイベントとその大きさを定義するか読込んで、その後、異なるラウンドとイベントの必要な時間を考慮して、種々のラウンド(すなわち、決勝、準決勝など)を種々のセッション(例えば、午後、夕方、一日目、2日目)にスケジュールできるプログラムがあればいいなと思っています。私は2段階のシステムを考えています。そこでは、先ず、すべてのものをどこで行われるかを粗くきめます、、その後で所要時間を考えてそれを調整します(すなわち、15時間のイベントを10時間の枠に当てはめるわけにはいきません)。そして、問題点はユーザに使いやすくすることですので、私は適当なGUIをそれに被せなければなりません。

イベント、ラウンド、および他の基準によってタイム枠をソートや検索できるようにしたいので、必要とされる違ったデータ構造とそれを取り扱う方法がこのプロジェクトでの重要な点の一つです。おそらく、あなたならば特別な少し複雑なデータ構造を定義し、それらを操作(ソート、選択し、検索など)するもっと扱いやすいプロジェクトをみつけることができるでしょう。

有難う!

有難う、Tomさん!それは凄い考えで、そして確かに野心的です。イメージの合成プログラムはREALbasicには少し高度すぎるかもしれません:RBは画素単位の操作にはあまり強くありません(遅いです)。幾人かの人はプログラムの構造やユーザインターフェースをREALbasicで作成して、特定のイメージ操作を早く扱うためにREALbasicのプラグインをC言語で書いています。このアプローチは研究する価値があるでしょう。

ある時点で、私はグラフィックスやスクローリングに関するレッスンをしたいと考えています:私は随分以前に書いた基本的なイメージビューワーのプロジェクトを持っています。私はまだ拡大、縮小のような機能をその中に付けていませんが、それは将来のRBUのコラムに適切かもしれません。

私はあなたのスケジューリング問題に個人的に興味があります:高校のとき、スピーチ及び討論競技に関係していました。私の学校がトーナメントの世話をしたに時に、私は全ての設備を組織し、調整することがどれくらい困難であるかということに驚かされたのを覚えています。それは文字通り数ヶ月間の立案を必要としました。教室の数は限られており、複数の競技のラウンド、1ダース以上の(それぞれ異なる要求及び所要時間の)競技種目、限られた人数の審判、そして、もちろん全ては週末の間に行われなければなりませんでした。他にも複雑なことがありました:例えば、私たちの学校の学生が競技しているラウンドを審判するのには私たちの学校の審判を使うことはできません。

私はその時コンピュータのスケジューリングプログラムこそ学校の必要としているものだと考えました。しかし、私はそのアイディアについて考えましたが、実際にはそれを書きませんでした。それから、学校はいまだに同じようなことをしているとすれば、そのようなプログラムの市場があるのではと時々考えていました。もし、まだ誰かが作っていなければ、そのような市場があると考えるべきでした。しかし、それは非常に複雑なソフトウェアだと思います。

(私の兄弟は病院用の高価なスケジューリングソフトを書く会社でかつて働いていました。そして彼は、限られた数の手術室や設備、医者を管理することがどれくらい難しいかを幾度も私に話したことがあります。それで私は全ての入替えを考えると頭が痛くなりました!)

そのような場合にはデータ構造が一番重要であるというあなたの考えは正解です:私はこれについて考えがあり、データ構造についてのコラムを計画しています。従って、私はあなたの考えを基礎として使用して、サンプルプログラムを構築するかもしれません。今後はっきりするでしょう。

John WalkerさんはデータベースやPDFドキュメントを含むプロジェクトについて書いています:

こんにちは、Marcさん、

私はデータベースをFileMaker Proにリンクして、PDFの指定されたページを開こうとしています。簡単にきこえるかもしれませんが、それは私には難問です。どのようなヒントでも歓迎します。

それは難しいことですよ、Johnさん。私はAppleScriptでPDFを開けるのでないかと考えましたが、AdobeのAcrobat Reader 4.0はあまりスクリプトに対応していません(私は最新のバージョン5.0については知りません)。おそらくOneClickのようなマクロプログラムが指定されたページにジャンプするために使用することができるかもしれません。しかしあなたが話しているものは、多重のコミュニケーションとスクリプト技術を含む複雑なものです。読者の皆さんの中でより良いアイデアをお持ちの方は是非教えてください。

Rick Johnson さんからです:

今日は、

私はあなたがどのようにRealBasicを使用するかについてのあなたの記事を楽しんでいます。私は[ある出版社の]イラストレーターで、私の殆どの仕事はModel Railroaderマガジンと2冊の年鑑、Great Model と Model railroad Plannning、に関するものです。私はこの雑誌のためのトラック図面(鉄道モデルのレイアウト)を描くために物体の縮尺を容易にするユーティリティを書きました。そこでは図面の縮尺と私が描きたいと思うオブジェクトのサイズをその実寸で、あるいは鉄道モデルのスケールで入力することができます。例えば、実際に3インチx4インチのモデルを置く必要があれば、私は単にそれらの大きさを入力してリターンを押します。私のプログラムは、作図に使うことのできるポイントおよびパイカに変換した大きさを与えてくれます。私がHOスケールで75フィートだと知っている方向転換台のようなものを描く必要がある場合には、ポップアップメニューからHOスケールを選択して、大きさを入力し、再度それを実際の大きさに変換し、それから私の図面の縮尺に合わせて大きさを調整します。

最も巧妙なところはdrag strip"と呼ぶキャンバス・コントロールを加えたことです。これにより、私は縮尺された画像をイラストレーターのウィンドウにドラッグすることが可能で、そこで絵を回転させたり色をつけたりします。

私はまた幾つかのシェアウェアプログラムを作りました。最も最近のものは電子メールあるいは他の電子ドキュメントかファイルからドラッグしてきたテキストのメモのを階層的なリストとして保存するするNotePodです。

私はまたAdobeイラストレーターのファイルと全ての埋め込まれたEPSファイルあるいはラスター・オブジェクトを解析し、それをフォトショップのTIFFファイルとして書き直すユーティリィティを書きました。

最後に、私は、多くはCodeWarriorのCで書かいたAdobeイラストレーターのプラグインである様々なシェアウェア・プログラムのための登録コードを生成するための小さなREALbasicのアプリを書きました。

もしあなたが興味があれば、私はそのスクリーンキャプチャを送ります。

非常に印象的ですね、Rickさん! あなたの画像の縮尺プログラムは、私のScanCalcに少し似ているようですが、あなたのプログラムは単なる縮尺器以上の機能があるようですね。"drag strip" は特に気がきいていますね!あなたが、それを共有することを気にしないのであれば、私はあなたがそれをどのように作ったのかに興味があります。

私には最初あなたのNotePod は私のZ-Writeのように思えました。しかし、ポップ・アップする備忘録、テキストクリッピングおよび実行リストとしては明らかにより優れたものです。それは大変印象的です。私はそれダウンロードしました、そしてさっそくチェックしてみます!

最後は(最後ですが決してできが悪い訳ではありません)Edzard van Santen さんからのものです:

Marcさん、あなたのRBUに感謝します。私は急いでRBを学んでいます。過去のプログラミングの経験は、ラベルを印刷するためにベーシックを使用し、ビルゲイツのアプリケーションでマクロをもてあそび、Filemakerのスクリプトを書いたぐらいです。

私のこの努力の最終的なゴールは(a)私の仕事ためのデータベースとして機能し、(b)私の考え(有ったとしても2つか3つ)やメモをまとめるための簡単なPIMを書くことです。私は長年の間色んなソフトウェアを使ってきました。しかし、遭遇した今までのものに満足はしていません。多くのソフトウェアは私がするように考えてはくれません。私はプレゼンテーションや原稿を書くのにZ-Writeを使っていましたし、それを使うことを楽しんでいます。再度、RBUに感謝します。私は今後のコラムにも期待しています。

すべてEALbasicの優れた使い方ですね!私は驚き、そして感動しています。このリストは人々がREALbasicのような能力(我々のための真のプログラミング)を望み、そして必要としているということを示しています。

CとCodewarriorの学習は、カスタマイズされた解決策を見い出す能力だけを望むほとんどのユーザのためにとっては余りにも複雑です。しかし、AppleScriptおよび他の言語は十分なほどに強力ではありません。REALbasicはその中間の完全な解決策です。

プログラムを続けましょう!


RBU-Jの通知サービス!コラムが発表されるたびに日本語版REALbasic Universityのお知らせの emailがあなたに届きます。登録・削除は ここ から。

INDEXに戻る