CANVAS 40,30,"ROCKET"; ← ゲーム画面を作ります。よこ40マス、たて30マスの大きさです。
HI=1;
FOR;
FOR ST=1,9999;
HI=MAX(HI,ST);
CLS@ 0;
PRINT@ 0,0,7,0,"STAGE:%2d HIGH:%2d",ST,HI;
LOOP 21;
R=ST*3;
X=RND(620-R);
Y=RND(460-R)+20+R;
FILLOVALCENTER@@ RF,X,Y,R,R,RND(6)+1;
NEXT;
FILLRECT@@ RF,80,40,280,228,7;
X=630; Y=470; VX=0; VY= -20;
FOR;
C=GETPIX@@(RF,X,Y);
CHARSAVE@@ RF,X-8,Y-8,7,15,-1;
IF C==0XFFFFFF BREAK;
IF Y<16 OR 479<Y OR C!=0 GOTO CRASH;
I=INKEY@WRC(200);
IF I==32 THEN VY-=9; FI;
VX+=XMOVE(I); VY++;
X=(X+VX+640)%640; Y+=VY;
NEXT;
PRINT@ 18,15,0,7," CLEAR!";
WAIT 3000;
NEXT;
CRASH:
Y=MINMAX(Y,16,479);
FOR I=0,3; R=I*5+10; DRAWOVALCENTER@@ RF,X,Y,R,R,4; NEXT;
PRINT@ 18,15,4,7," CRASH!";
WAITKEY@ 10;
NEXT;
| 0:黒 | 1:青 | 2:みどり | 3:水色 | 4:赤 | 5:むらさき | 6:黄色 | 7:白 |
| 0:空白 | 1:四角 | 2:丸 | 3:バツ | 4:よこぼう | 5:たてぼう | 6:顔マーク | 7:ひしがた | 8:ななめせん | 9:ななめせん |
hlx>run rocket.txt
#include <acl.c>
void aMain()
{
int hi = 1, st, x, y, vx, vy, r, i, c;
AWindow *w = aOpenWinEx(40, 30, "ROCKET", 0);
for (;;) {
for (st = 1;; st++) {
hi = aMaxInt(hi, st);
aCls(w, 0);
aGrPrintf(w, 0, 0, 7, 0, "STAGE:%2d HIGH:%2d", st, hi);
for (i = 0; i < 21; i++) {
r = st * 3;
x = aRnd(620 - r);
y = aRnd(460 - r) + 20 + r;
aFillOvalCentOpt(w, AOPT_Rf, x, y, r, r, aRnd(6) + 1);
}
aFillRectOpt(w, AOPT_Rf, 80, 40, 280, 228, 7);
x = 630; y = 470; vx = 0; vy = -20;
for (;;) {
c = aGetPixOpt(w, AOPT_Rf, x, y);
aEchSavOpt(w, AOPT_Rf, x - 8, y - 8, 7, 15, -1);
if (c == 0xffffff) break;
if (y < 16 || 479 < y || c != 0x000000) goto crash;
i = aInkey_waitRC(w, 200);
if (i == 32) { vy -= 9; }
vx += aMoveDx(i); vy++;
x = (x + vx + 640) % 640; y += vy;
}
aGrPrintf(w, 18, 15, 0, 7, " CLEAR!");
aWait(3000);
}
crash:
y = aSaturateInt(y, 16, 479);
for (i = 0; i < 3; i++) { r = i * 5 + 10; aDrawOvalCentOpt(w, AOPT_Rf, x, y, r, r, 4); }
aGrPrintf(w, 18, 15, 4, 7, " CRASH!");
aWaitKey(w, AKEY_ENTER);
}
}
hlx>run rocket.c
| コメント | お名前 | NameLink | |