第5回  スクラッチパッドへのデータ保存とダウンロードファイルの処理90Xi専用ゲームiアプリ開発講座(4/4 ページ)

» 2004年11月15日 22時22分 公開
[澤橋辰典・武上将樹,ITmedia]
前のページへ 1|2|3|4       

is = Connector.openInputStream(SP_POS + SP_FIRST_FLG);
flg_first = is.read();
is.close();

 ここに何もデータがなければ、0の値を拾って初めての起動と判断し、サーバから画像データを取得する。取得したらスクラッチパッドにサイズとデータを保存し、スクラッチパッド先頭バイトに1を書き込む。このとき書き込む値は0以外であれば何でもよい。

int image_pos = 0;
//初回起動時
if (flg_first == 0) {
  byte[] byteData;
  for(int i=0;i<RES_COUNT;i++) {
    hc = (HttpConnection)Connector.open(IApp.getSourceURL() + "res/card" + i + ".gif",
                      Connector.READ, true);
    hc.setRequestMethod(HttpConnection.GET);
    hc.connect();
    image_size[i] = (int)hc.getLength();
    is = hc.openInputStream();
    byteData = new byte[image_size[i]];
    is.read(byteData);
    is.close();
    hc.close();
  dos = Connector.openDataOutputStream(SP_POS + (SP_IMAGE_SIZE+i*4));
    dos.writeInt(image_size[i]);
    dos.close();
    os = Connector.openOutputStream(SP_POS + (SP_IMAGE_DATA+image_pos));
    os.write(byteData);
    os.close();
    image_pos += image_size[i];
  }
  //データのダウンロードと保存に成功したら起動フラグを立てる
  os = Connector.openOutputStream(SP_POS + SP_FIRST_FLG);
  os.write(1);
  os.close();
} else {
  //2回目以降起動時
  …
}

 今回の場合、72種類のカード絵柄をまとめて一つのファイルにしたため、描画をする時に32×32ピクセルの絵柄を、1枚ずつ切り出さなくてはならない。この作業を簡易化するため、以下のようにカード番号とX、Y座標を指定することで、カードの枠と該当する箇所の絵柄を描画するメソッドを作成した。

private void drawImageCard(Graphics g, int card, int dx, int dy) {
  if (card < 0 || 71 < card) {
    return;
  }
  g.drawImage(img[0], dx, dy);
  g.drawImage(img[2], dx+7, dy+30, (card%12)*32, (card/12)*32, 32, 32);
}

 次回より、いよいよ通信対戦を行うためのサーバサイドのプログラミングについて解説していく。ネットワークを利用できるアプリが作れるようになれば、今までとは一味違ったこともできるようになるはずだ。

前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

アクセストップ10

2026年07月21日 更新
  1. ダイソーで330円の「人感・明暗センサーLEDバーライト(Type-C)」が意外と便利 1人暮らしの帰宅時や非常灯に便利  (2026年07月18日)
  2. なぜ「060」携帯番号は18カ月あっても延期になったのか? それでも「慌てる必要はない」現状 (2026年07月20日)
  3. 専用充電器はもう不要? 中韓スマホから国内勢まで巻き込む「USB PPS」急速充電の新常識 (2026年07月14日)
  4. 「Pixel 11」は何が変わる? メモリ減少で100ドル前後の値上げも? 出そろったうわさを整理する (2026年07月19日)
  5. JR東日本「分かりにくい」新幹線券売機を改善へ なぜ、スマホではなく「駅での最短1分購入」を実現? (2026年07月04日)
  6. ショップとAIで差別化を図る「ドコモの銀行」――住信SBIネット銀行ユーザーからは戸惑いも (2026年07月19日)
  7. 携帯番号に「060」が採用されるワケ 「電話番号とは何か」を歴史とともに振り返る (2024年10月09日)
  8. iPhoneやApple Watch一斉値上げ 17無印は14万2800円に、17eは10万円超え 加速する中古スマホ特需 (2026年07月18日)
  9. “特典終了”が続く「d払い」「dポイント」のお得さはどう変わるのか これからは「dカード」の利用が得策? (2026年07月17日)
  10. ミドルハイレンジモデルにも水冷搭載 nubiaから「Neo 5 GT Special Edition」登場 (2026年07月19日)
最新トピックスPR

過去記事カレンダー