内容  
 
- 分類:A, proglen = 1230
 - 画面右の宇宙船を画面左の宇宙基地(白い四角)に到着させるゲームで、宇宙船(の中心)が宇宙基地に接触すればよい。
 - 他の障害物(隕石群?)に当たるとゲームオーバー。
 - 基地に到着した時点での残り時間がクリアのスコアとなって加算。
 - Enterキーでゲーム開始。下矢印のキーでメインエンジン噴射(つまり上方向の加速が得られる)。左矢印で左のエンジンを噴射(つまり右方向の加速が得られる)。右も同様。
 - 画面の外にも衝突判定がある上、スコア表示部にも衝突判定がある(文字にぶつかって死ぬ)。
 - とりあえず練習すれば1万点くらいはすぐに取れる(と思う)。
 
プログラム  
 
int sc, x, y, vx, vy, ox, oy, k, x16, y16, t, lv;
for (;;) {
    setCol(0x00009f); fillRect(320, 32, 160, 176);
    setCol(0xffffff); drawStr(160, 176, 2, 2, "Hit [Enter] to start");
    for (;;) {
        if (bl_inkey(BL_WAITKEY | BL_GETKEY) == KEY_ENTER) break;
    }
    sc = 0;
    srand(1);
    for (lv = 1;;) {
        cls();
        setMode(BL_PSET);
        setCol(0xffffff);
        fillRect(32, 32, 32, rnd(176) + 160);
        for (k = 0; k < 20; k++) {
            setCol(iCol(rnd(6) + 1));
            fillOval(lv * 8, lv * 8, rnd(512 - lv * 8) + 64, rnd(368 - lv * 8) + 32);
        }
        x = 630; y = 40; vx = 0; vy = 0; t = lv * 1000 + 990;
        x16 = x * 16; y16 = y * 16;
        flshWin(640, 400, 0, 0);
        for (;;) {
            k = getPix(x, y);
            if (t % 10 == 0) {
                setMode(BL_PSET);
                setCol(0x000000);
                fillRect(640, 32, 0, 0);
                setCol(0xfefefe);
                drawStr(0, 0, 2, 2, "SCORE=%05d  LV=%d  TIME=%03d", sc, lv, t / 10);
                flshWin(640, 32, 0, 0);
            }
            setMode(BL_PXOR);
            setCol(0xffffff);
            fillRect(3, 3, x - 2, y - 4);
            fillRect(5, 5, x - 3, y - 1);
            flshWin(5, 8, x - 3, y - 4);
            flshWin(5, 8, ox - 3, oy - 4);
            if (k != 0x000000) break;
            waitNF(100);
            k = inkey();
            ox = x;
            oy = y;
            fillRect(3, 3, x - 2, y - 4);
            fillRect(5, 5, x - 3, y - 1);
            if ((k == '2' || k == KEY_DOWN) && vy > -128)
                vy -= 4;
            if ((k == '4' || k == KEY_LEFT) && vx < +128)
                vx += 4;
            if ((k == '6' || k == KEY_RIGHT) && vx > -128)
                vx -= 4;
            x16 += vx;
            y16 += vy;
            x = x16 / 16;
            y = y16 / 16;
            vy++;
            if (t > 0) t--;
        }
        if (k != 0xffffff) {
            setCol(0xff0000);
            setMode(BL_PSET);
            for (k = 3; k < 24; k += 3) {
                waitNF(200);
                drawRect(k * 2, k * 2, x - k, y - k);
                flshWin(k * 2, k * 2, x - k, y - k);
            }
            break;
        }
        sc += t / 10;
        if (lv < 9) lv++;
        waitNF(2000);
    }
}| 
     
Counter:   272,
today:     1,
yesterday: 0
 
        初版日時: 2011-03-07 (月) 13:08:23 
            最終更新: 2011-03-10 (木) 00:00:00 (JST)  (666d) by lina 
    
   | 
ぺージ情報 | 閲覧可 | 編集可 | |||
|---|---|---|---|---|---|---|
| ぺージ名 : | blike/works/p0001 | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
| ページ作成 : | lina | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
| ページ別名 : | 未設定 | |||||

