a21_edu07
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* 初心者向けプログラミング体験ワークショップ#7
-(by [[K]], 2021.12.08)
** (0)
-今回紹介するのは、「ブロックくずし」です。44行で書けます。
-このページは[[「初心者向けプログラミング体験ワークショッ...
** (1) ストーリー & ルール
-みなさんは、ブロックくずしというゲームを知っていますか?...
-でもなぜボールを使ってブロックをこわすことになったのか、...
----
| http://k.osask.jp/files/pic20211209a.png ...
|ゲーム開始直後に、カーソルの左を一度だけ押すと、動かなく...
-自分はカーソルキーの上下左右でぼうを動かします。ボールが...
-ゲームオーバーになった時の再ゲームは Enterキー です。
-ゲームをやめたくなったら、いつでも ESCキー を押せば終了...
-なお、HLXでは現在開いているゲームウィンドウよりも大きな...
** (2-1) HLX-BASICでのプログラム(44行)
-プログラム中に日本語で説明を書き込んでいますが、その部分...
CANVAS 32,24,"BLOCKS"; ←...
CHARBOX@ 32,23,0,1,1,7,0; ←...
HI=0; ←...
FOR; ←...
SC=0; PL=6; ←...
FOR; ←...
CHARBOX@ 30,22,1,2,0,0,0; ←...
FOR Y=4,10; CHARBOX@ 30,1,1,Y,1,10-Y,0; NEXT; ←...
BL=180; PX=13; PY=22; BX=20; BY=21; VX=1; VY= -1; ←...
FOR T=0,999999; ←...
CHARBOX@ PL,1,PX,PY,1,7,0; ←...
IF T%2==0 THEN ←...
FOR I=1,4; ←...
X=BX; Y=BY; ←...
IF I==1 OR I==3 THEN X+=VX; FI; ←...
IF I==2 OR I==3 THEN Y+=VY; FI;
IF GETCH@(X,Y)!=0 THEN ←...
IF X!=BX THEN VX= -VX; FI; ←...
IF Y!=BY THEN VY= -VY; FI;
IF GETCHCOL@(X,Y)!=0XFFFFFF THEN ←...
SC+=10-Y; BL--; ←...
CHAR@ X,Y,0,0,0; ←...
FI;
FI;
NEXT;
IF GETCH@(BX+VX,BY+VY)==0 THEN BX+=VX; BY+=VY; F...
FI;
CHAR@ BX,BY,2,7,0; ←...
HI=MAX(HI,SC); ←...
PRINT@ 8,0,7,0,"SCORE:%05d HIGH:%05d",SC,HI; ←...
IF BY==23 GOTO OVER; ←...
IF BL==0 BREAK; ←...
I=INKEY@WRC(50); ←...
CHARBOX@ PL,1,PX,PY,0,0,0; ←...
X=PX+XMOVE(I); ←...
Y=PY+YMOVE(I);
IF Y<=23 AND GETCHBOX@(PL,1,X,Y)==0 THEN PX=X; PY=...
CHAR@ BX,BY,0,0,0; ←...
NEXT;
WAIT 3000; ←...
NEXT;
OVER:
WAITKEY@ 10; ←...
NEXT;
-ほそく説明:
--PRINT@の中の%以降には、数字のゼロや小文字のc、dがありま...
--色番号の表
|0:黒|1:青|2:みどり|3:水色|4:赤|5:むらさき|6:黄色|7:白|
--色を2つの数字で表すときは、1つ目の数がキャラクターの色...
--キャラクターの表示位置は、2つの数字で表します。1つ目が...
---このゲームでは32x24マスを用意しているので、0,0~31,23...
--キャラクター番号の表
|0:空白|1:四角|2:丸|3:バツ|4:よこぼう|5:たてぼう|6:顔マー...
//--RND(6)について: RNDは乱数(らんすう)の命令で、RND(6...
** (2-2) HLX-BASICのプログラムを実行するための方法(大人...
-もしWindowsでHLX-BASICを使うなら、話は簡単です!
-[[a21_hlx003]]のページへ行って、 hlx003c.zip をダウンロ...
-このhlx_x86_win.exeを適当なフィルだ内において、同じフォ...
--入力の際にはまずテキストエディタを開き(メモ帳でもいい...
--キーを見つけられないときは、ほらここにあるよと教えてあ...
--そうすると、「これは全部自分がやった。」という満足感が...
--(何回もやって慣れてきたら、自分でプログラムを読んで入...
-入力が終わったら、先ほどのhlx_x86_win.exeを起動して、そ...
hlx>run blocks.txt
-と入力してください。入力ミスがなければゲームが始まるはず...
-ミスがあった場合は、エラーメッセージを見ながら間違いを探...
-なおゲーム中のキー操作は、ゲーム画面が入力アクティブにな...
-Windows以外のOSの方は、[[a21_hlx003]]のページを見て、ソ...
** (2-3) 改造のポイント
-このゲームは自分で入力したのですから、自分で改造すること...
-まずこのゲームが簡単すぎるという人は少ないでしょう。だか...
-「IF T%2==0 THEN」の2を、3とか4とかに変えれば、ボールが1...
-そのほかの改造としては、「PL=6;」のところを「PL=9;」とか...
-もっと大規模な改造としては、「ボールは白い壁には跳ね返る...
IF GETCH@(X,Y)!=0 THEN
IF GETCHCOL@(X,Y)==0XFFFFFF THEN
IF I==1 OR I==3 THEN VX= -VX; FI;
IF I==2 OR I==3 THEN VY= -VY; FI;
ELSE
SC+=10-Y; BL--;
CHAR@ X,Y,0,0,0;
FI;
FI;
** (3-1) C言語でのプログラム(aclライブラリ利用)(49行)
-内容的に、(2-1)とほぼ一対一で対応しているので、細かい説...
#include <acl.c>
void aMain()
{
int x, y, i, t, px, py, pl, bx, by, vx, vy, bl, sc, hi...
AWindow *w = aOpenWinEx(32, 24, "BLOCKS", 0);
aEchBox(w, 32, 23, 0, 1, 1, 7, 0);
for (;;) {
sc = 0; pl = 6;
for (;;) {
aEchBox(w, 30, 22, 1, 2, 0, 0, 0);
for (y = 4; y < 10; y++) aEchBox(w, 30, 1, 1, y, 1...
bl = 180; px = 13; py = 22; bx = 20; by = 21; vx =...
for (t = 0;; t++) {
aEchBox(w, pl, 1, px, py, 1, 7, 0);
if (t % 2 == 0) {
for (i = 1; i <= 3; i++) {
x = bx; y = by;
if (i == 1 || i == 3) { x += vx; }
if (i == 2 || i == 3) { y += vy; }
if (aGetEch(w, x, y) != 0) {
if (aGetEchCol(w, x, y) != 0xffffff) {
sc += 10 - y; bl--;
aEch(w, x, y, 0, 0, 0);
}
if (x != bx) vx = - vx;
if (y != by) vy = - vy;
}
}
if (aGetEch(w, bx + vx, by + vy) == 0) { bx +=...
}
aEch(w, bx, by, 2, 7, 0);
hi = aMaxInt(hi, sc);
aGrPrintf(w, 8, 0, 7, 0, "Score:%05d High:%05...
if (by == 23) goto over;
if (bl == 0) break;
i = aInkey_waitRC(w, 50);
aEchBox(w, pl, 1, px, py, 0, 0, 0);
x = px + aMoveDx(i);
y = py + aMoveDy(i);
if (y <= 23 && aGetEchBox(w, pl, 1, x, y) == 0) ...
aEch(w, bx, by, 0, 0, 0);
}
aWait(3000);
}
over:
aWaitKey(w, AKEY_ENTER);
}
}
** (3-2) C言語のプログラムを実行するための方法(大人の方...
-このプログラムは、C言語でありながらHLXのサポート範囲内の...
-使い方もほとんど同じで、blocks.cを作って、
hlx>run blocks.c
-とするだけでOKです。
-もし、HLXを使わずに普通のCコンパイラとaclライブラリの組...
-そのほかの操作方法や改造方法などは、(2-2)、(2-3)と同等な...
* こめんと欄
#comment
終了行:
* 初心者向けプログラミング体験ワークショップ#7
-(by [[K]], 2021.12.08)
** (0)
-今回紹介するのは、「ブロックくずし」です。44行で書けます。
-このページは[[「初心者向けプログラミング体験ワークショッ...
** (1) ストーリー & ルール
-みなさんは、ブロックくずしというゲームを知っていますか?...
-でもなぜボールを使ってブロックをこわすことになったのか、...
----
| http://k.osask.jp/files/pic20211209a.png ...
|ゲーム開始直後に、カーソルの左を一度だけ押すと、動かなく...
-自分はカーソルキーの上下左右でぼうを動かします。ボールが...
-ゲームオーバーになった時の再ゲームは Enterキー です。
-ゲームをやめたくなったら、いつでも ESCキー を押せば終了...
-なお、HLXでは現在開いているゲームウィンドウよりも大きな...
** (2-1) HLX-BASICでのプログラム(44行)
-プログラム中に日本語で説明を書き込んでいますが、その部分...
CANVAS 32,24,"BLOCKS"; ←...
CHARBOX@ 32,23,0,1,1,7,0; ←...
HI=0; ←...
FOR; ←...
SC=0; PL=6; ←...
FOR; ←...
CHARBOX@ 30,22,1,2,0,0,0; ←...
FOR Y=4,10; CHARBOX@ 30,1,1,Y,1,10-Y,0; NEXT; ←...
BL=180; PX=13; PY=22; BX=20; BY=21; VX=1; VY= -1; ←...
FOR T=0,999999; ←...
CHARBOX@ PL,1,PX,PY,1,7,0; ←...
IF T%2==0 THEN ←...
FOR I=1,4; ←...
X=BX; Y=BY; ←...
IF I==1 OR I==3 THEN X+=VX; FI; ←...
IF I==2 OR I==3 THEN Y+=VY; FI;
IF GETCH@(X,Y)!=0 THEN ←...
IF X!=BX THEN VX= -VX; FI; ←...
IF Y!=BY THEN VY= -VY; FI;
IF GETCHCOL@(X,Y)!=0XFFFFFF THEN ←...
SC+=10-Y; BL--; ←...
CHAR@ X,Y,0,0,0; ←...
FI;
FI;
NEXT;
IF GETCH@(BX+VX,BY+VY)==0 THEN BX+=VX; BY+=VY; F...
FI;
CHAR@ BX,BY,2,7,0; ←...
HI=MAX(HI,SC); ←...
PRINT@ 8,0,7,0,"SCORE:%05d HIGH:%05d",SC,HI; ←...
IF BY==23 GOTO OVER; ←...
IF BL==0 BREAK; ←...
I=INKEY@WRC(50); ←...
CHARBOX@ PL,1,PX,PY,0,0,0; ←...
X=PX+XMOVE(I); ←...
Y=PY+YMOVE(I);
IF Y<=23 AND GETCHBOX@(PL,1,X,Y)==0 THEN PX=X; PY=...
CHAR@ BX,BY,0,0,0; ←...
NEXT;
WAIT 3000; ←...
NEXT;
OVER:
WAITKEY@ 10; ←...
NEXT;
-ほそく説明:
--PRINT@の中の%以降には、数字のゼロや小文字のc、dがありま...
--色番号の表
|0:黒|1:青|2:みどり|3:水色|4:赤|5:むらさき|6:黄色|7:白|
--色を2つの数字で表すときは、1つ目の数がキャラクターの色...
--キャラクターの表示位置は、2つの数字で表します。1つ目が...
---このゲームでは32x24マスを用意しているので、0,0~31,23...
--キャラクター番号の表
|0:空白|1:四角|2:丸|3:バツ|4:よこぼう|5:たてぼう|6:顔マー...
//--RND(6)について: RNDは乱数(らんすう)の命令で、RND(6...
** (2-2) HLX-BASICのプログラムを実行するための方法(大人...
-もしWindowsでHLX-BASICを使うなら、話は簡単です!
-[[a21_hlx003]]のページへ行って、 hlx003c.zip をダウンロ...
-このhlx_x86_win.exeを適当なフィルだ内において、同じフォ...
--入力の際にはまずテキストエディタを開き(メモ帳でもいい...
--キーを見つけられないときは、ほらここにあるよと教えてあ...
--そうすると、「これは全部自分がやった。」という満足感が...
--(何回もやって慣れてきたら、自分でプログラムを読んで入...
-入力が終わったら、先ほどのhlx_x86_win.exeを起動して、そ...
hlx>run blocks.txt
-と入力してください。入力ミスがなければゲームが始まるはず...
-ミスがあった場合は、エラーメッセージを見ながら間違いを探...
-なおゲーム中のキー操作は、ゲーム画面が入力アクティブにな...
-Windows以外のOSの方は、[[a21_hlx003]]のページを見て、ソ...
** (2-3) 改造のポイント
-このゲームは自分で入力したのですから、自分で改造すること...
-まずこのゲームが簡単すぎるという人は少ないでしょう。だか...
-「IF T%2==0 THEN」の2を、3とか4とかに変えれば、ボールが1...
-そのほかの改造としては、「PL=6;」のところを「PL=9;」とか...
-もっと大規模な改造としては、「ボールは白い壁には跳ね返る...
IF GETCH@(X,Y)!=0 THEN
IF GETCHCOL@(X,Y)==0XFFFFFF THEN
IF I==1 OR I==3 THEN VX= -VX; FI;
IF I==2 OR I==3 THEN VY= -VY; FI;
ELSE
SC+=10-Y; BL--;
CHAR@ X,Y,0,0,0;
FI;
FI;
** (3-1) C言語でのプログラム(aclライブラリ利用)(49行)
-内容的に、(2-1)とほぼ一対一で対応しているので、細かい説...
#include <acl.c>
void aMain()
{
int x, y, i, t, px, py, pl, bx, by, vx, vy, bl, sc, hi...
AWindow *w = aOpenWinEx(32, 24, "BLOCKS", 0);
aEchBox(w, 32, 23, 0, 1, 1, 7, 0);
for (;;) {
sc = 0; pl = 6;
for (;;) {
aEchBox(w, 30, 22, 1, 2, 0, 0, 0);
for (y = 4; y < 10; y++) aEchBox(w, 30, 1, 1, y, 1...
bl = 180; px = 13; py = 22; bx = 20; by = 21; vx =...
for (t = 0;; t++) {
aEchBox(w, pl, 1, px, py, 1, 7, 0);
if (t % 2 == 0) {
for (i = 1; i <= 3; i++) {
x = bx; y = by;
if (i == 1 || i == 3) { x += vx; }
if (i == 2 || i == 3) { y += vy; }
if (aGetEch(w, x, y) != 0) {
if (aGetEchCol(w, x, y) != 0xffffff) {
sc += 10 - y; bl--;
aEch(w, x, y, 0, 0, 0);
}
if (x != bx) vx = - vx;
if (y != by) vy = - vy;
}
}
if (aGetEch(w, bx + vx, by + vy) == 0) { bx +=...
}
aEch(w, bx, by, 2, 7, 0);
hi = aMaxInt(hi, sc);
aGrPrintf(w, 8, 0, 7, 0, "Score:%05d High:%05...
if (by == 23) goto over;
if (bl == 0) break;
i = aInkey_waitRC(w, 50);
aEchBox(w, pl, 1, px, py, 0, 0, 0);
x = px + aMoveDx(i);
y = py + aMoveDy(i);
if (y <= 23 && aGetEchBox(w, pl, 1, x, y) == 0) ...
aEch(w, bx, by, 0, 0, 0);
}
aWait(3000);
}
over:
aWaitKey(w, AKEY_ENTER);
}
}
** (3-2) C言語のプログラムを実行するための方法(大人の方...
-このプログラムは、C言語でありながらHLXのサポート範囲内の...
-使い方もほとんど同じで、blocks.cを作って、
hlx>run blocks.c
-とするだけでOKです。
-もし、HLXを使わずに普通のCコンパイラとaclライブラリの組...
-そのほかの操作方法や改造方法などは、(2-2)、(2-3)と同等な...
* こめんと欄
#comment
ページ名: