PDAのひとりごと

黄昏時、携帯情報端末は薄闇の向こうに何を見るのか

アロウスβ版

2004-08-11 00:11:09 | PDA
落ち物パズル「アロウス」のβ版です。

背景に使う良い絵が浮かばず、まだ写真にしてあります。

プログラムとしては完成のつもりですが、動いた、
動かない、簡単すぎる、難しい、などのご意見を
お待ちしております。

アロウスβ版

ウイルスセキュリティと相性

2004-08-07 16:01:43 | Weblog
父のPCが壊れた際に、代替として購入したSOTECのPCが、今は私のところにある。

そのPCがいつのまにか音が出なくなっていて、いろいろいじっていたのだが、ウイルスセキュリティのせいだというのが分かった。

OSはWindowsXp、オーディオデバイスはRealtek AC97 Audio。

せっかく購入したソフトだが、これでは困るので、アンチウイルスに入れ換えた。なんだかもったいないなぁ。

セミ

2004-08-07 15:48:48 | Weblog
今年は暑いせいか、例年よりもセミが多いような気がする。
ベランダや家の外壁にとまって鳴くやつはうるさくてたまらない。
網戸にとまって鳴くやつは最悪だ。

しかし、時々とまっていても鳴かないやつがいる。メスなのだろう。
今日もそんな来客があったので一枚写真を撮ってみた。
トンボもチョウも、暑い夏は大歓迎のようで、元気良く飛び回っているが、私は暑いのは苦手なのでげんなりしている。

8月に入り、アブラゼミの死骸を良く見かけて、鳴き声もアブラゼミからミンミンゼミに変わったと思っていたのだが、今日はアブラゼミのほうが優勢だ。

夕方に、遠くの方から聞こえてくるヒグラシの声は風情があって良いが、アブラゼミやミンミンゼミの鳴き声はどうしてこうも騒がしく、暑さを助長するのだろうか?

ポポペのプロ~8.爆撃

2004-08-01 17:48:43 | Lesson
(1回分抜けていたため、番号がずれてしまいました。修正も含めて過去の分はこちらにあります→めざせ!ポポペのプロ

 今度はインベーダー側の攻撃です。基本は砲台の時と同じで、移動方向が逆になります。
 まず、インベーダーの弾の位置を示す変数を作ります。場所は posTamaHou を定義した下で良いでしょう。

POINT posTamaInv;


 インベーダーの弾は、勝手に発射されます。処理のタイミングは、WM_CREATEが通知された時です。ここでは、弾が1発だけと決めているので、1つの弾が消えたら次の弾を出すようにしますが、それは別の処理になります。

posTamaInv.x = posInv.x;
posTamaInv.y = posInv.y + 24;
BitBlt( hdcScreen,		// 転送先HDC
        posTamaHou.x,	// 表示位置 X座標
        posTamaHou.y,	// 表示位置 Y座標
        32,		// 表示サイズ 幅
        24,		// 表示サイズ 高さ
        hdcBmp,		// 転送元HDC
        0,		// 転送元 X座標
        0,		// 転送元 Y座標
        SRCCOPY );	// そのまま転送


 弾が移動する処理は、定期的に実行しなければなりません。タイミング的には砲台の弾と同じで良いでしょう。WM_TIMER通知処理の中です。

case WM_TIMER:
    GmMoveInv();
    GmMoveTamaInv();
    GmMoveTamaHou();
    GmMoveHou();
    InvalidateRect(hWnd, NULL, FALSE);
    break;


 インベーダーの弾の移動方向は、砲台の弾と逆になります。

void GmMoveTamaInv(void)
{
    PatBlt( hdcScreen, 		// 対象のHDC
            posTamaInv.x,		// 表示位置 X座標
            posTamaInv.y,		// 表示位置 Y座標
            32,			// 表示サイズ 幅
            24,			// 表示サイズ 高さ
            WHITENESS );		// 白で塗りつぶす

    posTamaInv.y += 24;		// 下へ落ちる

    if (posTamaInv.y >= 320-1-24) {	// 下端を越えた時
        posTamaInv.x = posInv.x;	// 表示終了
        posTamaInv.y = posInv.y + 24;
    }

    BitBlt( hdcScreen,		// 転送先HDC
            posTamaInv.x,		// 表示位置 X座標
            posTamaInv.y,		// 表示位置 Y座標
            32,			// 表示サイズ 幅
            24,			// 表示サイズ 高さ
            hdcBmp,			// 転送元HDC
            96,			// 転送元 X座標
            24,			// 転送元 Y座標
            SRCCOPY );		// そのまま転送
}


 これでインベーダーの弾が移動するようになりました。ビルドして実行してみましょう。
 発射された弾は勝手に下へ飛んでいき、下端で消えます。まだ当たり判定を入れていないため、砲台に当たっても何も起こりません。