a23_useSelfMade #5

2023.02.09 Thu #1


2023.02.09 Thu #2


2023.02.10 Fri #1


2023.02.10 Fri #2


2023.02.11 Sat #1


2023.02.13 Mon #1


2023.02.13 Mon #2

WINDOW 512,512;
PCG0 0,0,0x7799FF;
PCG0 5,4,4;

PCG1 "DD6622  FFBBAA  0x7799FF FFBB33";

PCG2 "A777777770A7777A                BBBBBBBBBBBBBBBB                CAAAAAAAAAAAAAAC"; // A,C,E
PCG2 "7AAAAAAAA07AAAA0                AAAAAAA0AAAAAAA0                ADDDDDDDDDDDDDD0";
PCG2 "7AAAAAAAA07AAAA0                AAAAAAA0AAAAAAA0                AD0DDDDDDDDDD0D0";
PCG2 "7AAAAAAAA07AAAA0                0000000000000000                ADDDDAAAAADDDDD0";
PCG2 "7AAAAAAAA070AAA0                AAA0AAAAAAA0AAAA                ADDDAA000AADDDD0";
PCG2 "7AAAAAAAA0A0000A                AAA0AAAAAAA0AAAA                ADDDAA0DDAA0DDD0";
PCG2 "7AAAAAAAA0777770                AAA0AAAAAAA0AAAA                ADDDAA0DDAA0DDD0";
PCG2 "7AAAAAAAA07AAAA0                0000000000000000                ADDDD00DAAA0DDD0";
PCG2 "7AAAAAAAA07AAAA0                AAAAAAA0AAAAAAA0                ADDDDDDAA000DDD0";
PCG2 "7AAAAAAAA07AAAA0                AAAAAAA0AAAAAAA0                ADDDDDDAA0DDDDD0";
PCG2 "00AAAAAA07AAAAA0                AAAAAAA0AAAAAAA0                ADDDDDDD00DDDDD0";
PCG2 "7700AAAA07AAAAA0                0000000000000000                ADDDDDDAADDDDDD0";
PCG2 "7A7700007AAAAAA0                AAA0AAAAAAA0AAAA                ADDDDDDAA0DDDDD0";
PCG2 "7AAA77707AAAAAA0                AAA0AAAAAAA0AAAA                AD0DDDDD00DDD0D0";
PCG2 "7AAAAAA07AAAAA00                AAA0AAAAAAA0AAAA                ADDDDDDDDDDDDDD0";
PCG2 "A000000A7000000A                0000000000000000                0000000000000000";

PCG3 "        ";
PCG3 "        ";
PCG3 "  CECEC ";
PCG3 "        ";
PCG3 "        ";
PCG3 "        ";
PCG3 "AAAAAAAA";
PCG3 "AAAAAAAA";

https://essen.osask.jp/files/pic20230213a.png


2023.02.14 Tue #1


2023.02.14 Tue #2


2023.02.15 Wed #1


2023.02.15 Wed #2


2023.02.16 Thu #1

AInt fght[384] = {
    0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,
    0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,
    0,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,0,
    0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,
    0,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,
    0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,
    0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };

AInt invd[512] = {
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
    0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,
    0,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,0,
    0,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,0,
    0,1,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,0,
    0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
    0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
    0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,
    0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
    0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
    0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,
    0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };

int inv[192], score, pnt, mwt0, fx, idir, wunit, ix, iy, invlin, lx = 0, ly, lwt, mwt, high = 0;
AWin *w = aOpenWin(324, 228, "invader");
for (i = 0; i < 384; i++) { fght[i] = fght[i] * 0x00ffff; }
for (i = 0; i < 512; i++) { invd[i] = invd[i] * 0x00ff00; }
restart:
score = 0; pnt = 1; mwt0 = 20; fx = 18;
nxtinv:
ix = 7; iy = 1; invlin = 5; ly = 0; lwt = 0; mwt = mwt0; idir = 1; wunit = 1024;
for (i = 0; i < 6; i++) {
    for (j = 0; j < 26; j++) {
        inv[i * 32 + j] = j % 5; }}
for(;;) {
    // 表示.
    aFillRect(w, 324, 228, 0, 0, 0x000000); aBitBlt(w, 24, 16, fx * 8 + 2, 13 * 16 + 2, fght);
    aGrPrintf(w, 34, 2, 0xffffff, 0x000000, "SCORE:%06d       HIGH:%06d", score, high);
    for (i = 0; i < 6; i++) {
        for (j = 0; j < 26; j++) {
            if (inv[i * 32 + j] == 1) {
                aBitBlt(w, 32, 16, (ix + j) * 8 + 2, (iy + i) * 16 + 2, invd); }}}
    if (ly != 0) {
        aFillRect(w, 2, 14, lx * 8 + 5, ly * 16 + 3, 0xffff00); }

    // インベーダ全滅判定.
    for (;;) {
        for (i = 0; i < 26; i++) {
            if (inv[invlin * 32 + i] != 0) goto skip0; }
        invlin = invlin - 1;
        if (invlin < 0) {
            mwt0 = mwt0 - mwt0 / 3; aWait(1024); goto nxtinv; }}
skip0:
    // wait処理.
    aWait(wunit); wunit = 40; lwt = lwt - 1;

    // キー入力.
    for (j = 0;;) { // キーバッファが空になるまで繰り返す.
        i = aInkey(w, 1);
        if (i == AWinKey_Esc || AWin_isClose(w)) goto end;
        if (i == 0) break;
        j = aMoveDx(i);
        if ((i == AWinKey_Up || i == 32) && lwt <= 0) {
            lwt = 15; lx = fx + 1; ly = 13; }}

    // 自機の移動.
    fx = aSaturateInt(fx + j, 0, 37);

    // レーザ移動.
    if (ly > 0) {
        ly = ly - 1;
        if (ly == 0) {
            pnt = aMaxInt(pnt - 10, 1); }}

    // あたり判定.
    j = lx - ix; k = ly - iy;
    if (0 <= k && k <= 5 && 0 <= j && j <= 25) {
        i = inv[k * 32 + j];
        if (i > 0) {
            ly = 0; j = j - i;
            for (i = 0; i < 6; i++) {
                inv[k * 32 + j + i] = 0; }
            score = score + pnt; pnt++; high = aMaxInt(score, high); }}

    // インベーダ移動.
    if (mwt > 0) {
        mwt = mwt - 1;
    } else {
        mwt = mwt0; ix = ix + idir;
        if (0 <= ix && ix <= 14) continue;
        if (iy + invlin == 12) {
            aGrPrintf(w, 122, 98, 0xff0000, 0x000000, "GAME OVER");
            for (;;) {
                aWait(128); i = aInkey(w, 1);
                if (i == AWinKey_Enter) goto restart;
                if (i == AWinKey_Esc) goto end; }}
        idir = - idir; iy++; ix = ix + idir; }}
end:
AWin_close(w);

https://essen.osask.jp/files/pic20230216a.png


2023.02.16 Thu #2


2023.02.17 Fri #1


2023.02.17 Fri #2


2023.02.19 Sun #1

こめんと欄


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS