Comments
Description
Transcript
PDFファイル
はじめに 15 年以上も前「パソコン」がまだ「マイコン」とも呼ばれていたころ、 「パソコン」がアプリケー ションマシンに成り下がるずっと前、パソコンは、自分だけの「箱庭」だったように思う。ただい じくりまわすだけで、時間を忘れ、妙に興奮した時期が、だれしも一度はあったのではないだろ うか. .. さて、本書のテーマは「i モード Java 対応携帯端末」である。2,200 万台を越える実稼働台数を 誇り、非常に幅広い年齢構成のユーザーに支持され、1人あたり平均 7.6 通/日のメール送受信 と1人あたり 10.8 ページ/日の Web ページのブラウジングが行われている i モードのプラット フォーム(注:数字は、ともに 2000 年 11 月のデータによる)に、ついに Java が搭載された。Palm、 Pocket PC などの情報携帯端末も、ここ数年急速に普及してきたが、i モード携帯端末に Java が 載ったことで、常に持ち歩く Wallet(財布)型 PC の理想に向けて、ドコモの i モード端末が抜き に出たことは間違いないと言えるだろう。 しかも、2,200 万台のプラットフォームはビジネスとしては非常に魅力的だ。すでに現 i モード でも、インターネットではまだ成立しにくい「コンテンツビジネス」が成立しはじめている点も 見逃せない。しかし最も魅力的なのは、常に持ち歩くこんなちっぽけな携帯電話で、自分だけの 「箱庭」が実現できることだろう。Java 対応の携帯が発売されると聞いたときに思ったのは、これ でおもしろいことができそうだという妙な興奮と、いわゆる“おもちゃ”として遊べそうという、 パソコンの黎明期を思い出させるデジャヴ的な感覚だった。 本書はそういった観点で作られている。まずは、i モード Java で何ができるのかを知ってもら うために、さまざま分野のプログラマの方々に、いろいろなタイプのプログラムを作成してもらっ た。i モード Java は、圧縮された実行ファイル形式で 10K バイトまでという制限があり、また仕 様上できることも限られている。しかし逆に、コンパクトでやれることが限られているが故に、 プログラムのアイデアや創意工夫が重要になってくる“やる気をかき立てる”仕様であるとも言 えるだろう。 また、短期間でプログラムが作成できることも大きい。もちろん Java プログラミングに関する 基本的な知識は必要になるが、ちょっとしたプログラムを作って遊ぶには、その敷居は比較的低 い。Java のプログラムをこれから学んでいこうとする人にとっても、そのとっかかりとして格好 の題材と言えるだろう。 本書に掲載されたプログラムは完成度の高いものばかりとは言えないが、読者のみなさんのプ ログラミングの素材やアイデアとして活かしていただければ幸いである。なお、続編として、Web サーバーとの連携を中心とする「ネットワーク・アプリケーション編」も進行中である。こちらも ご期待いただきたい。 2000 年4月 アスキー書籍編集部 3 本書の構成 本書は、2001 年3月に刊行した「i モード Java プログラミング ―スタンドアロン・アプリケー ション編」の改訂版として、P503i/F503i/N503i/So503i/D503i の主要5機種への対応とサンプル プログラムの拡充を行ったものです。 本書の読者対象としては、Java のプログラミング経験があることを前提にしていますが、Part1、 Part2 ではできるだけ平易な解説となるように心がけています。Part3 に掲載されたプログラム は、作者によりその書き方や考え方が異なっていますが、バラエティに富んだソースを見てもら うことを優先し、特に書式等は統一されていません。 付属 CD-ROM には、各開発会社のご厚意により、i アプリのプログラム開発環境を添付してい ます。各プログラムは、それぞれバージョンアップがされていきますので、次ページおよび本文 を参照して、該当の Web ページより最新の開発環境を入手されることをお薦めいたします。 また、i アプリの開発にあたっては、下記のソフトウェアを該当の Web ページからダウンロー ドすることが必要ですのでご注意ください(詳細は、Part1 の第2章、第3章を参照) 。 ● 付属 CD-ROM に収録された「i-JADE Lite」 、および「JBuilder」を利用して i アプリの開発を 行う場合は、別途、J2ME/CLDC をサンの Web ページよりダウンロードする(4.77MB) ● ドコモの「J2ME Wireless SDK for the DoJa」を利用して i アプリの開発を行う場合は、ドコ モの Web ページよりダウンロードする(2.48MB) さらに、実際にプログラムを作成したのち、 「i モード Java 対応携帯端末」で実行するためには、 Web サーバーへのアップロードが必要となります。ISP などにホームページのスペースをお持ち でない方は、実機でプログラムを実行することはできませんのでご注意ください。 本書では HTML による Web ページの作成方法や FTP などによるサーバーへのアップロード の方法など、インターネット関連の詳細には触れていませんので、必要な方は別途該当する書籍 をご覧になってください。 なお、i モード Java 拡張 API の詳細に関しては、本書の姉妹書として「i モード Java プログラ ミング ―拡張 API リファレンス編」も刊行されていますので、そちらも合わせてご覧ください。 ■ Part1 i モード Java プログラミング環境 まず、i モード Java の位置づけを明確にし、i モード Java の全体像とその構成、i モード Java で実現できるアプリケーションなどをまとめています。そして、具体的に付属 CD-ROM により i アプリの開発環境を整え、実際に i アプリを開発していく手順を、図版を交えながらていねいに 解説していきます。 また、NTT ドコモの公式 i アプリ開発環境(DoJa)による開発手順も紹介しています。 4 本書の構成 ■ Part2 i モード Java プログラミングガイド これから i アプリのプログラミングを始める初級者の方を対象に、典型的な i アプリの雛形をも とに、i アプリプログラミングの基本的な構造と記述を段階を追いながら紹介していきます。 ■ Part3 「使える」「遊べる」プログラム集 具体的なサンプルプログラム事例を掲載しています。サンプルプログラムは、ゲームや実用も の、パーティ用、癒し系、音楽関連、ユーティリティ、プログラミング言語などバラエティに富 むジャンルの事例を用意しました。 ちょっとしたアイデアだけの“一発芸”的なプログラムや非常にシンプルなプログラムも含まれ ていますが、これも i アプリならではと言えるでしょう。また、i アプリの最大サイズである 10K バイトぎりぎりまで使った本格的な i アプリも掲載しています。 サンプルプログラムには、プログラミングの素材として、また Java プログラミングの学習の題 材として活用してもらえるよう、できるだけ多くのコメントを付けていますので、本文の解説と 合わせてお読みください。 なおプログラムは、一部を除き前述の主要5機種に対応しています。ただし、実機では動作し ても、付属 CD-ROM のエミュレータではきちんと動作しない場合がありますので、あらかじめ ご了承ください。また、一部のプログラムでは機種によってパフォーマンスに問題が生じる場合 や、動作が不安定になる場合があります。 ■ Appendix 付属 CD-ROM の内容と各アプリケーションの簡単なインストール方法などを紹介しています。 付属 CD-ROM をお使いの前に、まずこちらをご覧ください。 ■ 付属 CD-ROM について 付属 CD-ROM には、下記に示す i アプリの開発に必要な開発環境(対応 OS:Windows2000/ NT/98)と、本書で紹介したすべてのサンプルプログラムのソースコード、実行形式のファイルな どが含まれています。 ■ i-JADE Lite for P503i & F503i & N503i(503i エミュレータ+i モード拡張ライブラリ) 株式会社ゼンテック・テクノロジー・ジャパン http://www.zentek.com/jp/ Copyright (C) 2001 Zentek Technology Japan,Co.,Ltd. ■ All Rights Reserved. JBuilder 4 Foundation(Java 統合開発環境) ボーランド株式会社 http://www.borland.co.jp/ Copyright (c) 2000, Borland Software Corporation, All rights reserved. ■ GADeK(i アプリ開発支援ツール) ギガフロップス株式会社 http://g-appli.net/ Copyright (c) 2001 GiGAFLOPS Japan Inc. All Rights reserved. 5 本書の構成 ■ 掲載プログラムについて Part3 に掲載した i アプリのサンプルプログラムは、 http://www.ascii.co.jp/i/の「ASCII CONTENTS」−「i アプリ」 よりダウンロードしてすぐにお楽しみいただけます。また、最新版へのアップデートもこちらよ り行えます。 本書の内容は、株式会社 NTT ドコモが公開している情報、およびインターネットの各種 Web サイトでの情 報などをもとに、株式会社アスキーが独自に編集/制作を行ったものです。株式会社 NTT ドコモは、本書の 内容には関知しておりませんので、内容に関してのお問い合わせはご遠慮ください。 プログラムの著作権は、各プログラムの開発者に帰属します。本書に掲載したプログラムの使用にあたって は、利用方法や留意点などをよくお読みの上、ご自身の責任でご利用いただきますようお願いいたします。プ ログラムを使用した結果生じた損害については、株式会社アスキーおよび開発者はいっさい保証できません。 6 目次 はじめに ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・3 本書の構成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・4 Part 1 第1章 i モード Java プログラミング環境 i モードと Java 13 1.1 i モード Java の意義 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 13 1.2 Java、J2ME と KVM ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 14 1.3 CLDC と i モード Java 拡張 API ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 16 1.4 i アプリの実行手順 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 19 1.5 i アプリで実現できるアプリケーション ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 20 第2章 i アプリの開発環境 22 2.1 まずは環境を整える ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 22 2.2 i アプリエミュレータ ―i-JADE ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 23 2.3 統合開発環境 ―JBuilder4 Foundation ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 28 2.4 ドコモ開発環境 ―J2ME Wireless SDK for the DoJa ・・・・・・・・・・・・・・・・・・・・・・・・・ 29 2.5 i アプリの開発に必要なドキュメント ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 31 第3章 i アプリの開発手順 32 3.1 開発環境のインストール ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 33 3.2 プロジェクトの作成から i アプリの実行まで ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 34 3.2.1 プロジェクトの新規作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 34 3.2.2 コードの入力とコンパイル ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 36 3.2.3 エミュレータでの実行 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 38 3.3 プログラムの公開と携帯端末へのインストール ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 40 3.3.1 コンパイルとプリベリファイ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 41 3.3.2 jar アーカイブファイルの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 44 3.3.3 ADF ファイルの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 46 3.3.4 Web サーバーへの登録 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 48 7 目次 3.4 DoJa SDK による i アプリの開発 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 53 3.4.1 「DoJa SDK」 vs 「JBuilder+i-JADE」・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 53 3.4.2 新規プロジェクトの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 54 3.4.3 KToolBar の開発支援機能 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 56 i モード Java プログラミングガイド Part 2 1. i アプリの基本構造 ―キャンバス型とパネル型 61 2. キャンバス型 i アプリの基本構造 62 2.1 最小のキャンバス型 i アプリ(その1)・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・62 2.2 最小のキャンバス型 i アプリ(その 2)・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・65 3. パネル型 i アプリの基本構造 69 3.1 最小のパネル型 i アプリ(その1)・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・69 3.2 最小のパネル型 i アプリ(その2)・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・73 Part 3 月面着陸 lunalander.jar アイアプリ 日付計算 「使える」 「遊べる」プログラム集 eyemov.jar diffdate.jar 79 ゲーム 87 癒し系 95 実用 スロットマシン Slotm.jar ゲーム 106 時限爆弾ゲーム bomb.jar パーティ 112 伴奏電話 keychord.jar Get’n Crash crash.jar スケジューラ 地雷除去 cal.jar バイオリズム 8 144 実用 bio.jar 癒し系 実用 160 ゲーム imitation.jar 3D Cube cube.jar 125 ゲーム minesweeper.jar 電話番号相性占い 117 ミュージック 占い 169 181 189 目次 12 星座神経衰弱 breakdown.jar String Tuner strtuner.jar マンデル mandel.jar 215 癒し系 warikan.jar 233 実用 ゲーム 逆ポーランド式電卓 rpncalc.jar level.jar 221 ゲーム スネーク snake.jar 山崩し 209 ミュージック Speed Panel speedpanel.jar わりかん計算 198 ゲーム 240 254 実用 262 ゲーム 人相覚書 ninso.jar 272 パーティ トレック trek.jar ゲーム 278 サイコロ dice.jar ゲーム 302 相性診断ゲーム affinity.jar 308 占い ペジェヘルツ スタンドアロン版 メトロノーム metronome.jar ダブルアップ double.jar Pejie-nonet.jar ミュージック M叩き 月齢 mtataki.jar moonage.jar ムージグ moozig.jar 麻雀点数計算 文字列バウンド アステロイド 338 363 368 374 ゲーム 380 癒し系 385 ゲーム 400 実用 405 ゲーム boundstr.jar 氷塔 TheIceTower ゲーム 実用 mjscore.jar ポーカー poker.jar 315 348 ゲーム 数字速押しゲーム HitNumber.jar 単位変換 unit.jar 癒し系 icetower.jar asteroid.jar 423 癒し系 ゲーム ゲーム 427 444 9 目次 ライフゲーム life.jar 451 癒し系 BLOCK BREAKERS Blockbrk.jar あみだくじ amida.jar 基礎体温表 kiso.jar あいのめもりぃ タイマー システム情報表示 494 実用 iBench ibench.jar iBASIC iBASIC.jar 506 516 SysInfo.jar ユーティリティ ユーティリティ iAppDiag iappdiag.jar APPENDIX ゲーム 実用 apiscan apiscan.jar 460 485 パーティ number.jar itimer.jar ゲーム ユーティリティ ユーティリティ プログラミング言語 523 527 532 544 556 593 A.1 付属 CD-ROM の内容 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・593 A.2 アプリケーションのインストール方法 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・594 A.3 サンプルプログラムについて ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・595 あとがきにかえて ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・596 プログラム大募集 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・599 10 1章 i モードと Java 1.1 i モード Java の意義 i モードと言えば、ご存じのように 1999 年 2 月 22 日に NTT ドコモがサービスを開始して以来、 2年間を経過した 2001 年 4 月 15 日現在の契約者数が 2,241 万人を超える、20 世紀末を飾った大ヒッ トサービスです(最新の契約者数などの情報は、http://www.nttdocomo.co.jp/i/contract.html で公表されている)。 この i モード携帯端末は、最初の機種である「F501i HYPER」の発売からこれまでに、表示画面 のカラー化や、着信音も 3 和音程度から 16 和音 256 音色のように、MIDI 音源として利用可能な レベルに向上するなど、ハードウェア仕様の面で、重要な強化が行われてきました。 とはいえ、これらは端末性能およびサービスの向上という、いわばマイナーなバージョンアッ プであり、 「携帯電話機」+「Web ブラウザ」という従来の i モード携帯端末のコンセプトに変化 を与えるような革新ではなかったと言えるでしょう。具体的に言うならば従来型の i モード端末 では、通信機能やカラー画面、サウンド機能など、旧世代のパソコンに匹敵する性能を備えつつ あるにも関わらず、内蔵された CPU やメモリを、ユーザーがコンピュータとして自由に利用する ことはできませんでした。 この従来型端末上では、内蔵された Web ブラウザにより、サーバーとの間でほとんど「生」の データをやりとりし、 「そのまま」表示していたに過ぎません。たとえばユーザーの入力した文字 やボタン操作といった情報は、サーバーに送られるだけであり、この情報を端末自身が「解釈」し たり、あるいは逆にサーバーから送られた情報をもとにして、ユーザーの指示を待たずに自律的 な動作を行うことはありません。 しかし、Sun Microsystems 社が生み出した Java と出会うことで、i モード端末は大きな転機を 迎えることになりました。この進化は、i モードサービスの開始から間もない 1999 年 3 月 16 日 に、NTT ドコモと米サン・マイクロシステムズが i モード対応端末への Java 技術導入に向けて技 術協力を進めることで合意したと発表した時点に始まっていたのです。 実際に 2001 年 1 月 18 日に発表された 503i シリーズから始まる新たな i モード端末は、Java と いう「プログラミング言語の実行環境」を搭載することで、次世代携帯端末へと続く重要な足掛か 13 Part 1 i モード Java プログラミング環境 りを得たと言えるでしょう。なぜなら Java を搭載した i モード端末は、そのメモリ内に Java ア プリケーションをダウンロードすることで、「電話」とも「通信」とも関わりのないプログラムを 実行可能な「携帯型コンピュータ」になるからです。 これにより(実際には携帯端末の演算性能のさらなる向上を待つことになりますが) 、常に持ち 歩く携帯ならではの特性を活用する、まったく新しいパーソナルアプリケーションやビジネスア プリケーションが発売される可能性が生まれました。i モード携帯端末はすでに、Web ブラウザ とインターネットメール(e-mail)の機能を備えていますが、さらにユーザーのニーズによって入 れ替え可能なアプリケーションの実行機能が加わったいま、PC や PDA と、携帯電話端末との間 にある境界線は、限りなく薄れていくことでしょう。 一方、端末の進化と同時に、公式/非公式を併せてすでに 35,000 以上を数えるサービス&コン テンツプロバイダによって、さまざまなサービスが追加された結果、i モードを利用するユーザー の年齢層や利用方法も多様化してきました。 2001 年 4 月 8 日時点では、 「i アプリ」に対応した 503i シリーズの端末から、i モードサービス に接続して利用可能な i アプリメニューは、以下に掲げた 11 ジャンル 63 項目が用意されていま す(ジャンル名に続く数字は、各メニューの項目数。このうち、ゲーム、通信型ゲーム、および占 いの 3 ジャンルは、 「ゲーム/占い」サブメニューにまとめられている)。ユーザーはこれらのな かから、さまざまな i アプリをダウンロードしてすぐに利用できます(有料のコンテンツもある) 。 また、i モードと同様に i アプリについても仕様が公開されたため、一般サイトからも続々とアプ リケーションが登場しつつあります。 天気(2) 銀行/証券(5) 交通/地図(3) 着信メロディ/カラオケ(6) 画像/時計(7) ゲーム(15) 通信型ゲーム(7) 占い(4) エンターテイメント(1) 懸賞/くじ/競馬(2) バラエティ/メール(8) 1.2 Java、J2ME と KVM 今日、Java に注目が集まる大きな要因の1つは、多種多様なアーキテクチャを持ったコンピュー タや携帯端末などが、インターネットによって、さまざまなサーバーに接続可能な環境が構築さ れた点にあります。以降では、i モードに搭載された Java について、簡単にまとめておくことに しましょう。 広い意味で使われた場合、 「Java」という言葉は、さまざまなハードウェアやオペレーティング システム上で動作する、仮想マシン(Virtual Machine。VM と略称)というソフトウェア上でプ ログラムを実行することにより、現実のコンピュータ間に存在する、CPU 仕様などの差異を吸収 し、互換性、汎用性を高めたソフトウェア環境を指しています。 より限定的に言う場合、Java という名称は、現在主流の開発用言語である C++をベースとし て、Sun Microsystems 社が開発した、オブジェクト指向型のプログラム言語を意味します。 14 2章 i アプリの開発環境 i モードの成功は、パケット課金システムとユーザーからサービス料金を徴収するシステムをど ちらも早期に実現できたことが大きく影響しているでしょう。しかし、一般サイト(いわゆる勝 手サイト)の存在がなければ、こうまでも急速に普及することはなかったはずです。誰もが i モー ドサイトを作れたからこそ、サービス開始からわずか 2 年足らずで 2,200 万人にも上るユーザー を獲得できたといえます。 i アプリにしても、公式サイトからダウンロードして利用するだけならば、魅力的には感じられ なかったことでしょう。本書の付属 CD-ROM に納められている開発環境を Windows にインス トールするだけで、誰もが i アプリを開発可能です。この開発環境はトライアル版ではないので、 無制限にすべての機能を利用できます。思う存分使いこなして、i アプリの開発に役立ててくだ さい。 i アプリの世界はまだスタートしたばかりで、アプリケーションが充実しているとは言えませ んが、我々プログラマにはむしろ一番楽しい時期かもしれません。何もない状況で不便なときこ そ、創作意欲が湧くというものです。それに、もしかしたら思わぬビジネスチャンスが転がって いるかもしれません。このチャンスを逃さぬよう、さっそく始めることにしましょう。 2.1 まずは環境を整える i アプリの開発を行うには、以下に示す環境が必要になります。なお、本書付属 CD-ROM には、 下記の「i-JADE Lite」と「JBuilder4 Foundation」を収録していますが、2001 年3月下旬に NTT ドコモから公式の開発環境として「J2ME Wireless SDK for the DoJa」が公開されました。DoJa に関しては、2.4 節を参照してください。 ● i モード Java 対応携帯電話(NTT ドコモ 503i シリーズ) ● Windows マシン ● ゼンテック・テクノロジー社「i-JADE Lite」 (本書 CD-ROM に収録) ● ボーランド社「JBuilder4 Foundation」 (本書 CD-ROM に収録) ● J2ME/CLDC(Sun Microsystems 社の Web ページよりダウンロードが必要) ● Web サーバー 22 第 2 章 i アプリの開発環境 表 2-1 「i-JADE Lite」+「JBuilder4 Foundation」における動作環境 環境 スペック CPU Pentium プロセッサ 300MHz 以上または相当品以上の互換プロセッサ(推奨) メモリ 128MB 以上(256MB 以上を推奨) ディスク 170MB 以上の空き容量 グラフィックス SVGA 以上のカラーモニタ OS Windows2000 または NT4.0 (推奨)、Windows98 Java Java2 SDK Standard Edition Version 1.3 (JDK1.3) (必須) i モード Java 対応携帯電話については言うまでもありませんが、さらに開発用に Windows マ シンも必要となります。推奨動作環境は表 2-1 に示すとおり、現在の PC ならば特に問題なくク リアできるレベルでしょう。また、本書では解説していませんが、Sun Microsystems 社からリ リースされている JDK 1.3 が動作する OS ならば、たとえば Linux などでも開発は可能です。 「i-JADE Lite」 (以後 i-JADE と略す)と「JBuilder4 Foundation」 (以後 JBuilder4 と略す)は i アプリ開発に使用する開発ツールです。i-JADE は Windows 上で i アプリを動作させるためのエ ミュレータです。i-JADE を利用すれば、毎回携帯電話にダウンロードすることなく、Windows 上で i アプリの動作チェックが可能になります。JBuilder4 は JDK1.3 やデバッガなどを含む、本 格的な Java 統合開発環境です。以降で紹介するこの 2 つのツールを組み合わせることで、i アプ リ開発にまつわるほとんどすべての作業をまかなうことができます。なお、最終的に携帯電話で 実行可能なファイルを作成するには、別途「J2ME/CLDC」が必要です(詳しくは、3章を参照) 。 また、i アプリで GIF 画像や MIDI などのデータを利用する場合には、ペイントツールや MIDI シーケンサなどが必要になるので、この場合は好みのツールを別途用意してください。MIDI ファ イルを使う場合は、MIDI ファイルから i メロディ形式のファイルに変換する必要があります。こ のツールは、オンラインソフトとしていろいろなソフトが流通していますので、必要に応じてこ ちらも入手してください(詳細は、Part3 のサンプルプログラムの解説をご覧ください)。 最後に、i アプリを携帯電話にダウンロードするために Web サーバーが必要となります。ISP などが提供する、ホームページサービスを利用すればよいでしょう。Web サーバーには特別な設 定は不要です(MIME の設定も不要) 。i アプリは 1 本たかだか 10K バイトですから、ほんのわず かなスペースが利用できれば十分です。 2.2 i アプリエミュレータ ―i-JADE Windows アプリケーションは Windows 上でしか動作しませんし、i アプリは i モード Java 対 応携帯電話でしか動作しません。しかし、Windows 上で開発しながら、i アプリの動作チェック をするたびに携帯電話へダウンロードしなければならないのでは、あまりに手間がかかりすぎて しまいます。そこで登場したのがゼンテック・テクノロジー社の i-JADE です。i-JADE を利用す れば、あたかも携帯電話で実行しているかのように、Windows 上で i アプリを実行することがで 23 3章 i アプリの開発手順 i アプリの開発の流れは、図 3-1 に示すとおりです。本章では開発環境のセットアップから、プ ログラムのコンパイル、携帯電話機へのインストールまで、一通りの開発手順を簡単なサンプル プログラムを交えて解説していきます(なお DoJa による開発手順は 3.4 節を参照) 。 JBuilder Windows上での作業 プロジェクトの作成 コードの入力 ビルド i-JADE テスト実行 デバッグ デバッグ完了 コマンドライン コンパイル (携帯電話へのインストール用) ベリファイ コマンドライン アーカイブファイルの作成 ADFファイルの作成 ダウンロード用HTMLの作成 Webサーバーへのアップロード 携帯電話機へのダウンロード iモードJava対応 携帯電話機での作業 iアプリを実行! 図 3-1 i アプリ開発の流れ 32 第 3 章 i アプリの開発手順 3.1 開発環境のインストール 前章で解説したように、i アプリを開発するには本書付属 CD-ROM に収録されている「i-JADE Lite」と「JBuilder4 Foundation」を、まずインストールする必要があります(付属 CD-ROM のディ レクトリ構成とインストール方法は、APPENDIX を参照) 。 インストール先のフォルダは、 「c:YProgram FilesYi-jade」のようにスペースを含むパスは避け た方が無難です。ほとんどの場合問題はありませんが、一部のアプリケーションやコマンドライ ンで作業するときには、正常にパスを認識できない場合があります。以降では、インストール時 のデフォルトのディレクトリである「c:Yi-jade」 、 「c:YJBuilder4」にそれぞれアプリケーションを インストールした場合を例に解説していきます。 両者のインストールが終了したら、次に JBuilder4 へ i-JADE を組み込みます。なお、JBuilder4 は初回起動時にライセンスキーの入力を求めてくるので、あらかじめ入手しておいたライセンス キーを入力します(図 3-2) 。 JBuilderをインストールする前に、 http://www.borland.co.jp/jbuilder/foundation/webreg/ でユーザー登録を行う。「インストール番号」と 「ライセンス番号」はメールで送られてくる 図 3-2 ライセンスキーの入力 JBuilder4 が起動したら、以下の手順で i-JADE を組み込みます。 1 メニューの[ツール]−[ライブラリ設定]を実行する 2 [新規]ボタンをクリックして、新規ライブラリウィザードを起動する 3 [名前]に「P503i」を指定し、 [追加」ボタンをクリックして i-JADE のインストールディレ クトリにある「i-jade-p.jar」をライブラリに加える 4 再度新規ライブラリウィザードを起動し、F503i、N503i についても同様の作業を行う(それ ぞれ名前に「F503i」 「N503i」を、ライブラリに「i-jade-f.jar」 「i-jade-n.jar」を指定する) 33 第 3 章 i アプリの開発手順 3.4 DoJa SDK による i アプリの開発 ここまで「JBuilder+i-JADE」の環境で i アプリを開発する手順について解説してきましたが、 i アプリにはもう 1 つ、NTT ドコモが提供する純正 i アプリ開発環境である J2ME Wireless SDK for the DoJa(以後 DoJa SDK と略す)があります。ここでは、DoJa SDK を使って i アプリを開 発する手順について解説します。 DoJa SDK には i アプリ開発に最低限必要なツール(コンパイラ、エミュレータ等)がすべて含ま れているため、このパッケージを入手すれば、即 i アプリの開発を始めることができます。2001 年 4月上旬現在、DoJa SDK は NTT ドコモのサイト(http://www.nttdocomo.co.jp/i/java.html) からダウンロードすることができます(本書 CD-ROM には収録されていません)。 3.4.1 「DoJa SDK」 vs 「JBuilder+i-JADE」 DoJa SDK は KToolBar と呼ばれる開発環境とエミュレータ、それにコンパイラやプリベリファ イといったツールで構成されています。つまり、前述した「JBuilder」+「i-JADE」+「J2ME CLDC」 とほぼ同等の開発環境が DoJa SDK だけでそろうことになります。ただし、細かい機能にまで目 を向けると、それぞれに一長一短あることがわかります。そこで、両者を簡単に比較してみましょ う(表 3-4) 。 表 3-4 「DoJa SDK」と「JBuilder+i-JADE」の機能比較 機能 セットアップの簡便さ DoJa SDK JBuilder+i-JADE ○ △ 開発環境の機能 △ ○ デバッガ × ○ エミュレータの機能 △ ○ インストールパッケージの作成 ○ × 本格的に i アプリ開発を行うならば、優れた統合開発環境を備える JBuilder がお薦めです。特に デバッガの存在を考えれば、選択の余地はないと言ってもよいでしょう。また補完入力機能(例: オブジェクト名を入力すると、自動的にメソッド名一覧が表示される)を備える強力なテキスト エディタを内蔵する点でも DoJa SDK に勝ります。 DoJa SDK でも、Sun Microsystems 社の Java 開発環境である「Forte for Java」を組み合わせ れば、統合開発環境が利用可能になりますが、 「Forte for Java」のデバッガ機能を利用することは できません。また、各機種ごとに個別にエミュレータが用意される i-JADE に比べて、DoJa SDK のエミュレータは汎用的なもので、画面サイズやフォントなど機種依存仕様を再現することもで きません(逆に i-JADE Lite では、DoJa では表示できる i モードグラフィック文字は表示できな い) 。本格派のプログラマにとっては、 「JBuilder+i-JADE」が i アプリ開発のスタンダードと言っ てよいでしょう。 53 Part 1 i モード Java プログラミング環境 ただし、手軽に i アプリ開発を始めてみたいというのであれば、DoJa SDK がお薦めです。もと もと i アプリ専用開発環境であるため、ダウンロードしたインストーラを実行するだけでセット アップが終了し、ボタンを1つクリックするだけでインストールパッケージの作成が可能です。 一方 JBuilder は一般的な Java アプリケーション開発環境ですから、i アプリ固有の作業は苦手 です。Windows 上でのエミュレータを使った動作検証など、通常の開発作業に不都合はありませ んが、いざ携帯電話へインストールするためのパッケージ作成となると、手作業にならざるをえ ません。本章に掲載しているインストールパッケージ作成スクリプトを使えば半自動的に処理で きますが、コマンドラインでの作業となるため、GUI に慣れたユーザーにはあまりお勧めできま せん。GUI で行う場合でも、コラムで紹介している GADeK などの別のツールを組み合わせるか、 市販パッケージの「i-JADE Lite Plus」を使用することになります。 このように両者ともに一長一短あるので、Windows 上での開発は「JBuilder+i-JADE」で行い、 i アプリが完成してインストールパッケージを作成する際には、DoJa SDK を使うというように使 い分けてもよいでしょう。 3.4.2 新規プロジェクトの作成 DoJa SDK を使って i アプリを開発するには、DoJa SDK に含まれる KToolBar を利用します (図 3-12) 。 既存のプロジェクトを開く プロジェクト を作成する ソースファイルをコンパイルし、 jarアーカイブファイルを生成する ADFファイルの編集を行う エミュレータの 外観を変更する エミュレータを起動し、 iアプリを実行する 図 3-12 KToolBar の起動画面とエミュレータの実行画面 54 1. i アプリの基本構造 ―キャンバス型とパネル型 これから i アプリのプログラミングを始めようという読者には、本書に掲載された数々のサン プルプログラムがおおいに参考になることでしょう。ただし、Part3 で紹介するサンプルプログ ラムは完成された i アプリであるため、さまざまな用途に応用が利く、バラエティに富んだコー ドが織り込まれている反面、初心者が i アプリのエッセンスを抜き出して学ぶには複雑すぎると ころがあるでしょう。そこで、Part2 ではごく簡単なサンプルプログラムをもとに、i アプリの基 本的な構造を解説します。ここで示したサンプルプログラムをベースに、オリジナルの i アプリ を作ってみてください。 1. i アプリの基本構造 ―キャンバス型とパネル型 i アプリを基本的な内部構造を基準に大きく分けると、キャンバス型とパネル型に分類するこ とができます(図1) 。キャンバス型とパネル型の違いは、画面の扱い方にあります。キャンバス 型では、画面全体を 1 つのビットマップとして扱い、グラフィックや文字を自由に描画できます。 このため、ゲームのようにグラフィックを多用する i アプリはキャンバス型として作成すること になります。 一方、パネル型では、画面にはテキストボックスやリストボックスといった、データ入力用の コンポーネントだけが表示されます。Web ページで言えばフォームに相当する画面を利用すると きには、パネル型としてアプリケーションを作成します。パネル型 i アプリでは、画面に並べるボ タンやテキストボックスを指定するだけで、画面表示は自動的に行われるので、キャンバス型の ように自由に画面をいじることはできません。そこがキャンバス型とパネル型の大きな違いです。 キャンバス型 画面全体をプログラム で自由に利用できる。 主にゲームなどで使用 する パネル型 HTMLのフォームの ようなインターフェ イスを持つ 図 1 キャンバス型とパネル型 キャンバス型とパネル型では、内部構造が大きく異なるため、プログラミングにあたっては、 それぞれについての仕組みを理解する必要があります。キャンバス型 i アプリで使用するクラス は低レベル API とも呼ばれ、多くの処理はプログラマに任されています。このため、自由度が高 いぶん多くのコードを記述しなければなりません。 一方パネル型 i アプリが使用するクラスは高レベル API とも呼ばれ、コンポーネントを始めと して、さまざまな支援クラスが用意されています。 基本的には1つの i アプリはキャンバス型かパネル型か、どちらかを選択して作成することに 61 Part 2 i モード Java プログラミングガイド なりますが、両方を組み合わせた i アプリを作成することも可能です。ただし、キャンバス画面 とパネル画面を同時に表示することはできないので、必要に応じて切り替えながら利用すること になります(Part3「スケジューラ」 「人相覚書」などが参考になります) 。 2. キャンバス型 i アプリの基本構造 i アプリのプログラムは、キャンバス型とパネル型でそれぞれ異なる、ある程度決められたコー ドを記述しなければなりません。そこで、まずは最低限必要なコードだけで記述された、最小の i アプリをサンプルとして、基礎構造を解説することにします。前述したように、キャンバス型 とパネル型ではその構造が異なるので、まずキャンバス型 i アプリの解説から始めることにしま しょう。 2.1 最小のキャンバス型 i アプリ(その1) キャンバス型 i アプリの最初のサンプルとして、図2のような画面に「Hello World」と表示する だけのプログラムをリスト 1 に示します。リスト1に含まれる MainCanvas.paint メソッドの中 身は「Hello World」プログラムに固有のものですが、それ以外は一切削ることができない、キャ ンバス型 i アプリに必須のコードです。すべてのキャンバス型 i アプリはリスト 1 の形で始まると 覚えてください。 それでは、リスト 1 の各行について解説していきましょう。 図 2 CanvasSample1 の実行画面 リスト 1 キャンバス型 i アプリ(その1) CanvasSample1.java 1: import com.nttdocomo.ui.*; …IApplication クラス、Canvas クラスのため 2: 3: public class CanvasSample1 extends IApplication { …i アプリは常に IApplication クラスのサブクラスが 必要。パブリッククラスとして定義する 4: MainCanvas gc; …キャンバスクラスを定義 5: …i アプリはこのメソッドから処理が始まる 6: public void start() { 7: gc = new MainCanvas(); …キャンバスを作成 8: Display.setCurrent(gc); …キャンバスをカレント画面に設定 9: } 10: } 11: 62 2. キャンバス型 i アプリの基本構造 12: class MainCanvas extends Canvas { …キャンバス型 i アプリは Canvas クラスのサブクラスが必要。パブリック 宣言はしない 13: public void paint(Graphics g) { …画面表示はすべてこのメソッドで処理する …unlock メソッドと組で指定する 14: g.lock(); 15: …これ以降は黒で表示される 16: g.setColor(Graphics.getColorOfName(Graphics.BLACK)); …画面全体を黒で塗りつぶす 17: g.fillRect(0, 0, getWidth(), getHeight()); 18: …これ以降は白で表示される 19: g.setColor(Graphics.getColorOfName(Graphics.WHITE)); …座標(30, 70)に文字列「Hello World」を表示する 20: g.drawString("Hello World", 30, 70); 21: 22: g.unlock(true); 23: } 24: } ■ IApplication クラスのサブクラスの定義 まず、唯一のパブリッククラスとして、com.nttdocomo.ui.IApplication クラスのサブクラスを 定義する必要があります(1行目)。これはキャンバス型に限った話ではなく、すべての i アプリ に共通の約束です。3行目の CanvasSample1 クラスがこれにあたります。そして、6行目のこの クラスの start メソッドが i アプリのスタートアップメソッドとして使用されます。i アプリを実 行すると、CanvasSample1.start メソッドから処理が始まるということですから、必ずこのメソッ ドを定義する必要があります。 通常ここでは7行目のように、次に定義する Canvas クラスのサブクラス(リスト 1 では Main Canvas クラス)を new 演算子で作成し、8行目の Display.setCurrent メソッドでキャンバスを表 示画面として設定します。 ■ Canvas クラスのサブクラスの定義 次に、com.nttdocomo.ui.Canvas クラスのサブクラスを定義します。12 行目の MainCanvas ク ラスがこれにあたります。名前からもわかるように、キャンバス型 i アプリでは、このクラスがプ ログラムの中心となり、さまざまな処理を記述することになります。前述した IApplication クラ スは、ほとんどこの Canvas クラスを作成するためだけに存在していると言ってもよいでしょう。 1 つ注意しておきたいのは、Canvas クラスは IApplication クラスと違って、パブリッククラス として定義してはいけないということです。Java の世界では、1 つのソースファイルにはパブリッ ククラスを 1 つしか定義してはいけないという決まりがあります。そして、IApplication クラスの サブクラスはパブリッククラスでなければなりません。したがって、Canvas クラスはプライベー トクラスとして定義しなければならないのです。ただし、クラスごとにソースファイルを分ける ときはこの限りではありません。これ以上詳しくは、適切な Java の解説書を参照してください。 ■ Canvas.paint メソッドを実装する Canvas クラスのサブクラス (MainCanvas クラス) を定義したら、次に 13 行目で MainCanvas.paint メソッドを実装します。キャンバス型 i アプリでは、基本的に画面表示に関する処理は、すべて このメソッドで行います。 63 月面着陸 ゲーム lunalander.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Taku SHIMURA 古式ゆかしい月面着陸ゲームです。あなたは月面着陸船の 船長で、限られた燃料をうまく使い、月面基地に着陸船を無 事着陸させることが任務です。 ■ 遊び方 ↑( 2 )キー、 ← ( 4 )キー、 → ( 6 )キーは、その 方向に着陸船を動かすためのジェットブースターのスイッチ になっています。キーは押し続けている間、ずっとジェット が噴射され、その結果燃料が消費されます(このゲームはい たって文部科学省推薦的な平和なゲームなので、凶暴な宇宙 人も出てこなければ、それをやっつけるためのミサイルも出 ませんので、 セレクト キーを押しても何も起こりません) 。 燃料がなくなると、いくらキーを押してもジェットブース ターは動作しませんので、燃料をむだ使いしないように気を つけてください。 月面基地は画面上に緑色で表示されている平らな部分で、 ここに対地速度 150 未満で着陸船を着陸させれば、任務完了 となります。着陸船をフワリと優しく着陸させるために、う まくジェットブースターを使って操船してください。 基地以外の部分に着陸船を激突させると、あえなく着陸船 は爆発炎上してしまいます。また、月面基地に着陸しても対 地速度が 150 以上の場合は同様に爆発炎上してしまいます (着陸船は意外と弱い材質でできている)。 ゲーム中、画面上部には、対地速度と燃料残量が表示され ます。ゲーム終了時には、着陸が成功したか失敗したか(失 敗した場合はその理由も)が表示されます。 ゲーム中に ソフトキー 1 を押すと、ゲームの一時中断/再開 を行うことができます。また、ゲーム終了時に ソフトキー 1 を 押すと、新しいゲームを開始します。 ソフトキー 2 を押すとプログラムが終了します。 79 アイアプリ 癒し系 eyemov.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Kazuya Nomura アイ(目)と言う名の i アプリ!! これが言いたいがために作ったジョークアプリです。その 名のとおり、目がギョロギョロ動く楽しさ(気持ち悪さ?) を演出してみました。このアプリはあまり役に立つとは思え ませんが、 ● ウィンクが事情によりできないときの代用に! ● 折り畳みの機種では、びっくり箱の代わりに! ● シュールなスクリーンセーバーに! ● 2台使って福笑いに!(右目バージョンをリリース?) と利用方法も多彩、どうぞご活用ください。 ■ 使い方 放っておくといつまでも勝手にギョロギョロ見ています。 利用状況により、下記のキーを組み合わせてアイコンタクト を試みてください。 キー 機能 セレクト キー ← 、 → キー ↑ 、 ↓ キー ウィンク 流し目 上目使い、下目使い 1 キー 「目がまわります」モード 2 キー 「ヒクヒクします」モード 3 キー 「ぱちくりします」モード 0 キー 上記のモードを終了 ソフトキー 2 プログラムの終了 87 日付計算 実用 diffdate.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c K.Taguchi 2 種類の日付を計算する機能を持つプログラムです。1 つ は、今日から指定した日付までの日数を計算する機能、もう 1 つは 2 人の誕生日を入力すると、そのちょうど真ん中の日 付を求める機能です。真ん中誕生日は...話の種にでもど うぞ。 ■ 使い方 メニューから機能を選び、日付を入力するだけです。 ■ 画面 1(初期画面) 機能を選択します。 ↑ 、↓ キーで選択して、 セレクト キー を押します。 メニュー 機能 [残り日数計算] 画面 2 へ [真ん中誕生日] 画面 3 へ ■ 画面 2(残り日数計算) 目的の日付を入力したら、 [実行] ボタンを押します。今日 からその日付までの残り日数を計算して、画面に表示します。 メニュー 機能 [実行] 目的の月日を入力したらここを押す [テキストボックス] ここに結果が表示される ■ 画面 3(真ん中誕生日) 2人の誕生日を入力したら、 [計算]ボタンを押します。2 つの日付の中間日を計算して表示します。表示する中間日 は、間隔日数の広い方を採用しています。 メニュー 機能 [計算] あなたと相手の誕生日を入力したらここを [テキストボックス] ここに結果が表示される 押す 95 スロットマシン Slotm.jar ゲーム ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c muray シンプルなスロットマシンです。運だけを頼りにして、所 持金を増やしていきます。目のよい人はスロットマシンの流 れる数字を見て最適なタイミングを選べるかも。暇つぶしに どうぞ。 ■ 遊び方 起動すると[スタート]ボタンがフォーカスを持ちます。 [スタート]ボタンを押すとスロットマシンが動き、3つの 数字が変化します。適当なタイミングで[ストップ]ボタン を押すと数字が確定します。 3つの数字のうち2つが同じならば掛け金の2倍が得ら れ、3つとも同じ数字ならば掛け金の 30 倍が得られます。 どの数も一致しないときには掛け金が没収されます。掛け金 の入力欄と2つのボタン間の移動は、 ↑ キーと ↓ キーを用 いて行います。 [スタート]ボタンを押すとフォーカスが自 動的に[ストップ]ボタンに移動し、 [ストップ]ボタンを押 すとフォーカスが自動的に[スタート]ボタンに移動するの で、掛け金を変更しないかぎり セレクト キーを押すだけで遊 べます。 所持金がマイナスになっても、借金状態で遊び続けること ができます。 ソフトキー 2 で終了します。 ■ プログラムの解説 ゲーム系としてはめずらしく、Canvas を使わずに Panel を使っています。 起動時にスレッドを開始します。 [スタート]ボタンを押 すと、スレッド内で乱数を発生させて3つの数を得て3つの ラベルにそれぞれ表示させています。 [ストップ]ボタンを 押すと、スレッド内で何もしない状態になり、確定した3つ の数を比較して、3つとも同じ数であれば掛け金の 30 倍を 計算して所持金に加え、2つが同じ数であれば掛け金の2倍 を所持金に加え、どの数字も一致しない場合には掛け金を所 持金から引きます。なお、 [ストップ]ボタンを押したあと でも、スレッド自体は何もしない状態で動き続けています。 106 時限爆弾ゲーム パーティ bomb.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Yamaguchi 時限爆弾ゲームです。一定範囲内で爆発します。本当に爆 発しても困るので、代わりに振動するようになっています。 パーティゲーム等にどうぞ。 ■ 使い方 秒数をセットしたら、 ソフトキー 1 でスタートします。設定 した秒数に必ずしも鳴るとはかぎりませんので、あしからず (±50%の範囲で指定した時間からランダムに変化します)。 裏技的な特典(?)として、 ソフトキー 1 で中断が行えるの で、自分のところに回ってきたら、まわりの人に気づかれな いように即座に ソフトキー 1 を押し、余裕をかました後、隣の 人に回す直前に、またまたすばやく ソフトキー 1 を押すという 技が使えます。 キー ↑ 機能 、 ↓ キー カウント秒数の変更(5 秒∼600 秒) ソフトキー 1 スタート、中断 ソフトキー 2 終了 ■ プログラムの解説 カウントダウンには、短時間タイマーの ShortTimer をワ ンショットタイマーとして使用しています。ShortTimer は タイマーイベントを Canvas クラスに通知してくれるので、 タイマーイベントリスナーをインプリメントする必要はあり ません。 このアプリケーションでは、携帯電話機のバイブレーショ ン機能を使用していますが、PhoneSystem.setAttribute へ の引数は、メーカーから正式に公表された値ではありませ んので注意してください (2001 年4月下旬時点) 。PhoneSys tem.setAttribute は、ベンダー定義の属性、および属性値を 使用する必要があるので、バックライトの制御以外は、機種 依存となります。 112 伴奏電話 ミュージック keychord.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ c Taku SHIMURA 対応機種:F503i/N503i/So503i/D503i A から G までのコード(和音)を鳴らして、携帯電話を伴 奏楽器(伴奏電話?)にしてしまおうというプログラムです。 サイズの問題(プログラミングテクニックの問題でもあるが) から、Major と Minor の2種類のコードしかサポートされて いません。7th や 9th またベース音違いといった和音は鳴ら せませんが、この辺りはノリと勢いでごまかしてください。 ■ 使い方 以下に示すように、 0 ∼ 9 キーと ∗ キーと # キーに AからGまでの音階が割り付けられています。それぞれの キーを押すと、その音階の Major コードが鳴ります。キー を押している間コードが鳴り、離すと止まるようになってい ます。 キー 1 キー 音階 キー 音階 C 7 キー 2 キー C# (D♭) 8 キー G 3 キー D 9 キー G# (A♭) 4 キー D# (E♭) ∗ 5 キー E 0 キー A# (B♭) 6 キー F # キー B キー F# (G♭) A 上記のキーを押す際に、 ソフトキー 1 をいっしょに押すと Minor コードを鳴らすことができます。 ソフトキー 2 を押すとプログラムが終了します。 ■ プログラムの解説 各コードの音はそれぞれ標準 MIDI ファイルから i メロ ディを作成し、プログラムとともに jar ファイル中にリソー スとして持っています。これが本プログラムの容量を圧迫し てしまっており、2種類のコードのみのサポートとなってい ます。 117 Get’n Crash crash.jar ゲーム ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c TERUYA Co. M.Urushibata ドットイートタイプのレーシングゲームです。レーンチェ ンジの一瞬のタイミングが勝負の分かれ目。車を自在に操っ て、ステージをクリアしよう! ■ 遊び方 緑の車を操作し、赤い車にぶつからないように、すべての レーンを通って画面上のドットを全部拾えば、ステージクリ ア。 矢印 キー(もしくは 2 4 6 8 キー)でレーンチェ ンジします。 ソフトキー 1 で効果音のオン/オフを切り替えます。 ソフトキー 2 でプログラムが終了します。 ■ プログラムの解説 実は私 Java プログラムを作ったコトなかったんです…。 だから全然 Java っぽいソースではないです。それでもiア プリは作れるのですね(笑) 。 基本的には、100 ミリ秒毎に呼ばれるメインのなかで、キー の取得、処理、描画の各メソッドを実行しています。各メ ソッド内は、処理ごとに分けられたモードにしたがって動い ています。100 ミリ秒のループは、インターバルタイマーを 使って生成しています。このインターバルタイマーは、どう も信頼性が低いため、本来ならばスレッドスリープを使った ほうがよいのですが、なにせ「初めての Java」でしたので…。 車の移動処理は、timerCount という変数を使い 400 ミリ 秒毎に行っています。timerCount は、0∼3の範囲でルー プしており、 「3」のときに自車の処理、 「2」のときに敵車 の処理、そして「1」のときに自車と敵車の衝突判定を行っ ています。これにより、自車と敵車のすり抜けを回避してい ます。 キーの取得は、トリガーが欲しかったので、keyCheck メ ソッドを作りました。これによりキーが押された瞬間のみ キー処理が行われるようにしてあります(つまり押しっぱな しは無効ってことです)。また、複数キーの同時押しもない ので、複数キーが同時に押された場合は、ビットの小さいほ うが優先されるようになっています。 125 スケジューラ 実用 cal.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c K.Taguchi 祝日にも対応したスケジューラです。スケジューラとい うからには、もちろん予定を書き込んで保存することも可能 です。 ■ 使い方 スケジューラを起動した直後は月間表示モードとなって いて、今日の日付が水色に、また予定が入力されている日 付が黄色に表示されています。ここでカーソルを移動して セレクト キーを押すと、週間表示モードへ移動します。 週間表示モードでは 1 週間分の予定を一覧することが可 能です。予定を入力するには、ここで目的の日付を選んで セレクト キーを押してください。すると予定入力パネルが表 示されるので、テキストボックスに予定を入力して、 [OK] ボタンを押してください。 各モードでのキー操作は、以下のようになっています。 ■ 月間表示モード キー ■ 機能 ↑ 、 ↓ キー 週移動 ← 、 → キー 月移動 セレクト キー 週間表示モードへ ソフトキー 2 終了 週間表示モード キー 144 機能 ↑ 、 ↓ キー 日移動 ← 、 → キー 週移動 セレクト キー 予定入力パネ ルへ ソフトキー 1 予定の削除 ソフトキー 2 月間表示モー ドへ戻る 地雷除去 ゲーム minesweeper.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ c Taku SHIMURA 対応機種:P503i/F503i/N503i/So503i/D503i Windows ユーザーにはおなじみの地雷除去ゲーム「Mine Sweeper」です。近隣にある地雷の数から、どこに地雷が敷 設されているかを推測し、地雷を避けて地面を掘り返してい くゲームです。 ■ 遊び方 矢印 キー、または 2 4 6 8 キーを使って場所を選 択し、 セレクト キー(または 5 キー)でそこを掘り返します。 もし、掘った場所に地雷があったら地雷が爆発してゲーム オーバーです。 掘った場所に地雷がなかった場合は、そのマスに隣接する 八近傍にある地雷の数が表示されます(1 個も存在しない場 合は、何も表示されません)。この数を頼りに、地雷の敷設 位置を推測します。 たとえば以下のような状態になった場合、◆の左上にある マスの八近傍は◆の部分を除き、すべて地雷ではないため、 ◆の部分に地雷があることが推測されるわけです(ここに地 雷がなければ◆の左上のマスの値が1にならないはず)。ま た、この例では、◆の上や左下にあるマスの八近傍のうち、 ◆を除いた部分には地雷がないことがわかります(もし、◆ の位置以外に地雷があるなら、これらのマスの値は1とはな らないはず)。 □□1 □11 □1◆ □1 ここに地雷が敷設されていると思われる場所が解った場合 は、その場所を選択し ソフトキー 1 (または ∗ キー)を押して ください。その場所に旗が立ち、その場所を掘れなくできま す(もう一度その場所で、 ソフトキー 1 を押すと旗を取ること ができます)。 このようにして、次々に地雷原を掘り返していき、地雷以 外の場所をすべて掘りつくすと、晴れて任務成功です。 160 電話番号相性占い 占い imitation.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Eiju.Y 自分の携帯の電話番号と相手の電話番号を入力して、2人 の相性度を占うソフトです…が、ほんとうは相手の電話番号 を収集することが目的の実用ソフト(?)です。相手の電話 番号は、最新の5件まで携帯に自動的に記憶され、あとで閲 覧することが可能です。また隠しキーを押すことにより、相 性度を変えることもできます。おっと、これは作者だけの内 緒の機能でした... ■ 使い方 タイトル画面が表示されているときは、 ∗ 、 # キーは隠 しキーとなっており、いずれかのキーを押すことで、これまで に保存されている相手の電話番号の最新5件を表示します。 もう一度キーを押すとタイトル画面に戻ります。 ソフトキー 1 で、新規の占いがスタートし、電話番号入力画面に変わりま す。 ソフトキー 2 で終了します。 占いの画面では、まず自分の電話番号を入力してくださ い。間違った場合は、 ← キーで1つ前に戻せます。入力が 終わったら、 セレクト キーまたは ↓ キーを押すと、相手の 電話番号を入力する番になります。入力後、 セレクト キーま たは ↓ キーを押すと、画面が切り替わり、相性占いの結果 画面が表示されます。 自分の電話番号を入力する際に、 ∗ を一度押しておくと、 画面上は何も変化しませんが、常に 80%以上の相性を出すこ とができますので、意中の彼氏、彼女と占うときには、こっ そりと押しておきましょう。 また ∗ を押した後でも、 # を押せば通常占いモードに戻 りますので、間違って ∗ を押してしまった場合(もしくは 気が変わった場合?)、冷や汗をかかずにすみます。占い入 力画面では、 ソフトキー 1 で新規占いの開始、 ソフトキー 2 でタ イトル画面に戻ります。 169 3D Cube cube.jar 癒し系 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ c T.Yamaguchi 対応機種:P503i/F503i/N503i/So503i/D503i 三角ポリゴンで構成された立方体を 3D 表示するプログラ ムです。ポリゴン大好き人間の私としては、携帯でどこまで ・・・ 3D ができるのか 純 粋 にチャレンジしてみた1品です。どん なプラットフォームにも、まずはポリゴンを表示させないこ とには始まりません。そういう人って。。。まわりにいませ ん?(いるわけないか) ■ 使い方 矢印 キーで、立方体を自由に回転させることができま す。表示も、ワイヤーフレーム、フラットシェーディングな ど4種類を用意してみました。 ■ 操作モード キー ← ■ 機能 、 → 、 ↑ 、 ↓ キー 回転 セレクト キー 回転リセット ソフトキー 1 描画モードの変更 ソフトキー 2 プログラムの終了 描画モード 描画モード 0 ワイヤーフレーム 1 陰面消去ワイヤーフレーム 2 塗り潰し 3 フラットシェーディング ■ プログラムの解説 キーが押されるたびに各頂点座標を計算し、ポリゴン単位 で描画しています。 ワイヤーフレームモードと陰面消去モードでは、3つの 頂点を2次元座標に変換して、構成される多角形を単純に drawPolygon を使用して描画しています。陰面消去モード ではさらに、ポリゴンの法線ベクトルを求め、視線ベクトル との内積により表裏判定を行い、表面のみ表示するようにし ています。 181 バイオリズム 実用 bio.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c CyberWindBell Project バイオリズムを表示します。身体、感情、知性のそれぞれ のリズムがグラフで表示されますので、その日の体調を知る ことができます。常に持ち歩く携帯ならではの i アプリです。 ■ 使い方 起動すると誕生日の年月日を入力するためのパネルが表示 されるので、それぞれ入力して最後に[表示]ボタンを押し てください。一度入力した誕生日は保存されますので、次回 以降はアプリを起動すると、今日のバイオリズムが表示され ます。 グラフ表示中は、 ← → の矢印キーで日付が移動できま す。誕生日を変更する場合は、 [設定] ( ソフトキー 1 )を押し ます。誕生日はスクラッチパッドに保存されており、アプリ 起動時に保存されている誕生日をもとにバイオリズムを表示 します。 ソフトキー 2 でプログラムが終了します。 ■ プログラムの解説 プログラムは、bio、entry、show、label の4つのクラス を使っています。bio クラスは、メインとなる IApplication を継承したクラスです。entry クラスは、誕生日を入力する ためのパネルを定義しています。show クラスは、グラフを 表示するキャンバスを定義しています。label クラスは、日 本語のラベル名をこのクラス内で static な文字列で定義して います。 まず bio クラスですが、スクラッチパッドへの書き込みは このクラスのメソッド(read( )、write( ))で行います。スク ラッチパッドは4バイトを使用し、年、月、日をそれぞれ2 バイト、1バイト、1バイトに分けて保存しています。起動 されるとスクラッチパッドの内容を読み出し、誕生日の情報 が入っていなければ入力のための entry を表示し、入力済み ならそれを使って show クラスによりグラフを表示します。 189 12 星座神経衰弱 breakdown.jar ゲーム ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Eiju.Y 12 星座の神経衰弱。説明するまでもないですが、画面上 のパネルを2枚めくって同じ絵柄のものを見つけていくゲー ムです。この神経衰弱では、24 枚のパネルに2枚ずつ 12 星 座の絵柄が隠れています。早くパネルを合わせていけば、そ れだけ高得点が得られます。逆に、あまりにも間違い続けて いると減点するようになっています。 ■ 遊び方 上下左右の 方向 キー、または 2 、 4 、 6 、 8 キーを 押してカーソル(選択枠)を上下左右に動かし、 セレクト キー、 または 5 キーを押してパネルをめくります。 2枚めくったときに2枚が一致すれば、得点が加算され、 その絵柄は開きっぱなしになります。これを繰り返し、最終 的に全 12 種類の絵柄を一致させることができれば、ゲーム クリアーです。 ソフトキー 1 で新規のゲームがスタートし、 ソフトキー 2 でプ ログラムを終了します。 ■ プログラムの解説 このプログラムでは絵柄の画像を用意せずに、i モードの グラフィック文字を絵柄(12 星座)に使用しています。i モー ドのグラフィック文字は、いろいろな種類の絵柄があります ので、今回のようにゲームなどで使ってみるとおもしろいで しょう。 また、このグラフィック文字を使用することにより、アプ リケーションのサイズを小さくできるので、10K バイトとい うサイズ制限がある i アプリでは有効活用したいものです。 ちなみに、この 12 星座神経衰弱では、チューンナップして いないにも関わらず、サイズは 3,828 バイトです。 グラフィック絵文字は、ドコモの開発環境 DoJa では表示 されますが、i-JADE Lite では表示されないので、エミュ レータでの開発にあたっては注意が必要です。 198 String Tuner strtuner.jar ミュージック ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Taku SHIMURA 携帯電話をギターチューナーにするための i アプリです。 チューニングマシンやニューニングフォークがない場合に、 チョコチョコっとチューニングができて便利です。作成中 に欲が出て、ギターだけでなくベースギターにも利用できる ように改変した結果、プログラム的には 12 音までの音なら チューニングできる汎用的なモノとなっています。 ■ 使い方 ソフトキー 1 で、ギターとベースを切り替えることができま す。 数字 キーを押すことで、その弦の音が鳴りますので、 その音を聞きながらチューニングしてください。 弦に対応した 数字 キー、および ソフトキー 1 、 ソフトキー 2 以外のキーを押すと再生中のニューニング音を止めることが できます。 ソフトキー 2 でプログラムが終了します。 ■ プログラムの解説 筆者の作成する音モノ i アプリにしてはめずらしく P503i でも動作します。P503i で動作させるために、1つの Audio Presenter を 数字 キーが押されるたびに更新しています。 また、i メロディファイルのもとの MIDI ファイルを作成す る際にも、使用するコントロールチェンジに気をつけてい ます。 しかし、残念ながら P503i ではベースの 3 弦、4 弦の音は 出ません。たぶん P503i の i メロディの再生領域が狭いため と思われます。また、エミュレータの i-JADE Lite では、ギ ターとベースの切り替え時にエラーが出るなど、挙動がおか しくなる場合があります(実機では問題ありません) 。 先に説明したとおり、汎用的に作成されていますので、各 弦の i メロディファイルさえ作成できれば、もっとたくさん の弦楽器用のチューニングができるようになります。たとえ ば、ウクレレとか、バンジョーとか、ハープとか. . .おっと これは無理か。 209 マンデル 癒し系 mandel.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c SAKAKI Takasi おなじみの Mandelbrot(マンデルブロート)集合を i アプ リで描かせてみました。BASIC 全盛なりしころに計算時間 がかかる難物として親しまれていたあの絵が、その速度とと もに甦ります。 ■ 使い方 起動すると、まず Mandelbrot 集合全体が収まるような範 囲を描画します。正確な範囲は機種(解像度)によって異な りますが、 「−2−2i」∼「2+2i」ぐらいの範囲です。ちなみに Mandelbrot 集合とは真ん中に黒く描かれる(というか黒く 残る)ひょうたんを横に倒したような部分のことです。まわ りの極彩色の縞々の部分は、あくまで集合の描写という点か らみるとおまけなのですが、ここを描かないと美しくもなん ともないので描くのが通例となっています。 本プログラムではまず最初は荒っぽく、そして段々と細か く描くようになっています。最初はなんだかさっぱりわから なかったブロックの固まりもしばらく(かなり?)待てば、な じみ深い横倒しひょうたんとそれを取り囲むオーラになって いくはずです。 さらに部分的に拡大してみたいときは、 1 ∼ 9 の 数字 キーを押すと、各数字に対応した部分が縦横とも 2 倍になっ て拡大表示されます。たとえば 1 を押すと左上の 1/4 の部 分が、 5 を押すと真ん中が拡大表示されるといった具合で す。この拡大表示機能は描画中にも使えるので、荒い表示で だいたいの目的地にあたりをつけた時点で、さらに拡大する ことができます。 なお、 0 キーで表示範囲を初期状態に戻すことができ、 ソフトキー 2 で終了することができます。 215 Speed Panel speedpanel.jar ゲーム ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c M.Yokoyama 数字遊びゲームです。といっても重要なのは勘とタイミン グで、頭を使う必要は特にありません。神経衰弱のように同 じ数字を次々と選び、点数を稼ぎます。 ■ 遊び方 1 ∼ 9 までの 数字 キーのみを使います。画面左上か ら数字が書かれたパネルが次々と表示されていき、画面が数 字でいっぱいになるとゲームオーバーです。 最後に現れたパネルに書かれた数字と同じ 数字 キーを押 すことで、そのパネルを選択することができます。たとえば、 以下の例では 3 を押すことで、3のパネルを選択すること ができます。他の 数字 キーを押すとミスヒットになり、パ ネルが増えてしまいます。一度 数字 キーを押すと、次のパ ネルが現れるまでパネルを選択することはできません。 1 4 2 3 最後に現れた数字だけ選択できる(例では 3 キー以外はミスヒット) 一度数字を選択したら、次に同じ数字のパネルが現れるま でじっと待ちます。この場合は、次にまた 3 が出るまで待ち 続けます(画面右上に、選択した数字が表示される) 。 1 4 2 3 2 2 4 1 ↑なかなかこなかったりする 同じ数字が現れたら、次のパネルが現れる前にすばやく 数字 キーを押します。成功すればパネルがいくつか消え、 得点がアップします。 1 4 2 3 2 2 4 1 3 ↑次のパネルが出る前に 3 を押すと… 1 4 2 3 2 2 ↑…パネルがいくつか消え、得点アップ! 一定の得点に達すると、レベルアップします。 221 わりかん計算 実用 warikan.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Kamachi 宴会の支払い精算時には、誰がいくら払うかを計算するの がめんどうなものです。人数で一律に割るのであれば、電卓 があれば事足りますが、偉い人が多めに払ってくれたり、ゲ ストは少なめにもらったりという配慮をしようとすると、と たんに計算がややこしくなります。お酒の飲めない人や遅れ て来た人から全額徴収するわけにもいかないでしょう。 そこで、割増や割引を勘案して各自の支払い額を計算する ためのプログラムがこの i アプリです。総額、人数、割増す る人の数、割引する人の数を入力することで、 「通常の人」 「割 増の人」 「割引の人」のそれぞれの支払い額を計算することが できます。割増率や割引率は、それぞれ 50%増し、50%引 きとなっていますが、その率も変更できます。いつでも手元 に持っている携帯電話で計算できるので、とっても便利に使 えるでしょう。 ■ 使い方 起動して、総額、全人数を順次入力します。入力時には、 各フィールドで セレクト キーを押します。数値の入力後に、 再び セレクト キーを押すと入力を完了します。数値の入力を 完了すると、自動的に次のフィールドに移動します。そこで 再び セレクト キーを押して数値を入力します。最低限、総額 と全人数を入力すれば、均等割での金額を表示します。 上司など割増して払ってもらう人や、ゲストやお酒を飲ま ないなど割引して払ってもらう人がいる場合には、その人数 も入力します。割増率や割引率についても必要に応じて入力 します。各フィールドに値を入力するごとに、画面上部に計 算結果を表示します。 ソフトキー 2 を押すと、プログラムが終了します。 233 スネーク ゲーム snake.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c K.Taguchi 懐かしのスネークゲームです。壁や自分の腹にぶつからな いようスネークをコントロールして、画面に散らばる林檎を すべて食べればステージクリア!ステージが進むと敵スネー クも登場して画面は大騒ぎに. .. ■ 遊び方 矢印 キー、もしくは 2 4 6 8 キーを操作してプレ イヤースネーク(白)を動かし、林檎(赤)をすべて食べれば ステージクリアとなります。敵スネーク(黄)や壁、それに プレイヤースネーク自身にぶつかるとゲームオーバーとなり ます。 林檎を食べるたびにプレイヤースネークの長さが伸びてい くので、林檎を回収する順番を間違えると後半たいへんなこ とに。また、敵スネークはプレイヤースネークの体を素通り してくるので、気をつけてください。 ■ プログラムの解説 スネークのプログラムは、長いわりにやっていることは比 較的単純です。1 つのキャンバスクラス(GameCanvas クラ ス)に 1 つのスレッドクラス(Engine クラス)が中心となり、 そのまわりにゲーム画面に登場する蛇(Snake クラス)や林 檎(Apple クラス)を管理するクラスが定義されているとい う構成です。典型的なアクションゲーム用クラス構成といえ るでしょう。 プログラムの中心部分は、Engine クラスの run メソッドに ある while ループです。run メソッドは Runnable インター フェイスで定義されたメソッドで、スレッドが開始されると 呼び出されます。 この while ループはアプリケーションが終了するまで回り 続ける事実上の無限ループとなっていて、1 回のループでプ レイヤースネークと敵スネークを 1 ドット分動かし、林檎を 食べたかのチェックと衝突チェックを行います。これがス テージクリアするかゲームオーバーとなるまで繰り返される わけです。 240 逆ポーランド式電卓 実用 rpncalc.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Taku SHIMURA 一部に(イヌフグリのように)根強い人気のある逆ポーラ ンド式の電卓。四則演算しかできませんが、いちおう小数点 第一位までの計算を行います。 ■ 使い方 逆ポーランド式の電卓は、数値を入力するためのアキュム レータと、数値を保持したり計算するために利用されるス タックによって構成されます。 数字 す。 # キーを押すとアキュムレータに数値が入力されま キーを押すと、アキュムレータの数値の正負の符号 を反転することができます。 セレクト キーを押すと、アキュムレータに入力した数値が スタックに移動します(この操作を「エンター」と呼びます) 。 スタックは 100 層用意されており、アキュムレータに入力し た値をどんどんスタックに移動させることができます。 アキュムレータからスタックにデータを移すと、先に移動 したデータの上に順々に積み重なるように保存されます。こ の様子が、干し草を積み上げるのに似ているため、このよう な変数の格納方法を「スタック」と呼びます。 各種の計算は、スタックの一番上(これを「スタックトッ プ」と呼びます)にある数値とその次にある値によって行わ れ、その2つのデータが消え、代わりに計算結果がスタック トップに積まれます。 ただし、アキュムレータに数値が入力されている状態で演 算キーを押すと、アキュムレータの値をスタックに積んでか ら、演算を行います。 各種演算を行うキーは、以下のとおりです。 キー 254 計算 → キー 足算 ← キー 引算 ↑ キー 掛算 ↓ キー 割算 山崩し ゲーム level.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Eiju.Y 画面上に5行/1∼7列で5∼35 本の木が並んでいます。 この木をコンピュータと交互に1本以上伐採していき、最後 に伐採したほうが勝ちというルールのゲームです。木を伐採 するときは、水平方向には、何本でも切ることができます。 簡単なアルゴリズムの割りに結構コンピュータは強いです。 ■ 遊び方 2 、 8 キーで、伐採する山を選択します。 4 、 6 キーで、 選択している山から伐採する木の数を指定します。 セレクト キー、または 5 キーで、実際に指定している数だけ木を伐 採します。これをコンピュータと交互に繰り返し、木を伐採 していきます。 ソフトキー 1 で新規のゲームがスタートし、 ソフトキー 2 でプ ログラムを終了します。 ■ プログラムの解説 コンピュータのアルゴリズムは単純です。要するに、各山 にある木の数を自分自身で0本にすることができれば勝ちな のですが、問題はいかに自分自身がこのような状態になるよ うに木を伐採していくかというところが肝です。 では、どのように木を切ればいいかと言うと、各山に植え てある木の数の排他的論理和が0になるように木を切ってい けばいいのです。排他的論理和が0のときには、次に木を切 る相手はどんなふうに伐採しようとしても、常に相手は排他 的論理和を0にすることができないためです。 このゲームは静的なゲームで、アルゴリズムも単純なた め計算速度の遅い i モード端末でも問題なくサクサク動作し ます。木自体も i モードグラフィック文字を使用してアプリ ケーションサイズを抑えてあります。限られたサイズのなか でプログラムを作成する場合は、アルゴリズムかリソースの いずれかのサイズを抑えていく工夫が必要になります。この プログラムでは、サイズには十分なゆとりがあるので、画像 や効果音を積極的に組み込むと印象がよくなるでしょう。 262 人相覚書 パーティ ninso.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Yamaguchi モンタージュのような人相書きプログラムです。2 ビット カラー GIF 画像を 4 部位×4 パターン用意しています。こ じつけのごとく、スクラッチパッドを利用したセーブ/ロー ド機能がついていますので、プログラムを終了しても作った 顔を忘れる心配はありません。 パーティグッズとして、宴会の場の盛り上げ用として、使っ てみてください。 ■ 使い方 下記のキーで、相手の顔に一番近いものを作ってみましょ う。16 パターンの顔が作れますので、典型的な日本人の顔 は統計的にすべて網羅されているはずです(ホントか?) 。 ■ 通常画面 キー 1 、 3 キー 頭の変更 4 、 6 キー 目の変更 7 、 9 キー 鼻の変更 ∗ 、 # キー ← ■ 機能 、 → キー 口の変更 全パーツを一度に変更 ソフトキー 1 保存/呼出画面へ ソフトキー 2 プログラムの終了 保存/呼出画面 キー ソフトキー 1 機能 通常画面へ戻る ■ プログラムの解説 各部位の画像を表示しているだけの単純なプログラムで す。今回は残念ながら、男性の顔専用のパーツしか用意して いませんが、絵心がある人に GIF 画像を用意してもらえば、 子ギャル用、指名手配用、犬用 (?)などの人相覚書も簡単で すので、チャレンジしてみてください。 272 トレック ゲーム trek.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c K.Komatsu 23 世紀、新たな新天地をもとめ広大な宇宙へと旅だった 人類は、幾多の困難を乗り越えて友好的な異星人とともに宇 宙連邦を設立していた。しかし、人類が出会ったのは友好的 な異星人ばかりではなかった。チャンスをうかがっていた悪 の帝国が、ついに大々的な侵略を開始したのだ。人類の宇宙 連邦は激しい攻撃にさらされ、存亡の危機を迎えつつある。 あなたの使命は、宇宙船のキャプテンとして、探査可能宙域 に進入してきた敵戦艦をすべて破壊し、つかの間の平和を取 り戻すことだ! ■ 遊び方 定められた期間内に敵戦艦をすべて破壊できた場合、あな たは宇宙連邦を守った英雄として後世まで語り継がれるで しょう。逆に、以下のいずれかになってしまった場合、ゲー ムオーバーとなり、あなたの地位はすべて剥奪されてしまい ます。 ● ● 定められた期限を過ぎてしまった場合 ● エネルギーが切れて移動できなくなってしまった場合 ● 最後の基地を破壊した場合 画面表示 画面は、セクタマップ、ステータス表示、スクロールエリ アに分かれています。探査可能宙域は、横 4×縦 8(8×8 で ないのは画面の大きさの都合)のクオドラントからなってお り、各クオドラントは横 8×縦 8 のセクタに分割されます。 画面のセクタマップには、宇宙船がいるクオドラントのマッ プが表示されます。 右側のステータス表示は、現在の位置やエネルギーなどが 表示されます。画面下部のスクロールエリアは、コマンドの 入力などに使われる 3 行分のエリアで、スクロールして表示 されます。 なお、ロングレンジセンサー制御コマンドを入力すると、 セクタマップとステータス表示がクオドラントマップ表示に 切り替わります。クオドラントマップ表示中に何かキーを押 すと、通常の画面表示に戻ります。 278 サイコロ ゲーム dice.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Taku SHIMURA 要するにサイコロです。1つから3つまでのサイコロを同 時に振ることができますので、すごろくのサイコロの代わり から、麻雀のサイコロ、丁半、チンチロリンまで幅広く利用 できる博徒必須の i アプリです。 ■ 遊び方 ソフトキー 1 でサイコロの投げと止めを行い、止めた時の値 が出目ということになります。 1 、 2 、 3 の数字キーを押すことで、サイコロの数を 選択することできます。 ソフトキー 2 でプログラムを終了します。これらのキー以外 はすべて無視します。 ■ プログラムの解説 単純に乱数によって、サイコロの値を表示しているだけで すので、ロジック上特筆すべき点は何もありません。テク ニック的には、画像を高速に表示するために、あらかじめ1 ∼6までのサイコロの画像を読み込んで用意しています。 サイコロの画像と、プログラム上の定数を少し変更するこ とで、正 12 面体のサイコロや正 4 面体のサイコロも作成す ることができますので、怪しげなギャンブル用(インドマグ ロ子用?)のプログラムを作成するのもよいでしょう。 また、同時に投げられる個数も calcSaiPos メソッドを改変 することで対応できますが、4つ以上のサイコロを投げる必 要性が感じられないので、本プログラムではサポートしませ んでした。 改訂版のバージョンアップで、Display.UPDATE_VM_EVE NT イベント発生時に全画面再描画をするように修正するこ とで、D503i で i アプリ実行中にオフフックボタンを押した 際の i アプリ強制終了メニューからの復帰に対応しました(く わしくは月面着陸のプログラムの解説を参照してください) 。 302 相性診断ゲーム 占い affinity.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Yamaguchi 「一目遇ったその日から」的な相性診断ゲームです。男性 の人数、女性の人数をセットすると、最適な組み合わせを分 析(?)して表示します。 ■ 使い方 まず本章の「サイコロ」等で、男性/女性それぞれに、番号 を振ってください。それから人数を入力し、あとは運を天に 任せるだけです。最適なカップリングがすぐに誕生します。 なお、世の合コンの常として、このプログラムも「男性の 数」≧「女性の数」であることを前提にしていますので、ご注 意ください。 キー 機能 ソフトキー 1 / セレクト キー ↑ 、 ↓ キー ソフトキー 2 次のステップへ進む 人数の変更 プログラムの終了 ■ プログラムの解説 プログラムは単純に status の値で paint メソッド内での処 理を振り分けており、 ソフトキー 1 / セレクト キーが押される ごとに、次のフェーズへ移って再描画します。カップリング ができる人数は、画面の横幅によって決まるようになってお り、対応機種の場合は、最大で 7 名ずつとなります。 「分析中」などと表示されますが、プログラムを見てもらえ ばわかるように、もちろんランダム値をもとに相手を選択し ているだけです。しかも実際に組み合わせを計算しているの は 「結果が出ました」を表示したあとです。 ランダムに選んだ候補が、もし確定済みだったら、空いて いる人が見つかるまで右回りに次の候補を探すという単純な ルーチンです。そのため、人数設定時に女性の人数が男性の 人数を超えないようにして、常に女性側のほうから相手を選 択するようにしています。当然ですが、余るのはいつも男と いうことになります。 308 ペジェヘルツ スタンドアロン版 Pejie-nonet.jar 癒し系 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c osawa kazuhiro 俗に言うペジェ曲線の描画を行う i アプリです。単純なペ ジェ曲線の描画を行うだけでなく、各種設定を自由に変更 し、複数のペジェ曲線をつなぎ合わせてモーフィングアニ メーションが楽しめたり、設定データをスクラッチパッドに 保存することが可能です。一種のスクリーンセーバーのよう な楽しみ方ができますが、個人的には、これを使って愛の告 白やプロポーズなどを行ってほしいものです (^.^)。 スタンドアロン版という名前からもわかるとおり、ネット ワーク機能を使ってのデータのアップロード/ダウンロード 機能を持ったペジェヘルツもあり、利用者間でのデータ交換 なども行われています。完全版についてはまたの機会という ことで、今回のソースからは省いてあります。 ■ 使い方 この i アプリは、複数のパネルで構成されており、起動直 後はメインメニューになっています。[編集]、[表示]、[保 存]については、アプリのバッファに存在しているデータを 使用します。逆に、バッファになにもない状態だとこれらの 操作は行えません。アプリのバッファにデータを取り込むに は、[新規作成]、[開く]でデータを取り込みます。 結局、あれこれ悩んで座標を決めるよりもすべて i モード まかせにしてしまった方がおもしろい映像が得られるという のを、どうにかしないといけないのですが… 各画面でボタンを押したときの動作や、テキストボックス の各項目の意味については、以下の表を参照してください。 ● メインメニュー ボタン 機能 [新規作成] 新たにペジェを設定する [編集] 現在バッファに残っているペジェを再編集する [表示] 現在バッファに残っているペジェの描画を行う [開く] 保存されているペジェをバッファに読み込む [保存] 現在のバッファの内容を保存する 315 メトロノーム metronome.jar ミュージック ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Taku SHIMURA 携帯電話をメトロノームにする i アプリです。テンポと拍 子を指定することで、 「ピッ、ポッ、ポッ、ポッ、ピッ、ポッ、 ポッ、ポッ」と電子音を鳴らします。 ■ 使い方 ← キーと → キーで拍子を変更することができます。 ↑ キーと ↓ キーでテンポを変更することができます。テンポ に表示されている数字は、1分間に何拍発音するかの「目安」 となるものです。 ソフトキー 1 で一時中断/再開ができます。一時中断した後 の再開は、1拍目からの開始となります。 ソフトキー 2 でプロ グラムが終了します。 ■ プログラムの解説 プログラムを見てもらえばわかりますが、テンポで指定し ている値はスレッドのスリープ時間を利用しているだけで、 電子音の発音時間などをまったく考慮していないので、あま り正確ではありません。また、Java の実行にもムラがある ようで、たまに変拍子になることがありますので、あくまで も「目安」程度に使うようにしてください。 メトロノームの電子音は、ごく短い MIDI ベースの i メロ ディを用意し、それを演奏することで実現していますが、こ れを再生する際にいかに待ち時間なしに再生を開始できるか がポイントとなります。というのも、テンポ 200 で 0.3 秒ご とに音を鳴らさねばならず、もたもたしていると次の拍子に なってしまうからです。 1拍目の音を変えることをせずに、単一の i メロディをタ イミングに合わせて鳴らすだけであれば、プログラムも単純 ですが、1拍目の音を変えようとすると、とたんに話は難し くなります。 F503i/So503i では「伴奏電話」と同様に2つの i メロディ を同時に開くとともに、それぞれの AudioPresenter を用意 して、i メロディの再生を高速に行っています(このようにし ないとテンポ 200 程度で再生が間に合わず音が鳴りません) 。 338 ダブルアップ double.jar ゲーム ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Eiju.Y トランプの数が場に出ている数字より大きいか小さいかを 賭けるゲームです。同じ数字の場合は、大きいほうに含まれ ます。連続して正解することにより、レートは倍々に上がっ ていきます。 ■ 遊び方 画面上部に4枚のトランプが表示されています。これは、 履歴になっていて、一番左から右にいくにつれて、新しい履 歴になります。4枚のうちの一番右側のトランプの数字より 大きいか小さいかを ↑ 、 ↓ キーで賭けていきます。正解 すればレートが倍に、間違えればレートの分だけスコアから 減点されます。連続して正解することにより、レートは倍に なっていきます。 また、 セレクト キーを押すことにより、現在のレートをス コアに加算します。レートが倍になればなるほど、正解した ときのレートの増え方も大きくなりますが、その分、減点も 大きくなってしまいます。ある程度、レートがたまったら、 無理をせずにスコアに加算しましょう。 ソフトキー 1 で新規のゲームがスタートし、 ソフトキー 2 でプ ログラムを終了します。 ■ プログラムの解説 トランプの数字はもちろんのこと、種類の絵柄もテキスト です。トランプ画像はスペード、ダイヤ、ハート、クラブの 4種類のグラフィック文字とA∼Kまでの 13 の数字を組み 合わせて生成しています。 i モードグラフィック文字には、それぞれに固有の色が最 初から付いています。しかし機種によっては、プログラム製 作者が setColor を使用して色を変更できる場合とできない 場合があります。グラフィック文字を使用する際は、色につ いて注意してください。このプログラムでは、色が変更でき る機種用に正しく色を付けています。なおエミュレータ上で も、色が表示できなかったり文字バケしたりと、正しく表示 されません。 348 数字速押しゲーム HitNumber.jar ゲーム ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c muray 上から落ちてくる数字をキーで消すという単純なゲームで す。速押しのスピードが勝負ですが、キーを連打しすぎて携 帯を壊さないようご注意を! ■ 遊び方 起動すると、上から1∼9の数字が3つ落ちてきます。そ の数字と同じキーを数字の数だけ押します。たとえば、9が 落ちてきた場合には、 9 を1回押しただけではダメで、 9 を9回続けて連打しなければ数字は消えません。つまり、大 きい数字がたくさん落ちてきたときは、難易度が急に高くな ります。数字を消せないまま画面の下まで達して消えてしま うとゲームオーバーです。 終了後は、ソフトキー 1 でゲームを再開できます。 ソフトキー 2 でゲームを終了します。 ■ プログラムの解説 変数 nShownNumber に、一度に何個の数字を表示させる かをセットしています。この数字は3に固定していますが、 難易度を設定して、落ちてくる数字の数を変化させたり、ゲー ムが進行するにつれて落ちてくる数字の数が増えて、難易度 が上がるなどの改良を加えることが容易にできるように配慮 しています。 起動時に、落ちてくる数字とその位置を乱数で決めて初期 化します。また、起動時にスレッドを作成し、スレッド内で 落ちてくる数字の Y 座標を増加させて数字を下に移動させ ます。数字キーが放されたときに、どの数字キーが何回押さ れた状態なのかを調べ、キーを押した回数とキーの数字とが 一致した場合には、その数字と同じ数字が落ちてきているか どうかをチェックし、対応する数字があれば、その数字を消 して、再び乱数によって数字と位置を初期化しなおします。 スレッド処理内で数字が画面の下に達して消えた状態に なっているかどうかをチェックし、下まで達していれば bEnd フラグを立てて、終了状態にします。終了後に ソフトキー 1 が 押されると、bEnd を false にして、落ちてくる数字と位置を 初期化しゲームを再開します。 363 単位変換 実用 unit.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c K.Komatsu 入力した数値をいくつかの方式で変換して表示する i アプ リです。 ■ 使い方 数値を入力すると、変換の種類にしたがって計算結果を表 示します。 クリア ボタンを選択して セレクト キーを押すと、 入力した数値と計算結果をクリアします。 変換の種類は、以下の7つのリストから選択できます。ま た、 ソフトキー 1 を押すと変換の種類を順に切り替えることが できます。 ● 摂氏→華氏 ● 華氏→摂氏 ● 消費税切り上げ ● 消費税切り捨て ● 消費税四捨五入 ● インチ→センチ ● センチ→インチ ソフトキー 2 を押すとプログラムを終了します。変換の種類 はスクラッチパッドに保存されますので、再度起動すると同 じ種類が表示されます。 ■ プログラムの解説 単位変換は、パネル型の i アプリです。パネル型 i アプリ は、期待した位置にコンポーネントを表示するのに苦労しま すし、実機で動かしてみないと見た目を予想することがむず かしいですが、コンポーネントを組み合わせて簡単にプログ ラムを作成できます。 テキストボックスやラベルの幅は、入力文字数や設定した 文字列によって変化します。幅が変わると、レイアウトが動 的に変わってしまったり、テキストボックスの幅が広すぎて、 画面が横にシフトしたりするのを避けるため、リストボック スの幅を基準として、テキストボックスの幅を設定したり、 値を設定するたびにラベルの幅を変更しています。 368 M叩き ゲーム mtataki.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Yamaguchi いわゆるモグラ叩きゲームです。敵と位置の対応する 0 から 9 の数字キーでやっつけてください。見え隠れする9 匹の「M」は、叩かれた回数だけ個別に活性化していきます。 10,000 点を超えたあたりから、無茶な難易度になりますが、 ゲームオーバーがないので、気軽に試してみてください。 ■ 遊び方 とにかく、叩きまくってください。 キー 1 ∼ 9 ソフトキー 2 機能 (拳で強く)叩く プログラムの終了 ■ プログラムの解説 敵の画像を「隠れている」 「半分見えている」 「完全に見えて いる」 「叩かれた」の4つに分けて用意し、run メソッド中の while ループ内で、敵クラスから表示すべき画像番号を受け 取って描画させています。 敵の挙動は敵クラス内で定義されているので、この部分を 拡張するとさらにゲーム性が増すと思います。ランダムで画 像を変えてみたり、ラウンドクリア型にしてミスカウントを 数えてみるのもいいかもしれません。 アクション型のゲームを作る際は、PC 上のエミュレータ でスムーズに動いても、実機ではかなりスペックが落ちるの で注意しましょう。 374 月齢 癒し系 moonage.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c K.Taguchi こんなプログラムに興味を持つあなたは釣り好きか、はた また人外の眷属か。今日の月齢を表示するプログラムです。 ■ 使い方 実行すると今日の月齢を表示します。 ■ プログラムの解説 月を描くには円を描かなければなりません。しかし、Graph ics クラスには直線、矩形、多角形を描くメソッドしか用意 されていないので、円を描くメソッドを自作する必要があり ます。ところが、i アプリでは実数演算がサポートされてい ないので、これが意外と面倒です。実数演算が行えないとい うことは、平方根を求めたり、三角関数を処理する関数も用 意されていないので、これを自作しなければならないから です。 月齢プログラムでは擬似的に実数演算を行うために、す べての値を 1000 倍して計算しています。つまり、 “1.234”は Integer 型の“1234”として扱うのです。こうすれば、小数点 以下 3 桁を保存することが可能です。こうした手法を「ゲタ を履かせる」などと呼んだりします。そして最後に 1000 で 除算し、整数値に戻して目的の値を求めます。 またコサイン関数は Windows 上で作成したテーブルを静 的配列変数として用意して代用しています。多少の誤差はあ りますが、直径 100 ドット程度の円を描くだけならばなんの 問題もありません。 380 ムージグ ゲーム moozig.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:F503i/N503i/So503i/D503i c hint-click.com 動くジグソ−パズルです。完成すると1枚の動く絵柄が表 れます。ちょっとした時間に頭をほぐすのにぴったりのパズ ルゲームです。 ■ 遊び方 ゲームモードは7種類あります。リストから選択してゲー ムスタート。マスのなかで動き回るパターンから推理して、 左上の灰色のスペースに1枚の動く絵柄が完成するように、 すべてはめ込めばゲームクリアです。 マスを セレクト キー(もしくは 5 キー)で選択し、 方向 キー(もしくは 2 4 6 8 キー)で移動して、再び セレクト キーで配置してください。マスは左上の灰色のスペース以外 にも自由に置くことができます。画面右上に表示される数字 がタイムリミットを表します。 マスのなかの動きが連続しているマスを少しずつ揃えてい くのがコツです。また動きの方向をよく見て、同方向の動き のグループに集めるとつながりがわかりやすくなります。 ソフトキー 1 で絵柄リストの選択画面を表示します。 ソフトキー 2 でプログラムが終了します。 ■ プログラムの解説 プログラム全体の流れとしては、リストコンポーネントに パターンを登録し、Canvas を表示する際にリスト番号を送 る setData というメソッドを呼びます。DataSetter というイ ンターフェイスで宣言されているメソッドですが、同時期に 同じような「リストコンポーネントから Canvas を表示する」 というゲームをいくつか作っていたので、メニューを汎用的 にするためこのインターフェイスを作りました。Canvas で は、setData でリスト番号から表示するパターンを決めて、 各パターンのメソッドで描画します。 385 麻雀点数計算 実用 mjscore.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Yamaguchi 符と翻による麻雀得点計算を行うアプリです。どうしても 点数計算が覚えられない人はどうぞ。 ■ 使い方 ソフトキー 1 で、親/子を切り替えます。 ↑ ↓ キーで符と 翻にカーソルを移動させ、 ← → キーで数値を変更すると、 その都度得点が表示されます。 キー 機能 ↑ 、 ↓ キー カーソルの移動 ← 、 → キー 符と翻の数値の変更 ソフトキー 1 親/子の切り替え ソフトキー 2 プログラムの終了 符と翻がわからない人は、残念ながら使えません(編集者 の希望は、上がり牌を入れたら自動的に点数を計算してくれ るものだったのですが、そんなまどろっこしいことはできな いので却下しました) 。 ■ プログラムの解説 麻雀の得点計算のロジックは案外単純です。得点を計算す る関数は、4翻以下の場合は符と翻をもとに値を求め、5翻 以上の場合は翻の値によって満貫など一定の点数を返してい ます。 文字列をセンタリングして表示させる drawStringCenter 関数を用意し、カーソルや点数の表示に使っています。な お、現時点ではボールド体フォントを搭載している機種はな いので、1ドットずらして2度描画することによりボールド 体を表現しています(特に必要はなかったのですが…(^.^;))。 400 ポーカー ゲーム poker.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Eiju.Y 言わずと知れたポーカーです。コンピュータが親となり1 対1で勝負します。カード交換は1回だけ行えます。勝負 をするときには、レートを変更してから行います。親に勝て ば、レートの倍額がスコアに加算されます。 ■ 遊び方 ← 、 → キー、または 4 、 6 キーでカーソル(選択枠) を左右に動かし、 セレクト キー、または 5 キーで交換する カードを選択します。選択するとそのカードは裏返しになり ます。もう一度 セレクト キーを押すと、交換は取り消しにな り、カードの表が表示されます。 ↑ 、 ↓ キー、または 2 、 8 キーで今回の勝負のレー トを上げ下げすることができます。レートと交換するカード が決まったら、 1 キーを押してください。カードが交換さ れ、親のカードも表示されて、役が判定されます。 ソフトキー 1 で新規のゲームがスタートし、 ソフトキー 2 でプ ログラムを終了します。 ■ プログラムの解説 前に紹介した「ダブルアップ」と card パッケージは同様で す。ここで使用している card パッケージは、ブラックジャッ クやセブンブリッジなどのトランプゲームでも利用できるも のですが、無駄な部分が多いため、チューニングをしてサイ ズを小さくすることはできるはずです(たとえば、トランプ の種類や数は保持していなくても配列の添字から取得できま すよね)。 サイズを小さくすることによって、ポーカーに勝利したと きのスコアアップチャンスとして前述の「ダブルアップ」を 組み込む、といったようなこともできます。しかし、i モー ド Java ではアプリケーションサイズに制限があるので、汎 用的なものを作ってサイズを大きくするよりは、目的の機能 に特化してサイズを小さくしたほうがいいでしょう。 なお、このプログラムもドコモのグラフィック文字を使っ ていますので、i-JADE Lite では正しく表示されません(ド コモの開発環境 DoJa では表示可能)。 405 文字列バウンド 癒し系 boundstr.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Taku SHIMURA 指定した文字列を、画面上でバウンドさせながら動かす i アプリです。好きなメッセージをスクリーンセーバーがわり にどうぞ! ■ 使い方 何もすることはありません。ただ黙って動く文字列を眺め て、ほのぼのしてください。 セレクト キーを押すとプログラムが終了します。 ■ プログラムの解説 バウンドさせる文字列は、jam ファイルの AppParam で 指定していますので、自分のサイトで動作させる際には jam ファイルを編集することで簡単に変更できるようになってい ます。 jam ファイルの AppParam で指定した文字列を読み込む getArgs メソッドは、AppParam に何も文字列が設定されて いない場合、何が返ってくるのかよくわからない状態です。 一応 NULL が返ってくると想定してプログラムしています が、エミュレータによってこのまわりの作りが違うので、こ のトラップをあてにしないでください。というわけで、本プ ログラムの jam ファイルでは、必ず AppParam に文字列を 指定するようにしてください。 その他のプログラム上のテクニックや注意点、特筆すべき 点は何もありません。とても単純なプログラムなので、i ア プリをこれから組んでみようという人には、i アプリの基本 形としてとっかかりになるかもしれません。 プログラムを複雑にしたくなかったので、本バージョンで は実装していませんが、AppParam の文字列中に改行記号 ( “Yn”等)を書けるようにして、バウンドさせる文字列を多 数行にできるといいかもしれません。 423 氷塔 TheIceTower ゲーム icetower.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c yuno 全 50 面の本格的なパズルゲーム。この i アプリは、Win dows 版「 氷塔 ∼ The Ice Tower」を移植したものです。 ■ 遊び方 矢印 キー、もしくは 数字 キーでキャラクタを操作し、 氷を押します。押した氷は滑っていき、何かにぶつかると止 まります。このとき炎に当たると、炎が消えます(氷も消え ます) 。すべての炎を消すと次の階へ上がれます。全部で 50 階まであり、1階から順に上がっていきます。 6階からは、矢印が現れます。キャラクタが矢印に乗る と、強制的に矢印の方向へ動きます。また、氷を当てると氷 の滑る方向が変わります。9階からは黄金ブロックが現れま す。炎に当てても黄金ブロックは消えず、障害物に当たるま で滑り続けます。 14 階からは製氷機が現れます。これは氷を次々に出しま す。20 階から氷捨て場が現れます。邪魔な氷をここに捨て られますが、黄金ブロックは捨てることができません。 キー 機能 矢印 キー、 2 4 6 8 キー キャラクタの操作 セレクト キー やり直し (Undo) ソフトキー 1 階数の選択 ソフトキー 2 BGM の ON/OFF プログラムの終了は、 電源 ボタンで行います (So503i は、 クリア キーの長押しで終了します)。 427 アステロイド ゲーム asteroid.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Yamaguchi 単純なシューティングゲームです。懐かしいベクタース キャンゲームを、わざわざ携帯の液晶で再現してみました。 操縦が難しく、ストレス解消にはむいてませんのであしから ず。気合いを入れて楽しんでみてください。 ■ 遊び方 下記のキー操作で、隕石(らしき物)を回避しつつ、撃って 破壊してください。自機の移動方法には癖があるので、慣れ ないと操縦が難しいかもしれません。運悪く隕石にぶつかっ てしまうと、ゲームオーバーです。 キー 機能 ← ( 4 ) 、 → ( 6 ) キー 左右回転 ↑ ( 2 ) 、 ↓ ( 8 ) キー 加減速 セレクト( 5 ) キー 弾を発射 ソフトキー 1 ゲームの再スタート (リセット) ソフトキー 2 プログラムの終了 ■ プログラムの解説 誤差を避けるため、内部座標は 10 倍しています。run メ ソッド中の while ループ内で、自機と敵の座標計算と衝突判 定を行っています。自機および敵の描画は、drawPolyline を 使用しています。回転座標を得るために三角関数が必要だっ たので、SIN、COS テーブルを使用しました。 今回は終了判定を行っていなかったり、敵の出現位置が固 定だったりするので、まずはそのあたりを拡張し、またスコ アを表示するようにすれば、ぐっとゲームらしくなります。 444 ライフゲーム 癒し系 life.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Kamachi ライフゲームは一種の生命シミュレーションです。J.H.Con way という人が考案したもので、単純なルールながら、非常 に興味深い動きを観察することができるので、根強い人気が あります。 ■ ライフゲームとは 碁盤の目のようなグリッド上に、いくつかの生命体を配置 します。各生命体は、次のような非常に単純なルールで生き 延びるかどうかが決まります。グリッド上では縦/横/斜め の隣の位置を見ると、8 個の場所が自分の隣にあることにな ります。その 8 個のうち、いくつの場所に他の生命体が存在 するかで、自分の生き残りが決定されるのです。 ■ 3個 今まで生命体がなければ、次の世代に誕生 ■ 2∼3 個 生命体があれば、次の世代も生存 ■ 1 個以下 過疎すぎるので、次の世代で消滅 ■ 4 個以上 過密すぎるので、次の世代で消滅 もちろんこれだけのルールで生命そのものを説明すること はできませんが、誕生と死亡する様子を見ていると、生命体 の群れが織りなす模様の複雑さ、多様さに驚き、ある種神秘 的なものを感じます。ただ眺めているだけでも飽きないもの ですから、いつでも持ち歩ける携帯電話で動かすのにふさわ しいプログラムであると言えるでしょう。 ■ 使い方 起動すると、グライダーと呼ばれるパターンで個体が配置 されます。このパターンは、まるでグライダーが空を飛ぶが ごとく動いていきます。そのまま眺めていると、どこまでも 動いていきます。 ソフトキー 1 を押すと、画面全体にランダムに個体を発生さ せます。そこから始まる変化を眺めて楽しんでください。驚 くほど多様な生々流転の様を見ることができます。同じ区画 にいる個体が生き延び続けると、次第に色が変わっていきま す。長生きしている個体を色で見分けることができます。 451 BLOCK BREAKERS Blockbrk.jar ゲーム ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c ICHIRO SOFT プログラミングを始めると誰でも作りたくなるようなゲー ムと言えば「ブロックくずし」でしょう。単なるブロックく ずしではありきたりですので、ブロックがどんどん迫ってき たり、板が左右だけでなく上下にも動かせたり、連続ヒット 数を表示させたり、ボールが板に当たった時にバイブレータ を使って振るえさせる体感コントロール機能などの要素を盛 り込んでみました。 ■ 遊び方 セレクト キーでゲーム開始。上下左右に板を動かしてボー ルが下に落ちないように当て返します。ブロックをすべてく ずしたらステージクリア。次のステージに進めます。 ステージをクリアするとボーナスとして一機増えますが、 ミスするとおしおきのバイブレータが作動してしまいます。 また、ブロックが下まで降りてきてしまったときもミス。こ の場合、せっかくくずしたブロックがまた元の状態に再生し てしまうので急いでくずしましょう。全部で 32 ステージ。 意外とむずかしいです。 キー 機能 セレクト 、 5 キー ゲームの開始 ↑ 、 2 キー 板を上に動かす ↓ 、 8 キー 板を下に動かす ← 、 4 キー 板を左に動かす → 、 6 キー 板を右に動かす ソフトキー 1 Help 表示時:ヘルプの表示 Quit 表示時:リセット ソフトキー 2 460 プログラムの終了 あみだくじ パーティ amida.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c SAKAKI Takasi 日本古来より親しまれている神聖、いや仏性的な運命鑑定 法あみだくじを最新テクノロジーである i アプリの上で再現 しました。仕事の割り振りなどにも用いることができる実用 的な(?)アプリケーションです。 ■ 使い方 起動すると、あみだクジの上に並ぶ名前と下に並ぶ名前を 聞いてきます。デフォルトでは 0∼3 の数字になっています が、具体的なものにしたほうが盛り上がるでしょう。 ↑ ↓ キーで上下のフォーカスが移動しますが、 → キー で選択肢が1つ増えます。ただし、 ← キーを押しても減る ことはないので連打しないようにしてください。あみだは4 個以上 10 個まで増やせますが、項目名を長くすると隣のも のと重なってしまうので注意してください。 入力したら ソフトキー 1 であみだクジが表示されます。 0 ∼ 9 の 数字 キーを押すと、選択肢からたどりはじめて、た どり着いた場所に自分の選んだ選択肢が表示されます。 最初の項目名の入力が面倒だと思う方は、上に個人の名前 を入力するのを省いて、携帯を順に渡して好きな番号を押し てもらってもいいでしょう。 どの段階でも、 ソフトキー 2 でプログラムが終了します。 ■ プログラムの解説 項目入力画面で Panel 型、あみだクジ表示画面では Can vas 型と両方を使うアプリケーションにしてみました。Dis play.setCurrent メソッドで各 AmidaInput、AmidaView を 切り替えるだけですが。 入力画面では動的に Component を増やしています。なか なか重い仕事のようで、F503i などでは、ずれていく様子が 目で見えます。最初に選択肢の数を入力させるのも考えたの ですが、数を数えるなどという非人間的な仕事をユーザーに やらせるのは納得がいかなかったのでこのようにしてみまし た。ちなみに選択肢を減らせないのは、Panel に remove メ ソッドがなかったためです。 485 基礎体温表 実用 kiso.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Yamaguchi ・ ・ 基礎体温 表です。基礎体温 計ではないので、腋に挟んで も体温は計れません。0.05 刻みで 35∼38 度の体温を毎日記 録できます。ダウンロードした時間から 24 時間毎に起動す る設定になっているので、起動させたい時間にダウンロード して、本体のアラーム機能と併せて使えば便利かも。 任意の5つの項目に関して毎日記録できる、多目的フラグ が付いていますので、スケジューラ的な使い方もできるはず です。 ■ 使い方 下記のキー操作で、体温を記録していきます。 ↑ 、 ↓ キーによる体温の設定は、前日の体温が基準になりますの で、入力がしやすいはずです。 危険日等の判定はしませんので、多目的フラグを活用して ください(付き合っている相手は5人までにしてね (^.^)) 。 キー ← ↑ 機能 、 → キー 、 ↓ キー 日付の移動 体温設定 1 ∼ 5 キー 各フラグの ON/OFF 6 キー 棒グラフと折線グラフの切り替え ■ プログラムの解説 初回起動時に systemTimeMillis でシステム時間の Long 値を取得し、スクラッチパッドの先頭 8 バイトをヘッダーと して書き込んでいます。その後に [体温データ 1 バイト] [フ ラグ領域 1 バイト]が日ごとに記録されています。 スクラッチパッドの記録サイズは、jam ファイルの SPsize の項でバイト単位で指定します。プログラムからこの数値 を取得することはできないので、このプログラムではアプリ ケーション引数の AppParam の項目に SPsize と同じ数値を 入れて、スクラッチパッドの記録サイズを取得し、最大記録 可能日数を計算しています。 494 あいのめもりぃ number.jar ゲーム ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Eiju.Y 画面に順番に表示される数字を暗記し、制限時間以内にそ の順番どおりにキーを押して自分の暗記力を試します。間 違えることなくキーを押すと、暗記すべき数字の桁数が上が り、解答時間は減少します。前書の「暗記力検定」に比べ、制 限時間を多少短めに設定してありますが、それでもある程度 のレベルまでは、比較的簡単に上がれるはずです。 ■ 遊び方 ゲームを開始すると、まず始めに画面上に数字パネルが順 番に1枚ずつ表示されます。レベル数が覚えるべき数字の桁 数に対応していますので、最初(レベル1)は1枚だけ表示 されます。ここで、表示される数字を覚えてください。その 後は、いよいよ解答時間です。 解答時間は画面上部にあるバーがどんどん減っていきま すので、バーがなくなってしまう前に、覚えた順番どおりに 数字 キーを押してください。解答が正しければ、次のレベ ルに進みます。 ソフトキー 1 で新規のゲームがスタートし、 ソフトキー 2 でプ ログラムを終了します。 ■ プログラムの解説 解答時間は、KEY_PRESSED_EVENT で押した数字画像 を表示させ、KEY_RELEASED_EVENT でユーザーの解答 が正解かどうかを判別しています。 このプラグラムでは、リソースとして使用している画像量 が多いため、コンストラクタですべてを読み込ませると、一 部の機種に限って、最初の paint メソッドが呼ばれないため に、実際に使用する直前で一部の画像を読み込んでいます。 その際、画像はサーバー側に置いておいて、最初の起動時に スクラッチパッドに保存しておき、以降はスクラッチパッド から読ませるという形にすると、アプリケーションサイズも 節約できていいかもしれません。 506 タイマー 実用 itimer.jar ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c SAKAKI Takasi 単なるタイマーです。それ以上でもそれ以下でもありま せん。 ■ 使い方 アプリケーションを開始すると数字だけの殺風景な画面 になります。 数字 キーを使って待ち時間を設定してくださ い。なお ← 、 → キーでカーソル(下線)を移動させること ができます。 設定したあと、 ソフトキー 1 か セレクト キーでタイマーの カウントダウンを開始します。カウントダウン中にまた ソフトキー 1 か セレクト キーでカウントダウンの中断と再開が で行えます。中断しているときには、再度時間を設定し直す ことも可能です。 設定した時間が過ぎ、カウントダウンが“0”に達すると、 バイブレータが震え、バックライトが点滅して時間がきた ことを教えてくれます。報知中に ソフトキー 1 か セレクト キー を押すと、点滅と振動は停止します。なお、P503i、F503i、 So503i 以外の機種ではバイブレータの操作方法がわからな かっため、振動しませんのでご注意ください。 ソフトキー 2 を押すとプログラムが終了します。 ■ プログラムの解説 いたって素直な Canvas 型のアプリケーションです。イ ベントを現在の状態(ITimerCanvas#status)にしたがって ITimerCanvas#processEvent メソッドで振り分けています。 バイブレータは機種依存するため、ITimerCanvas コンス トラクタ中で機種判別を行い、vibrate メソッド中で処理を 分けています。 516 システム情報表示 SysInfo.jar ユーティリティ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Kamachi 携帯電話端末の各種システム情報を表示するプログラム です。 携帯電話端末の画面サイズや色数は、必ずしも統一されて いるわけではなく、機種毎にある程度の違いがあり、それが 各機種の特色となっています。このプログラムでは、それら の情報を端末自身から取り出すことによって表示します。新 しい端末機種が発売されたら、このプログラムを実行して画 面まわりの仕様を確認してみるとよいでしょう。 ■ 使い方 実行すると、画面ドット数、色数、メモリ量などの各種シ ステム情報を表示します。 左の画面は、エミュレータの i-JADE で本プログラムを実 行した結果ですが、カラーやメモリサイズなどは、残念なが ら正しく表示されません。 ソフトキー 2 を押すとプログラムが終了します。 ■ プログラムの解説 画面のドット数や色数などは、プログラムリスト中にある ような方法で取り出すことができます。画面サイズに応じて レイアウトを調整するようなプログラムを作成する際には、 この値を利用するとよいでしょう。そうすれば、現行機種と は画面サイズが異なる新機種が発売されても、自動的に調整 して表示を行うプログラムを作成することができます。 i アプリを実装する形態として、Panel を使う方法と、Canvas を使う方法とがありますが、このプログラムは Panel を使っ ています。Panel を使うアプリケーションでは、UI コンポー ネントを並べていくことで画面を構成することができます。 このプログラムでは、文字列を表示する UI コンポーネント である Label クラスのインスタンスを並べています。i アプ リの最も単純な形態と言えるでしょう。 このプログラムをベースにして発展させ、いろいろな UI コンポーネントを並べることで、さまざまな情報を表示した り、入力させたりするプログラムを作成することができます。 523 apiscan apiscan.jar ユーティリティ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c T.Yamaguchi バイブレータ制御などの機種依存 API を、指定した数値範 囲でスキャンするソフトです。現時点では公開されていない 各機種の機種依存 API の数値を総当りでチェックするため に作ったソフトです。 ■ 使い方 下記のキー操作でスキャンを行います。 キー 機能 セレクト キー プログラムの実行 ↑ 、 ↓ キー 属性値の変更 ← 、 → キー 属性の変更 2 、 8 キー 4 、 6 キー 上記以外の 数字 キー スキャン間隔の変更 最大属性値の変更 数値変更時の自動実行オン/オフ ソフトキー 1 オートスキャンの開始/停止 ソフトキー 2 プログラムの終了 ■ プログラムの解説 PhoneSystem.setAttribute(int attr, int value) の引数を変 えながら実行していくだけの単純なプログラムです。この 関数の第1引数はベンダ定義のネイティブリソース属性の 種類を表しており、最小値と最大値がそれぞれ、PhoneSys tem.MIN_VENDOR_ATTR (=64) と PhoneSystem.MAX_ VENDOR_ATTR (=127) で定義されています。第2引数は ネイティブリソースに設定する属性値を表しています。 オートスキャンモードでは、一定間隔で自動的にこれらの 引数を変えながら機種依存 API を実行します。一部の機種 (P503i など)では、動作間隔が速すぎると不安定になるよう です。 ベンダーから数値が公開されると、とたんに意味がなくな るソフトのように思われますが、意図的に機種依存機能を実 行したいときにでも使ってみてください。なお当然のことな がら、単純に API を実行しているだけですので、明示的に実 行結果が得られるものでないと API の挙動はわかりません。 527 iAppDiag iappdiag.jar ユーティリティ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Taku SHIMURA i アプリを作成するにあたり、表示色やフォントサイズな どの端末機種間のさまざまな違いは、思わぬ伏兵となって現 れプログラマを苦悩へと導きます。本プログラムは、これら の情報を調査、確認するためのユーティリティです。 ■ 使い方 実行すると、メインメニューが表示されます。そのなかか ら確認したい内容を ↑ キー、 ↓ キーで選択して、 セレクト キーで実行します。メニューの各項目とそれぞれの調査内容 は、以下に示すとおりです。 ● dFont ボールドやイタリック、スモールやラージといった各種 フォント指定を行った際に、実際にどんなフォントが表示さ れるか、またそれぞれのフォントの高さは何ピクセルになっ ているかを表示します。 この調査は複数のページで構成されています。次ページ を表示するには、 ソフトキー 1 か ↓ キーを押します。逆に前 ページを表示するには、 ↑ キーを押します。 ソフトキー 2 ● を押すと調査を終了し、メニューに戻ります。 dColor 指定した色が、実際の画面上ではどんな色で表示されるか を調査します。画面上に表示されている数字は、その場所、 文字の色を表すもので、Graphics オブジェクトのなかで宣 言されている色名の値になっています。 この調査も複数ページで構成されていますので、 ソフトキー 1 か ↓ キーで次ページ、 ↑ キーで前ページが表示されます。 ソフトキー 2 ● を押すと調査を終了し、メニューに戻ります。 dDisplay Display オブジェクトから取得できる画面サイズ、色数、 カラー表示の有無を表示します。 ソフトキー 2 532 を押すと調査を終了し、メニューに戻ります。 iBench ibench.jar ユーティリティ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c ASCII 簡単なベンチマークプログラムです。整数演算とグラフィッ クスの基本的なメソッドを実行して処理能力を測定します。 さらに i アプリの実行時のバッテリーの駆動時間をチェック できます。i アプリ作成時のエミュレータの比較に使っても よいでしょう。 ■ 使い方 起動するとリストボックスが表示されます.ここで「整数 演算」 「グラフィックス」 「バッテリー」のどれかを選択する と、測定処理が始まります。結果はそれぞれの処理にかかっ た時間がミリ秒単位で画面に表示されます。グラフィックス の測定は直線、矩形、GIF イメージ、文字列の描画時間を測 定しています。 バッテリーベンチは、グラフィックスのベンチマークと同 じ内容を無限に繰り返します。バッテリーがなくなると i ア プリの実行は止まります。充電後、iBench を起動すると、画 面に前回のバッテリーベンチの結果時間が表示されます(最 初に起動した時は「0:0:0.0」が表示されます)。 バッテリーベンチを使うと、自分の使っている携帯が i ア プリを実行した場合のバッテリー駆動時間がどの程度なのか を知ることができます。また、バッテリーのへたり具合(?) を調べるのにもいいかもしれません。なおバッテリーベン チは、電源を切らないかぎり終了しませんのでご注意くださ い。また、バッテリーの消耗によりプログラムが終了する際 に、実行時間が正しくスクラッチパッドに保存されない場合 もあります。 各機種のベンチの特性を踏まえた上で、作成する i アプリ のプログラムをチューンすると、よりストレスの少ないアプ リケーションを組むことができるでしょう。 544 iBASIC iBASIC.jar プログラミング言語 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 対応機種:P503i/F503i/N503i/So503i/D503i c Kaworu SAITO 携帯電話でのプログラミングは Java に限りません。BASIC だって使えるのです。iBASIC は、BASIC に似た雰囲気を持 つ独自の言語処理系です。しかも携帯端末上でプログラムを 書き、実行することができます。何らかの BASIC の経験者 ならば、すぐに使い始めることができるでしょう。 ■ 使い方 iBASIC を起動すると、iBASIC アプリリスト画面が表示さ れます。iBASIC アプリがリストアップされ、初回起動時には サンプルアプリが2つ入っています (bouncer、multithread) 。 iBASIC アプリを選択し、リストの下にあるボタンを押して 「起動」 「ソースコードの編集」 「ソースコードの削除」が行え ます。 iBASIC アプリリスト画面の一番下には、 [Create new]ボ タンがあり、新規 iBASIC アプリを作成できます。まずタイ トルを入力し、次にソースコードを編集します。初期状態で は、タイトルは“title” 、ソースコードは“こんにちは世界。” と表示するプログラムになっています。 iBASIC アプリを起動したあとの操作については、もちろ ん iBASIC アプリの作り方によって異なります。 ■ iBASIC の特徴 iBASIC は BASIC の一種ではありますが、平均的な BASIC とは言えないかもしれません。 まず、行番号を使いません。goto などについては、ジャ ンプ先にラベルを宣言し、ラベルに対してジャンプします。 これは、行番号をテンキーで毎回入力するのは困難であるこ と、また改行時に行番号を自動補完するようなサポート機 能を持たせると処理が複雑になることなどを考慮した結果 です。 インタラクティブモードとでもいうべき、ステートメント を入力してその場で実行される機能は持っていません。ソー スコードの入力と実行は完全に分離しています。 556