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

2023.02.20 Mon #1

static AInt32 col[6] = { 0xbf0000, 0xbfbf00, 0x00bf00, 0x00bfbf, 0x0000bf, 0xbf00bf };
AInt32 high = 0, score, bx, by, vx, vy, mx, my, ml, s100, blocks;
char c[40 * 30], d, ph;
AWin *win = aOpenWin(640, 480, "blocks & ball");
for (;;) {
    ml = 10; score = 0;
reload:
    aFillRect(win, 640, 480, 0, 0, 0);
    aGrPrintf(win, 160, 0, 0xffffff, 0x000000, "SCORE:%05d     HIGH:%05d", score, high);
    blocks = 0; bx = 19; by = 20; vx = 1; vy = -1; mx = 15; my = 29;
    for (i = 0; i < 40 * 30; i++) { c[i] = 0; }
    for (i = 0; i < 40; i++) { c[i + 1 * 40] = 1; }
    aFillRect(win, 640, 16, 0, 16, 0xffffff);
    for (j = 2; j < 30; j++) { c[0 + j * 40] = c[39 + j * 40] = 1; }
    aFillRect(win, 16, 448,   0, 32, 0xffffff);
    aFillRect(win, 16, 448, 624, 32, 0xffffff);
    for (i = 0; i < 6; i++) {
        aFillRect(win, 608-128, 16, 16+64, (4 + i) * 16, col[i]);
        for (j = 5; j < 34; j = j + 2) {
            c[(j + 0) + (4 + i) * 40] = 8 - i;
            c[(j + 1) + (4 + i) * 40] = 8 - i;
            aFillRect(win, 32, 1, j * 16, (4 + i) * 16 + 15, 0);
            aFillRect(win, 1, 16, j * 16 + 31, (4 + i) * 16, 0);
            aFillRect(win, 32, 1, j * 16, (4 + i) * 16, 0xffffff);
            aFillRect(win, 1, 16, j * 16, (4 + i) * 16, 0xffffff);
            blocks++; }}
    aFillOval(win, 16, 16, bx * 16, by * 16, 0xffffff);
    aFillRect(win, ml * 16, 16, mx * 16, my * 16, 0xffffff);
    aWait(500);

    for (ph = 0;; ph = ph ^ 1) {
        s100 = score / 100;
        if (high < score) { high = score; }
        aFillRect(win, 640, 16, 0, 0, 0x000000);
        aGrPrintf(win, 160, 0, 0xffffff, 0x000000, "SCORE:%05d     HIGH:%05d", score, high);

        // ball
        if (ph != 0) goto skip;
        aFillRect(win, 16, 16, bx * 16, by * 16, 0);
        c[bx + by * 40] = 0;
        if (c[bx + vx + by * 40] == 2 || c[bx + (by + vy) * 40] == 2 || c[bx + vx + (by + vy) * 40] == 2) {
            score = score + (29 - by); }
        if (c[bx + vx + by * 40] >= 3) {
            i = bx + vx; j = by; score = score + c[i + j * 40] - 2;
            if (i % 2 == 0) { i = i - 1; }
            aFillRect(win, 32, 16, i * 16, j * 16, 0);
            vx = - vx; c[i + j * 40] = 0; c[i + 1 + j * 40] = 0; blocks = blocks - 1; }
        if (c[bx + (by + vy) * 40] >= 3) {
            i = bx; j = by + vy; score = score + c[i + j * 40] - 2;
            if (i % 2 == 0) { i = i - 1; }
            aFillRect(win, 32, 16, i * 16, j * 16, 0);
            vy = - vy; c[i + j * 40] = 0; c[i + 1 + j * 40] = 0; blocks = blocks - 1; }
        if (c[bx + vx + (by + vy) * 40] >= 3) {
            i = bx + vx; j = by + vy; score = score + c[i + j * 40] - 2;
            if (i % 2 == 0) { i = i - 1; }
            aFillRect(win, 32, 16, i * 16, j * 16, 0);
            vx = - vx; vy = - vy; c[i + j * 40] = 0; c[i + 1 + j * 40] = 0; blocks = blocks - 1; }
        if (c[bx + vx + by * 40] != 0) { vx = - vx; }
        if (c[bx + (by + vy) * 40] != 0) { vy = - vy; }
        if (c[bx + vx + (by + vy) * 40] != 0) { vx = - vx; vy = - vy; }
        if (c[bx + vx + (by + vy) * 40] == 0) {
            bx = bx + vx; by = by + vy; }
        aFillOval(win, 16, 16, bx * 16, by * 16, 0xffffff); c[bx + by * 40] = 1;
        if (by >= 29) break;
        if (score / 100 != s100 && ml > 4) {
            aFillRect(win, ml * 16, 16, mx * 16, my * 16, 0);
            for (i = 0; i < ml; i++) { c[mx + i + my * 40] = 0; }
            ml = ml - 1; }
skip:
        // pad
        aFillRect(win, ml * 16, 16, mx * 16, my * 16, 0);
         for (i = 0; i < ml; i++) { c[mx + i + my * 40] = 0; }
        j = k = 0;
        for (;;) {
            i = aInkey(win, 1);
            if (i == 0) break;
            if (i == AWinKey_Esc || AWin_isClose(win)) goto end;
            j = aMoveDx(i); k = aMoveDy(i);
            if (my >= 29 && k == 1) { k = 0; }
        }
        d = 0;
        for (i = 0; i < ml; i++) {
            d = d + c[mx + j + i + (my + k) * 40]; }
        if (d == 0) { mx = mx + j; my = my + k; }
        aFillRect(win, ml * 16, 16, mx * 16, my * 16, 0xffffff);
        for (i = 0; i < ml; i++) { c[mx + i + my * 40] = 2; }

        aWait(50);
        if (blocks == 0) goto reload; }
    for (;;) {
        aWait(128); i = aInkey(win, 1);
        if (i == AWinKey_Enter) break;
        if (i == AWinKey_Esc || AWin_isClose(win)) goto end; }}
end:
AWin_close(win);

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

こめんと欄


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