a21_edu05
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* 初心者向けプログラミング体験ワークショップ#5
-(by [[K]], 2021.12.04)
** (0)
-今回紹介するのは、「タイピングゲーム」です。31行で書けま...
-このページは[[「初心者向けプログラミング体験ワークショッ...
** (1) ストーリー & ルール
-ぼくは今、学校で英語の勉強をしているのだけど、勉強のやり...
-アルファベットが地面に落ちる前に、アルファベットの名前を...
-それにこの夢を見るようになってからは、アルファベットをよ...
----
|http://k.osask.jp/files/pic20211205a.png|
|こんなふうに、文字がゆっくりと上から落ちてきます。|
-画面上にアルファベットがでて、ゆっくり落ちてきます。キー...
-文字が画面の一番下まで落ちてしまったら終了です。
-終了したら Enter を押すことで再ゲームできます。
-いつでも ESCキー を押せばゲームは終了します。
-なお、HLXでは現在開いているゲームウィンドウよりも大きな...
** (2-1) HLX-BASICでのプログラム(31行)
-プログラム中に日本語で説明を書き込んでいますが、その部分...
CANVAS 32,24,"TYPING"; ← ゲーム画面...
INT AB[24], HI=0; ← AB[0]~AB[...
FOR; ←再ゲームの...
SC=0; ← 点数を0に...
ARYSET AB,0,24,0; ← AB[0]~AB[...
CLS@ 0; ← 画面を黒(...
FOR T=0,999999; ← ゲーム内時...
IF T%5==0 THEN ← もしTが5の...
SCROLL@ 32,22,0,1,0,1,1; ← 画面上の文...
ARYMOVE AB,1,0,23; ← AB[0]~AB[...
AB[1]=RND(26)+65; ← AB[1]に65...
PRINT@ RND(32),1,2,0,"%c",AB[1]; ← AB[1]の文...
FI;
PRINT@ 8,0,7,0,"SCORE:%05d HIGH:%05d ",SC,HI; ←...
I=UPPER(INKEY@WR(100)); ← 100ミリ秒...
IF I!=0 THEN ← もし何か押...
SC--; ← まずとにか...
FOR J=23,0,-1; ← AB[]を23番...
IF AB[J]==I THEN ← もしAB[]の...
AB[J]=0; ← AB[]の中か...
SC+=11; ← 点数を11点...
HI=MAX(HI,SC); ← SCとHIのう...
CHARBOX@ 32,1,0,J,0,0,0; ← 入力された...
BREAK; ← AB[]の中か...
FI;
NEXT;
FI;
IF AB[23]!=0 BREAK; ← もし一番下...
NEXT;
WAITKEY@ 10; ← Enterキー...
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(26)について: RNDは乱数(らんすう)の命令で、RND(26...
** (2-2) HLX-BASICのプログラムを実行するための方法(大人...
-もしWindowsでHLX-BASICを使うなら、話は簡単です!
-[[a21_hlx003]]のページへ行って、 hlx003c.zip をダウンロ...
-このhlx_x86_win.exeを適当なフィルだ内において、同じフォ...
--入力の際にはまずテキストエディタを開き(メモ帳でもいい...
--キーを見つけられないときは、ほらここにあるよと教えてあ...
--そうすると、「これは全部自分がやった。」という満足感が...
--(何回もやって慣れてきたら、自分でプログラムを読んで入...
-入力が終わったら、先ほどのhlx_x86_win.exeを起動して、そ...
hlx>run typing.txt
-と入力してください。入力ミスがなければゲームが始まるはず...
-ミスがあった場合は、エラーメッセージを見ながら間違いを探...
-なおゲーム中のキー操作は、ゲーム画面が入力アクティブにな...
-Windows以外のOSの方は、[[a21_hlx003]]のページを見て、ソ...
** (2-3) 改造のポイント
-このゲームは自分で入力したのですから、自分で改造すること...
-まず IF T%5==0 THEN の数字を変えれば文字が落ちてくる速度...
-でも遅くして1000点を取りたいんじゃない、早く落ちてきて、...
-それでも難しければ、3とかにして(つまり、A~Cだけにした...
** (3-1) C言語でのプログラム(aclライブラリ利用)(36行)
-内容的に、(2-1)とほぼ一対一で対応しているので、細かい説...
#include <acl.c>
void aMain()
{
int i, j, t, sc, hi = 0, ab[24];
AWindow *w = aOpenWinEx(32, 24, "TYPING", 0);
for (;;) {
sc = 0;
aArySetInt(ab, 0, 24, 0);
aCls(w, 0);
for (t = 0;; t++) {
if (t % 5 == 0) {
aScroll(w, 32, 22, 0, 1, 0, 1, 1, 0, 0, 0);
aAryMovInt(ab, 1, 0, 23);
ab[1] = 'A' + aRnd(26);
aGrPrintf(w, aRnd(32), 1, 2, 0, "%c", ab[1]);
}
aGrPrintf(w, 8, 0, 7, 0, "SCORE:%05d HIGH:%05d ...
i = aUppercase(aInkey_waitR(w, 100));
if (i != 0) {
sc--;
for (j = 23; j >= 0; j--) {
if (ab[j] == i) {
ab[j] = 0;
aEchBox(w, 32, 1, 0, j, 0, 0, 0);
sc += 11;
hi = aMaxInt(hi, sc);
break;
}
}
}
if (ab[23] != 0) break;
}
aWaitKey(w, AKEY_ENTER);
}
}
** (3-2) C言語のプログラムを実行するための方法(大人の方...
-このプログラムは、C言語でありながらHLXのサポート範囲内の...
-使い方もほとんど同じで、typing.cを作って、
hlx>run typing.c
-とするだけでOKです。
-もし、HLXを使わずに普通のCコンパイラとaclライブラリの組...
-そのほかの操作方法や改造方法などは、(2-2)、(2-3)と同等な...
* こめんと欄
#comment
終了行:
* 初心者向けプログラミング体験ワークショップ#5
-(by [[K]], 2021.12.04)
** (0)
-今回紹介するのは、「タイピングゲーム」です。31行で書けま...
-このページは[[「初心者向けプログラミング体験ワークショッ...
** (1) ストーリー & ルール
-ぼくは今、学校で英語の勉強をしているのだけど、勉強のやり...
-アルファベットが地面に落ちる前に、アルファベットの名前を...
-それにこの夢を見るようになってからは、アルファベットをよ...
----
|http://k.osask.jp/files/pic20211205a.png|
|こんなふうに、文字がゆっくりと上から落ちてきます。|
-画面上にアルファベットがでて、ゆっくり落ちてきます。キー...
-文字が画面の一番下まで落ちてしまったら終了です。
-終了したら Enter を押すことで再ゲームできます。
-いつでも ESCキー を押せばゲームは終了します。
-なお、HLXでは現在開いているゲームウィンドウよりも大きな...
** (2-1) HLX-BASICでのプログラム(31行)
-プログラム中に日本語で説明を書き込んでいますが、その部分...
CANVAS 32,24,"TYPING"; ← ゲーム画面...
INT AB[24], HI=0; ← AB[0]~AB[...
FOR; ←再ゲームの...
SC=0; ← 点数を0に...
ARYSET AB,0,24,0; ← AB[0]~AB[...
CLS@ 0; ← 画面を黒(...
FOR T=0,999999; ← ゲーム内時...
IF T%5==0 THEN ← もしTが5の...
SCROLL@ 32,22,0,1,0,1,1; ← 画面上の文...
ARYMOVE AB,1,0,23; ← AB[0]~AB[...
AB[1]=RND(26)+65; ← AB[1]に65...
PRINT@ RND(32),1,2,0,"%c",AB[1]; ← AB[1]の文...
FI;
PRINT@ 8,0,7,0,"SCORE:%05d HIGH:%05d ",SC,HI; ←...
I=UPPER(INKEY@WR(100)); ← 100ミリ秒...
IF I!=0 THEN ← もし何か押...
SC--; ← まずとにか...
FOR J=23,0,-1; ← AB[]を23番...
IF AB[J]==I THEN ← もしAB[]の...
AB[J]=0; ← AB[]の中か...
SC+=11; ← 点数を11点...
HI=MAX(HI,SC); ← SCとHIのう...
CHARBOX@ 32,1,0,J,0,0,0; ← 入力された...
BREAK; ← AB[]の中か...
FI;
NEXT;
FI;
IF AB[23]!=0 BREAK; ← もし一番下...
NEXT;
WAITKEY@ 10; ← Enterキー...
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(26)について: RNDは乱数(らんすう)の命令で、RND(26...
** (2-2) HLX-BASICのプログラムを実行するための方法(大人...
-もしWindowsでHLX-BASICを使うなら、話は簡単です!
-[[a21_hlx003]]のページへ行って、 hlx003c.zip をダウンロ...
-このhlx_x86_win.exeを適当なフィルだ内において、同じフォ...
--入力の際にはまずテキストエディタを開き(メモ帳でもいい...
--キーを見つけられないときは、ほらここにあるよと教えてあ...
--そうすると、「これは全部自分がやった。」という満足感が...
--(何回もやって慣れてきたら、自分でプログラムを読んで入...
-入力が終わったら、先ほどのhlx_x86_win.exeを起動して、そ...
hlx>run typing.txt
-と入力してください。入力ミスがなければゲームが始まるはず...
-ミスがあった場合は、エラーメッセージを見ながら間違いを探...
-なおゲーム中のキー操作は、ゲーム画面が入力アクティブにな...
-Windows以外のOSの方は、[[a21_hlx003]]のページを見て、ソ...
** (2-3) 改造のポイント
-このゲームは自分で入力したのですから、自分で改造すること...
-まず IF T%5==0 THEN の数字を変えれば文字が落ちてくる速度...
-でも遅くして1000点を取りたいんじゃない、早く落ちてきて、...
-それでも難しければ、3とかにして(つまり、A~Cだけにした...
** (3-1) C言語でのプログラム(aclライブラリ利用)(36行)
-内容的に、(2-1)とほぼ一対一で対応しているので、細かい説...
#include <acl.c>
void aMain()
{
int i, j, t, sc, hi = 0, ab[24];
AWindow *w = aOpenWinEx(32, 24, "TYPING", 0);
for (;;) {
sc = 0;
aArySetInt(ab, 0, 24, 0);
aCls(w, 0);
for (t = 0;; t++) {
if (t % 5 == 0) {
aScroll(w, 32, 22, 0, 1, 0, 1, 1, 0, 0, 0);
aAryMovInt(ab, 1, 0, 23);
ab[1] = 'A' + aRnd(26);
aGrPrintf(w, aRnd(32), 1, 2, 0, "%c", ab[1]);
}
aGrPrintf(w, 8, 0, 7, 0, "SCORE:%05d HIGH:%05d ...
i = aUppercase(aInkey_waitR(w, 100));
if (i != 0) {
sc--;
for (j = 23; j >= 0; j--) {
if (ab[j] == i) {
ab[j] = 0;
aEchBox(w, 32, 1, 0, j, 0, 0, 0);
sc += 11;
hi = aMaxInt(hi, sc);
break;
}
}
}
if (ab[23] != 0) break;
}
aWaitKey(w, AKEY_ENTER);
}
}
** (3-2) C言語のプログラムを実行するための方法(大人の方...
-このプログラムは、C言語でありながらHLXのサポート範囲内の...
-使い方もほとんど同じで、typing.cを作って、
hlx>run typing.c
-とするだけでOKです。
-もし、HLXを使わずに普通のCコンパイラとaclライブラリの組...
-そのほかの操作方法や改造方法などは、(2-2)、(2-3)と同等な...
* こめんと欄
#comment
ページ名: