a23_usm005
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* a23_useSelfMade #5
-(by [[K]], 2023.02.09)
--親ページ: [[a23_useSelfMade]]
** 2023.02.09 Thu #1
-このプロジェクトに今必要な開発: たぶんKeyValueStore的な...
-このプロジェクトに今必要な作業: ここまでの成果をわかり...
-この二つを比較したら、たぶん成果まとめのほうが対外的には...
-まあまとめたら何か気づくこともあるかもしれないから、自分...
-[追記] [[a23_ec001]]にまとめができましたー。
~
** 2023.02.09 Thu #2
-「$」で始まるシェルコマンドを用意したのは本当に良かった...
-当たり前だけどシェルにできることなら何でもできる。それだ...
-これも当たり前だけど、このシェルコマンドが実現できたのは...
~
** 2023.02.10 Fri #1
-今は「変数を使わない範囲でプログラミングを楽しむ」のはPL...
-それで、PCG(Programmable Character Generator)でドット...
~
** 2023.02.10 Fri #2
-PLAYで演奏中はCtrl-Cが利かなくなることを発見。これはでき...
~
** 2023.02.11 Sat #1
-一度は実装したけど結局は廃止した機能
--[1]行末のセミコロンを省略できる仕様にしていたけど(=言...
--[2]かつてはeasy-Cのワンライナーモードは行頭にセミコロン...
~
** 2023.02.13 Mon #1
-小学1年生(女児)にひきつづき、小学3年生(女児)もeasy-C...
~
** 2023.02.13 Mon #2
-PCG命令をつけてみました。小学生が楽しむための機能です。
-mario.c[31行]
WINDOW 512,512;
PCG0 0,0,0x7799FF;
PCG0 5,4,4;
PCG1 "DD6622 FFBBAA 0x7799FF FFBB33";
PCG2 "A777777770A7777A BBBBBBBBBBBBBBBB ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 0000000000000000 ...
PCG2 "7AAAAAAAA070AAA0 AAA0AAAAAAA0AAAA ...
PCG2 "7AAAAAAAA0A0000A AAA0AAAAAAA0AAAA ...
PCG2 "7AAAAAAAA0777770 AAA0AAAAAAA0AAAA ...
PCG2 "7AAAAAAAA07AAAA0 0000000000000000 ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "00AAAAAA07AAAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7700AAAA07AAAAA0 0000000000000000 ...
PCG2 "7A7700007AAAAAA0 AAA0AAAAAAA0AAAA ...
PCG2 "7AAA77707AAAAAA0 AAA0AAAAAAA0AAAA ...
PCG2 "7AAAAAA07AAAAA00 AAA0AAAAAAA0AAAA ...
PCG2 "A000000A7000000A 0000000000000000 ...
PCG3 " ";
PCG3 " ";
PCG3 " CECEC ";
PCG3 " ";
PCG3 " ";
PCG3 " ";
PCG3 "AAAAAAAA";
PCG3 "AAAAAAAA";
https://essen.osask.jp/files/pic20230213a.png
-PCG命令を作ることと、このサンプルを作ることで、疲れ果て...
--インターネットでゲーム画面を検索して拡大して真似してみ...
~
** 2023.02.14 Tue #1
-PCG2命令で複数キャラクタを同時に定義するとき:
// 今まで.
PCG2 "A777777770A7777A BBBBBBBBBBBBBBBB ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 0000000000000000 ...
(後略)
// こっちのほうがいいんじゃないか?
PCG2 "A777777770A7777A" "BBBBBBBBBBBBBBBB" "CAAAAAAAAA...
PCG2 "7AAAAAAAA07AAAA0" "AAAAAAA0AAAAAAA0" "ADDDDDDDDD...
PCG2 "7AAAAAAAA07AAAA0" "AAAAAAA0AAAAAAA0" "AD0DDDDDDD...
PCG2 "7AAAAAAAA07AAAA0" "0000000000000000" "ADDDDAAAAA...
(後略)
-これを実現するには・・・手っ取り早いのは(これ重要!)le...
~
** 2023.02.14 Tue #2
-よし、できました!
HL9>prs "abc" "def"
abcdef
HL9>$type test08.c
prs "hello, "
"world"
"\n"
HL9>run test08.c
hello, world
HL9>
~
** 2023.02.15 Wed #1
-小学1年生は今日もPLAY文を使って、演奏プログラムを書いて...
~
** 2023.02.15 Wed #2
-今日はinvader.cをacl1に移植します。
-できました。明日はHL9側を対応させます。
~
** 2023.02.16 Thu #1
-インベーダゲームができました。runでも!runでもどちらでも...
-invader.c[112行]
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,1,1,1,1,1,1,1,1,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,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,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,...
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,...
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,...
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,...
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,...
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,...
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,...
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,...
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,0,0,0,0,0,0,0,0,0,0,0,0,1,1,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,...
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,...
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;...
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, 2...
aGrPrintf(w, 34, 2, 0xffffff, 0x000000, "SCORE:%06d ...
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...
if (ly != 0) {
aFillRect(w, 2, 14, lx * 8 + 5, ly * 16 + 3, 0xf...
// インベーダ全滅判定.
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 nx...
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(s...
// インベーダ移動.
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, "G...
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
-[Q]easy-Cで作ったプログラムから実行ファイルを作りたいで...
-[A]な、なるほど・・・。それならまずは HL-9 の !run で実...
-なお過去に1度でも!runしたことのあるものは、コンパイルキ...
~
** 2023.02.17 Fri #1
-今日はちょっとお休み。
~
** 2023.02.17 Fri #2
-と言いつつ、ブロック崩しゲームを準備中。
~
** 2023.02.19 Sun #1
-小学1年生に、タイのついた曲をPLAYで演奏したいといわれて...
-→たぶんできた。
-→不十分だった。だからさらに直した。
** 2023.02.20 Mon #1
-ブロック崩しゲームをeasy-Cでも動くようにしました。
-blocks.c[95行]
static AInt32 col[6] = { 0xbf0000, 0xbfbf00, 0x00bf00, 0...
AInt32 high = 0, score, bx, by, vx, vy, mx, my, ml, s100...
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:%0...
blocks = 0; bx = 19; by = 20; vx = 1; vy = -1; mx = ...
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 ...
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,...
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 +...
aFillRect(win, 1, 16, j * 16 + 31, (4 + i) *...
aFillRect(win, 32, 1, j * 16, (4 + i) * 16, ...
aFillRect(win, 1, 16, j * 16, (4 + i) * 16, ...
blocks++; }}
aFillOval(win, 16, 16, bx * 16, by * 16, 0xffffff);
aFillRect(win, ml * 16, 16, mx * 16, my * 16, 0xffff...
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, "SCOR...
// 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...
score = score + (29 - by); }
if (c[bx + vx + by * 40] >= 3) {
i = bx + vx; j = by; score = score + c[i + j...
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 * ...
if (c[bx + (by + vy) * 40] >= 3) {
i = bx; j = by + vy; score = score + c[i + j...
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 * ...
if (c[bx + vx + (by + vy) * 40] >= 3) {
i = bx + vx; j = by + vy; score = score + c[...
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...
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 = - v...
if (c[bx + vx + (by + vy) * 40] == 0) {
bx = bx + vx; by = by + vy; }
aFillOval(win, 16, 16, bx * 16, by * 16, 0xfffff...
if (by >= 29) break;
if (score / 100 != s100 && ml > 4) {
aFillRect(win, ml * 16, 16, mx * 16, my * 16...
for (i = 0; i < ml; i++) { c[mx + i + my * 4...
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] ...
j = k = 0;
for (;;) {
i = aInkey(win, 1);
if (i == 0) break;
if (i == AWinKey_Esc || AWin_isClose(win)) g...
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, 0x...
for (i = 0; i < ml; i++) { c[mx + i + my * 40] =...
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:
AWin_close(win);
https://essen.osask.jp/files/pic20230220a.png
// persistent-C
//kvs, 言語は型を知るべき, 言語はオブジェクトを知るべき
//winのクローズ
* こめんと欄
-掲示板をご利用ください。→[[a23_bbs]]
終了行:
* a23_useSelfMade #5
-(by [[K]], 2023.02.09)
--親ページ: [[a23_useSelfMade]]
** 2023.02.09 Thu #1
-このプロジェクトに今必要な開発: たぶんKeyValueStore的な...
-このプロジェクトに今必要な作業: ここまでの成果をわかり...
-この二つを比較したら、たぶん成果まとめのほうが対外的には...
-まあまとめたら何か気づくこともあるかもしれないから、自分...
-[追記] [[a23_ec001]]にまとめができましたー。
~
** 2023.02.09 Thu #2
-「$」で始まるシェルコマンドを用意したのは本当に良かった...
-当たり前だけどシェルにできることなら何でもできる。それだ...
-これも当たり前だけど、このシェルコマンドが実現できたのは...
~
** 2023.02.10 Fri #1
-今は「変数を使わない範囲でプログラミングを楽しむ」のはPL...
-それで、PCG(Programmable Character Generator)でドット...
~
** 2023.02.10 Fri #2
-PLAYで演奏中はCtrl-Cが利かなくなることを発見。これはでき...
~
** 2023.02.11 Sat #1
-一度は実装したけど結局は廃止した機能
--[1]行末のセミコロンを省略できる仕様にしていたけど(=言...
--[2]かつてはeasy-Cのワンライナーモードは行頭にセミコロン...
~
** 2023.02.13 Mon #1
-小学1年生(女児)にひきつづき、小学3年生(女児)もeasy-C...
~
** 2023.02.13 Mon #2
-PCG命令をつけてみました。小学生が楽しむための機能です。
-mario.c[31行]
WINDOW 512,512;
PCG0 0,0,0x7799FF;
PCG0 5,4,4;
PCG1 "DD6622 FFBBAA 0x7799FF FFBB33";
PCG2 "A777777770A7777A BBBBBBBBBBBBBBBB ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 0000000000000000 ...
PCG2 "7AAAAAAAA070AAA0 AAA0AAAAAAA0AAAA ...
PCG2 "7AAAAAAAA0A0000A AAA0AAAAAAA0AAAA ...
PCG2 "7AAAAAAAA0777770 AAA0AAAAAAA0AAAA ...
PCG2 "7AAAAAAAA07AAAA0 0000000000000000 ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "00AAAAAA07AAAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7700AAAA07AAAAA0 0000000000000000 ...
PCG2 "7A7700007AAAAAA0 AAA0AAAAAAA0AAAA ...
PCG2 "7AAA77707AAAAAA0 AAA0AAAAAAA0AAAA ...
PCG2 "7AAAAAA07AAAAA00 AAA0AAAAAAA0AAAA ...
PCG2 "A000000A7000000A 0000000000000000 ...
PCG3 " ";
PCG3 " ";
PCG3 " CECEC ";
PCG3 " ";
PCG3 " ";
PCG3 " ";
PCG3 "AAAAAAAA";
PCG3 "AAAAAAAA";
https://essen.osask.jp/files/pic20230213a.png
-PCG命令を作ることと、このサンプルを作ることで、疲れ果て...
--インターネットでゲーム画面を検索して拡大して真似してみ...
~
** 2023.02.14 Tue #1
-PCG2命令で複数キャラクタを同時に定義するとき:
// 今まで.
PCG2 "A777777770A7777A BBBBBBBBBBBBBBBB ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 AAAAAAA0AAAAAAA0 ...
PCG2 "7AAAAAAAA07AAAA0 0000000000000000 ...
(後略)
// こっちのほうがいいんじゃないか?
PCG2 "A777777770A7777A" "BBBBBBBBBBBBBBBB" "CAAAAAAAAA...
PCG2 "7AAAAAAAA07AAAA0" "AAAAAAA0AAAAAAA0" "ADDDDDDDDD...
PCG2 "7AAAAAAAA07AAAA0" "AAAAAAA0AAAAAAA0" "AD0DDDDDDD...
PCG2 "7AAAAAAAA07AAAA0" "0000000000000000" "ADDDDAAAAA...
(後略)
-これを実現するには・・・手っ取り早いのは(これ重要!)le...
~
** 2023.02.14 Tue #2
-よし、できました!
HL9>prs "abc" "def"
abcdef
HL9>$type test08.c
prs "hello, "
"world"
"\n"
HL9>run test08.c
hello, world
HL9>
~
** 2023.02.15 Wed #1
-小学1年生は今日もPLAY文を使って、演奏プログラムを書いて...
~
** 2023.02.15 Wed #2
-今日はinvader.cをacl1に移植します。
-できました。明日はHL9側を対応させます。
~
** 2023.02.16 Thu #1
-インベーダゲームができました。runでも!runでもどちらでも...
-invader.c[112行]
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,1,1,1,1,1,1,1,1,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,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,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,...
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,...
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,...
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,...
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,...
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,...
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,...
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,...
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,0,0,0,0,0,0,0,0,0,0,0,0,1,1,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,...
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,...
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;...
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, 2...
aGrPrintf(w, 34, 2, 0xffffff, 0x000000, "SCORE:%06d ...
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...
if (ly != 0) {
aFillRect(w, 2, 14, lx * 8 + 5, ly * 16 + 3, 0xf...
// インベーダ全滅判定.
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 nx...
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(s...
// インベーダ移動.
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, "G...
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
-[Q]easy-Cで作ったプログラムから実行ファイルを作りたいで...
-[A]な、なるほど・・・。それならまずは HL-9 の !run で実...
-なお過去に1度でも!runしたことのあるものは、コンパイルキ...
~
** 2023.02.17 Fri #1
-今日はちょっとお休み。
~
** 2023.02.17 Fri #2
-と言いつつ、ブロック崩しゲームを準備中。
~
** 2023.02.19 Sun #1
-小学1年生に、タイのついた曲をPLAYで演奏したいといわれて...
-→たぶんできた。
-→不十分だった。だからさらに直した。
** 2023.02.20 Mon #1
-ブロック崩しゲームをeasy-Cでも動くようにしました。
-blocks.c[95行]
static AInt32 col[6] = { 0xbf0000, 0xbfbf00, 0x00bf00, 0...
AInt32 high = 0, score, bx, by, vx, vy, mx, my, ml, s100...
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:%0...
blocks = 0; bx = 19; by = 20; vx = 1; vy = -1; mx = ...
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 ...
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,...
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 +...
aFillRect(win, 1, 16, j * 16 + 31, (4 + i) *...
aFillRect(win, 32, 1, j * 16, (4 + i) * 16, ...
aFillRect(win, 1, 16, j * 16, (4 + i) * 16, ...
blocks++; }}
aFillOval(win, 16, 16, bx * 16, by * 16, 0xffffff);
aFillRect(win, ml * 16, 16, mx * 16, my * 16, 0xffff...
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, "SCOR...
// 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...
score = score + (29 - by); }
if (c[bx + vx + by * 40] >= 3) {
i = bx + vx; j = by; score = score + c[i + j...
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 * ...
if (c[bx + (by + vy) * 40] >= 3) {
i = bx; j = by + vy; score = score + c[i + j...
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 * ...
if (c[bx + vx + (by + vy) * 40] >= 3) {
i = bx + vx; j = by + vy; score = score + c[...
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...
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 = - v...
if (c[bx + vx + (by + vy) * 40] == 0) {
bx = bx + vx; by = by + vy; }
aFillOval(win, 16, 16, bx * 16, by * 16, 0xfffff...
if (by >= 29) break;
if (score / 100 != s100 && ml > 4) {
aFillRect(win, ml * 16, 16, mx * 16, my * 16...
for (i = 0; i < ml; i++) { c[mx + i + my * 4...
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] ...
j = k = 0;
for (;;) {
i = aInkey(win, 1);
if (i == 0) break;
if (i == AWinKey_Esc || AWin_isClose(win)) g...
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, 0x...
for (i = 0; i < ml; i++) { c[mx + i + my * 40] =...
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:
AWin_close(win);
https://essen.osask.jp/files/pic20230220a.png
// persistent-C
//kvs, 言語は型を知るべき, 言語はオブジェクトを知るべき
//winのクローズ
* こめんと欄
-掲示板をご利用ください。→[[a23_bbs]]
ページ名: