a21_edu03
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* 初心者向けプログラミング体験ワークショップ#3
-(by [[K]], 2021.12.03)
** (0)
-今回紹介するのは、「ハンバーガーキャッチ・ゲーム」です。...
-このページは[[「初心者向けプログラミング体験ワークショッ...
** (1) ストーリー & ルール
-ぼくはときどき近所のハンバーガー屋さんでアルバイトをして...
-ちょうりがかりのおじさんは、ハンバーガー作りがうまくいき...
-おじさんは食べ物をそまつにしているのではなくて、ぼくがう...
----
| http://k.osask.jp/files/pic20211203a.png | http://k....
|こんなゲームです|やった、レベル6もクリアです!|しまった...
-画面の上から黄色のハンバーガーが1つずつ落ちてきます。水...
-ふつう、ハンバーガーキャッチ・ゲームというと、パンや野菜...
-ゲームをやめたくなったら、いつでも ESCキー を押せば終了...
-なお、HLXでは現在開いているゲームウィンドウよりも大きな...
** (2-1) HLX-BASICでのプログラム(30行)
-プログラム中に日本語で説明を書き込んでいますが、その部分...
CANVAS 20,24,"CATCH"; ← ...
HI=0; ← ...
FOR; ← ...
SC=0; ← ...
FOR LV=1,9999; ← ...
PX=9; ← ...
FOR BG=0,LV; ← ...
BX=RND(20); BY=0; ← ...
FOR T=0,9999; ← ...
CLS@ 0; ...
PRINT@ 0,0,7,0,"LEVEL:%02d SCORE:%05d HIGH:%...
IF T%4==0 AND NOT(PX==BX AND BY>=22-BG) THEN BY+...
CHAR@ BX,BY,2,6,0; ←...
CHAR@ PX,23,4,3,0; ←...
CHARBOX@ 1,BG,PX,23-BG,2,6,0; ←...
IF PX==BX AND BY==22-BG BREAK; ←...
IF BY==23 GOTO OVER; ←...
I=INKEY@WRC(50); ←5...
TX=MINMAX(PX+XMOVE(I),0,19); ←...
IF NOT(TX==BX AND BY>=23-BG) THEN PX=TX; FI; ←...
NEXT; ←T...
SC++; ←S...
HI=MAX(HI,SC); ←S...
NEXT; ←B...
PRINT@ 6,20,0,2,"LEVEL:%02d CLEAR!",LV; ←...
WAIT 3000; ←3...
NEXT; ←L...
OVER:
WAITKEY@ 10; ←E...
NEXT; ←...
-ほそく説明:
--PRINT@の中の%以降には、数字のゼロや小文字のdがあります...
--色番号の表
|0:黒|1:青|2:みどり|3:水色|4:赤|5:むらさき|6:黄色|7:白|
--色を2つの数字で表すときは、1つ目の数がキャラクターの色...
--キャラクターの表示位置は、2つの数字で表します。1つ目が...
---このゲームでは20x24マスを用意しているので、0,0~19,23...
--キャラクター番号の表
|0:空白|1:四角|2:丸|3:バツ|4:よこぼう|5:たてぼう|6:顔マー...
--RND(20)について: RNDは乱数(らんすう)の命令で、RND(20...
** (2-2) HLX-BASICのプログラムを実行するための方法(大人...
-もしWindowsでHLX-BASICを使うなら、話は簡単です!
-[[a21_hlx003]]のページへ行って、 hlx003c.zip をダウンロ...
-このhlx_x86_win.exeを適当なフィルだ内において、同じフォ...
--入力の際にはまずテキストエディタを開き(メモ帳でもいい...
--キーを見つけられないときは、ほらここにあるよと教えてあ...
--そうすると、「これは全部自分がやった。」という満足感が...
--(何回もやって慣れてきたら、自分でプログラムを読んで入...
-入力が終わったら、先ほどのhlx_x86_win.exeを起動して、そ...
hlx>run catch.txt
-と入力してください。入力ミスがなければゲームが始まるはず...
-ミスがあった場合は、エラーメッセージを見ながら間違いを探...
-なおゲーム中のキー操作は、ゲーム画面が入力アクティブにな...
-Windows以外のOSの方は、[[a21_hlx003]]のページを見て、ソ...
** (2-3) 改造のポイント
-このゲームは自分で入力したのですから、自分で改造すること...
-もしこのゲームが簡単で、すぐにレベル10とかに行けるのなら...
-速さを変えるには、50ミリ秒待っているところの数字を変えま...
-もしこのゲームがむずかしすぎたなら、やっぱりまずはゲーム...
-もしくは、ゲームの速度はそのままで、バーガーだけゆっくり...
-別の改造としては、「おじさん」のコントロールを良くしてバ...
** (3-1) C言語でのプログラム(aclライブラリ利用)(34行)
-内容的に、(2-1)とほぼ一対一で対応しているので、細かい説...
#include <acl.c>
void aMain()
{
int hi = 0, sc, px, tx, bx, by, t, bg, lv, i;
AWindow *w = aOpenWinEx(20, 24, "catch", 0);
for (;;) {
sc = 0; px = 9;
for (lv = 1;; lv++) {
for (bg = 0; bg < lv; bgr++) {
bx = aRnd(20); by = 0;
for (t = 0;; t++) {
aCls(w, 0);
aGrPrintf(w, 0, 0, 7, 0, "Level:%02d Score:%0...
if (t % 4 == 0 && !(tx == bx && by >= 22 - bg)...
aEch(w, bx, by, 2, 6, 0);
aEch(w, px, 23, 4, 3, 0);
aEchBox(w, 1, bg, px, 23 - bg, 2, 6, 0);
if (px == bx && by == 22 - bg) break;
if (by == 23) goto over;
i = aInkey_waitRC(w, 50);
tx = aSaturateInt(px + aMoveDx(i), 0, 19);
if (!(tx == bx && by >= 23 - bg)) px = tx;
}
sc++;
hi = aMax(hi, sc);
}
aGrPrintf(w, 6, 20, 0, 2, "Level:%02d Clear!", lv);
aWait(3000);
}
over:
aWaitKey(w, AKEY_ENTER);
}
}
** (3-2) C言語のプログラムを実行するための方法(大人の方...
-このプログラムは、C言語でありながらHLXのサポート範囲内の...
-使い方もほとんど同じで、catch.cを作って、
hlx>run catch.c
-とするだけでOKです。
-もし、HLXを使わずに普通のCコンパイラとaclライブラリの組...
-そのほかの操作方法や改造方法などは、(2-2)、(2-3)と同等な...
** (4) バグ修正
-バーガーをぎりぎりでキャッチした時に画像の更新が追い付か...
IF PX==BX AND BY==22-BG BREAK; ←...
IF BY==23 GOTO OVER; ←...
* こめんと欄
#comment
終了行:
* 初心者向けプログラミング体験ワークショップ#3
-(by [[K]], 2021.12.03)
** (0)
-今回紹介するのは、「ハンバーガーキャッチ・ゲーム」です。...
-このページは[[「初心者向けプログラミング体験ワークショッ...
** (1) ストーリー & ルール
-ぼくはときどき近所のハンバーガー屋さんでアルバイトをして...
-ちょうりがかりのおじさんは、ハンバーガー作りがうまくいき...
-おじさんは食べ物をそまつにしているのではなくて、ぼくがう...
----
| http://k.osask.jp/files/pic20211203a.png | http://k....
|こんなゲームです|やった、レベル6もクリアです!|しまった...
-画面の上から黄色のハンバーガーが1つずつ落ちてきます。水...
-ふつう、ハンバーガーキャッチ・ゲームというと、パンや野菜...
-ゲームをやめたくなったら、いつでも ESCキー を押せば終了...
-なお、HLXでは現在開いているゲームウィンドウよりも大きな...
** (2-1) HLX-BASICでのプログラム(30行)
-プログラム中に日本語で説明を書き込んでいますが、その部分...
CANVAS 20,24,"CATCH"; ← ...
HI=0; ← ...
FOR; ← ...
SC=0; ← ...
FOR LV=1,9999; ← ...
PX=9; ← ...
FOR BG=0,LV; ← ...
BX=RND(20); BY=0; ← ...
FOR T=0,9999; ← ...
CLS@ 0; ...
PRINT@ 0,0,7,0,"LEVEL:%02d SCORE:%05d HIGH:%...
IF T%4==0 AND NOT(PX==BX AND BY>=22-BG) THEN BY+...
CHAR@ BX,BY,2,6,0; ←...
CHAR@ PX,23,4,3,0; ←...
CHARBOX@ 1,BG,PX,23-BG,2,6,0; ←...
IF PX==BX AND BY==22-BG BREAK; ←...
IF BY==23 GOTO OVER; ←...
I=INKEY@WRC(50); ←5...
TX=MINMAX(PX+XMOVE(I),0,19); ←...
IF NOT(TX==BX AND BY>=23-BG) THEN PX=TX; FI; ←...
NEXT; ←T...
SC++; ←S...
HI=MAX(HI,SC); ←S...
NEXT; ←B...
PRINT@ 6,20,0,2,"LEVEL:%02d CLEAR!",LV; ←...
WAIT 3000; ←3...
NEXT; ←L...
OVER:
WAITKEY@ 10; ←E...
NEXT; ←...
-ほそく説明:
--PRINT@の中の%以降には、数字のゼロや小文字のdがあります...
--色番号の表
|0:黒|1:青|2:みどり|3:水色|4:赤|5:むらさき|6:黄色|7:白|
--色を2つの数字で表すときは、1つ目の数がキャラクターの色...
--キャラクターの表示位置は、2つの数字で表します。1つ目が...
---このゲームでは20x24マスを用意しているので、0,0~19,23...
--キャラクター番号の表
|0:空白|1:四角|2:丸|3:バツ|4:よこぼう|5:たてぼう|6:顔マー...
--RND(20)について: RNDは乱数(らんすう)の命令で、RND(20...
** (2-2) HLX-BASICのプログラムを実行するための方法(大人...
-もしWindowsでHLX-BASICを使うなら、話は簡単です!
-[[a21_hlx003]]のページへ行って、 hlx003c.zip をダウンロ...
-このhlx_x86_win.exeを適当なフィルだ内において、同じフォ...
--入力の際にはまずテキストエディタを開き(メモ帳でもいい...
--キーを見つけられないときは、ほらここにあるよと教えてあ...
--そうすると、「これは全部自分がやった。」という満足感が...
--(何回もやって慣れてきたら、自分でプログラムを読んで入...
-入力が終わったら、先ほどのhlx_x86_win.exeを起動して、そ...
hlx>run catch.txt
-と入力してください。入力ミスがなければゲームが始まるはず...
-ミスがあった場合は、エラーメッセージを見ながら間違いを探...
-なおゲーム中のキー操作は、ゲーム画面が入力アクティブにな...
-Windows以外のOSの方は、[[a21_hlx003]]のページを見て、ソ...
** (2-3) 改造のポイント
-このゲームは自分で入力したのですから、自分で改造すること...
-もしこのゲームが簡単で、すぐにレベル10とかに行けるのなら...
-速さを変えるには、50ミリ秒待っているところの数字を変えま...
-もしこのゲームがむずかしすぎたなら、やっぱりまずはゲーム...
-もしくは、ゲームの速度はそのままで、バーガーだけゆっくり...
-別の改造としては、「おじさん」のコントロールを良くしてバ...
** (3-1) C言語でのプログラム(aclライブラリ利用)(34行)
-内容的に、(2-1)とほぼ一対一で対応しているので、細かい説...
#include <acl.c>
void aMain()
{
int hi = 0, sc, px, tx, bx, by, t, bg, lv, i;
AWindow *w = aOpenWinEx(20, 24, "catch", 0);
for (;;) {
sc = 0; px = 9;
for (lv = 1;; lv++) {
for (bg = 0; bg < lv; bgr++) {
bx = aRnd(20); by = 0;
for (t = 0;; t++) {
aCls(w, 0);
aGrPrintf(w, 0, 0, 7, 0, "Level:%02d Score:%0...
if (t % 4 == 0 && !(tx == bx && by >= 22 - bg)...
aEch(w, bx, by, 2, 6, 0);
aEch(w, px, 23, 4, 3, 0);
aEchBox(w, 1, bg, px, 23 - bg, 2, 6, 0);
if (px == bx && by == 22 - bg) break;
if (by == 23) goto over;
i = aInkey_waitRC(w, 50);
tx = aSaturateInt(px + aMoveDx(i), 0, 19);
if (!(tx == bx && by >= 23 - bg)) px = tx;
}
sc++;
hi = aMax(hi, sc);
}
aGrPrintf(w, 6, 20, 0, 2, "Level:%02d Clear!", lv);
aWait(3000);
}
over:
aWaitKey(w, AKEY_ENTER);
}
}
** (3-2) C言語のプログラムを実行するための方法(大人の方...
-このプログラムは、C言語でありながらHLXのサポート範囲内の...
-使い方もほとんど同じで、catch.cを作って、
hlx>run catch.c
-とするだけでOKです。
-もし、HLXを使わずに普通のCコンパイラとaclライブラリの組...
-そのほかの操作方法や改造方法などは、(2-2)、(2-3)と同等な...
** (4) バグ修正
-バーガーをぎりぎりでキャッチした時に画像の更新が追い付か...
IF PX==BX AND BY==22-BG BREAK; ←...
IF BY==23 GOTO OVER; ←...
* こめんと欄
#comment
ページ名: