a21_edu06
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* 初心者向けプログラミング体験ワークショップ#6
-(by [[K]], 2021.12.06)
** (0)
-今回紹介するのは、「ロケット操縦ゲーム」です。34行で書け...
-このページは[[「初心者向けプログラミング体験ワークショッ...
** (1) ストーリー & ルール
-(これは未来のお話です。)
-ぼくはとても運転がうまい宇宙船のパイロットです。宇宙には...
-もちろんそんなところはとても危険な場所です。そんなところ...
-さてさて、そんな宇宙基地に食べ物やにもつを配達しなければ...
-さあ、きみもぼくの宇宙船の操縦を手伝ってね!
----
| http://k.osask.jp/files/pic20211207a.png |
-ゲームスタート時には画面右の中央あたりに小さなロケットが...
-落ちないし上にもぶつからないようにできるようになったら、...
-左に進んでいるものをどうやって止めるかですが、それはカー...
-この左右キーも押しすぎると逆噴射してもなかなか止まれなく...
-さてこのゲームの目的は、ロケットを画面中央の白の四角まで...
-と、ここまで書いて、私はこのストーリーに重大な間違いを見...
-まあ今からゲームを直すと大変そうなので、その部分について...
-なお、HLXでは現在開いているゲームウィンドウよりも大きな...
** (2-1) HLX-BASICでのプログラム(34行)
-プログラム中に日本語で説明を書き込んでいますが、その部分...
CANVAS 40,30,"ROCKET"; ← ...
HI=1; ← ...
FOR; ← ...
FOR ST=1,9999; ← ...
HI=MAX(HI,ST); ← H...
CLS@ 0; ← ...
PRINT@ 0,0,15,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<0 OR 479<Y OR C!=0 GOTO CRASH; ← ロ...
I=INKEY@WRC(200); ← 2...
IF I==32 THEN VY-=9; FI; ← ...
VX+=XMOVE(I); VY++; ← V...
X=(X+VX+640)%640; Y+=VY; ← X...
NEXT;
PRINT@ 18,15,0,7," CLEAR!"; ← ...
WAIT 3000; ← 3...
NEXT; ← S...
CRASH:
Y=MINMAX(Y,0,479); ← Y...
FOR I=0,3; R=I*5+10; DRAWOVALCENTER@@ RF,X,Y,R,R,4; NE...
PRINT@ 18,15,4,7," CRASH!"; ← ...
WAITKEY@ 10; ← E...
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 rocket.txt
-と入力してください。入力ミスがなければゲームが始まるはず...
-ミスがあった場合は、エラーメッセージを見ながら間違いを探...
-なおゲーム中のキー操作は、ゲーム画面が入力アクティブにな...
-Windows以外のOSの方は、[[a21_hlx003]]のページを見て、ソ...
** (2-3) 改造のポイント
-このゲームは自分で入力したのですから、自分で改造すること...
-もしゲームが簡単すぎるなら、いんせきの数を増やすといいか...
-ゲームが難しすぎたら、いんせきの数を減らすといいでしょう...
-このゲームのストーリーは先ほど書いたように問題があります...
--「VY= -20;」→「VY=0;」
--「VY++;」→「VY+=YMOVE(I);」
-やってみると、まあ、これはこれで一応ゲームにはなりますね...
** (3-1) C言語でのプログラム(aclライブラリ利用)(39行)
-内容的に、(2-1)とほぼ一対一で対応しているので、細かい説...
#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, 15, 0, "STAGE:%2d HIGH:%2d",...
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)...
}
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 < 0 || 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, 0, 479);
for (i = 0; i < 3; i++) { r = i * 5 + 10; aDrawOvalC...
aGrPrintf(w, 18, 15, 4, 7, " CRASH!");
aWaitKey(w, AKEY_ENTER);
}
}
** (3-2) C言語のプログラムを実行するための方法(大人の方...
-このプログラムは、C言語でありながらHLXのサポート範囲内の...
-使い方もほとんど同じで、rocket.cを作って、
hlx>run rocket.c
-とするだけでOKです。
-もし、HLXを使わずに普通のCコンパイラとaclライブラリの組...
-そのほかの操作方法や改造方法などは、(2-2)、(2-3)と同等な...
** (4) バグ修正
-スペースキーを連打して画面上部に飛び出すと、HLXごと落ち...
* こめんと欄
#comment
終了行:
* 初心者向けプログラミング体験ワークショップ#6
-(by [[K]], 2021.12.06)
** (0)
-今回紹介するのは、「ロケット操縦ゲーム」です。34行で書け...
-このページは[[「初心者向けプログラミング体験ワークショッ...
** (1) ストーリー & ルール
-(これは未来のお話です。)
-ぼくはとても運転がうまい宇宙船のパイロットです。宇宙には...
-もちろんそんなところはとても危険な場所です。そんなところ...
-さてさて、そんな宇宙基地に食べ物やにもつを配達しなければ...
-さあ、きみもぼくの宇宙船の操縦を手伝ってね!
----
| http://k.osask.jp/files/pic20211207a.png |
-ゲームスタート時には画面右の中央あたりに小さなロケットが...
-落ちないし上にもぶつからないようにできるようになったら、...
-左に進んでいるものをどうやって止めるかですが、それはカー...
-この左右キーも押しすぎると逆噴射してもなかなか止まれなく...
-さてこのゲームの目的は、ロケットを画面中央の白の四角まで...
-と、ここまで書いて、私はこのストーリーに重大な間違いを見...
-まあ今からゲームを直すと大変そうなので、その部分について...
-なお、HLXでは現在開いているゲームウィンドウよりも大きな...
** (2-1) HLX-BASICでのプログラム(34行)
-プログラム中に日本語で説明を書き込んでいますが、その部分...
CANVAS 40,30,"ROCKET"; ← ...
HI=1; ← ...
FOR; ← ...
FOR ST=1,9999; ← ...
HI=MAX(HI,ST); ← H...
CLS@ 0; ← ...
PRINT@ 0,0,15,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<0 OR 479<Y OR C!=0 GOTO CRASH; ← ロ...
I=INKEY@WRC(200); ← 2...
IF I==32 THEN VY-=9; FI; ← ...
VX+=XMOVE(I); VY++; ← V...
X=(X+VX+640)%640; Y+=VY; ← X...
NEXT;
PRINT@ 18,15,0,7," CLEAR!"; ← ...
WAIT 3000; ← 3...
NEXT; ← S...
CRASH:
Y=MINMAX(Y,0,479); ← Y...
FOR I=0,3; R=I*5+10; DRAWOVALCENTER@@ RF,X,Y,R,R,4; NE...
PRINT@ 18,15,4,7," CRASH!"; ← ...
WAITKEY@ 10; ← E...
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 rocket.txt
-と入力してください。入力ミスがなければゲームが始まるはず...
-ミスがあった場合は、エラーメッセージを見ながら間違いを探...
-なおゲーム中のキー操作は、ゲーム画面が入力アクティブにな...
-Windows以外のOSの方は、[[a21_hlx003]]のページを見て、ソ...
** (2-3) 改造のポイント
-このゲームは自分で入力したのですから、自分で改造すること...
-もしゲームが簡単すぎるなら、いんせきの数を増やすといいか...
-ゲームが難しすぎたら、いんせきの数を減らすといいでしょう...
-このゲームのストーリーは先ほど書いたように問題があります...
--「VY= -20;」→「VY=0;」
--「VY++;」→「VY+=YMOVE(I);」
-やってみると、まあ、これはこれで一応ゲームにはなりますね...
** (3-1) C言語でのプログラム(aclライブラリ利用)(39行)
-内容的に、(2-1)とほぼ一対一で対応しているので、細かい説...
#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, 15, 0, "STAGE:%2d HIGH:%2d",...
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)...
}
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 < 0 || 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, 0, 479);
for (i = 0; i < 3; i++) { r = i * 5 + 10; aDrawOvalC...
aGrPrintf(w, 18, 15, 4, 7, " CRASH!");
aWaitKey(w, AKEY_ENTER);
}
}
** (3-2) C言語のプログラムを実行するための方法(大人の方...
-このプログラムは、C言語でありながらHLXのサポート範囲内の...
-使い方もほとんど同じで、rocket.cを作って、
hlx>run rocket.c
-とするだけでOKです。
-もし、HLXを使わずに普通のCコンパイラとaclライブラリの組...
-そのほかの操作方法や改造方法などは、(2-2)、(2-3)と同等な...
** (4) バグ修正
-スペースキーを連打して画面上部に飛び出すと、HLXごと落ち...
* こめんと欄
#comment
ページ名: