* easy-Cの入門書 [レベル12]
-(by [[K]], 2023.09.21)

--目次はこちら → [[a23_intro00]]

** ノート
 0.1びょうだけまつ → WAIT(100);
   1びょうまつときは、WAIT(1000);

 キャラクターをかくためのがめんでおされたキーをしらべる → K=INKEY(1);
   K==0 : なにもおしてない
   K==10 : Enterキー
   K==32 : くうはくキー
   K==4132 : ←キー
   K==4133 : →キー
   K==4144 : ↑キー
   K==4145 : ↓キー

 おしすぎたキーをわすれさせる → CLRKEY;
   このめいれいのいみがわからないときは、[12-2]のもんだいをやってみてください。

 FORのくりかえしをとちゅうでやめる → BREAK;


** もんだい
-[12-1]
 これは11-4のつづきです。
 いきなりゲームがはじまってしまうと、すぐにじかんがなくなってしまってこまります。
 なにかキーをおすまでまつことにします。まつときはWAITめいれいをつかいます。
 
   ECHWIN(40,40);
   ECH(20,20,6,6,0);
   FOR (K=0; K<20;) {
     A=RND(40);
     B=RND(39)+1;
     IF (GETECH(A,B)==0) {
       ECH(A,B,2,3,0);
       K=K+1;
     }
   }
   GPRINTF(0,0,7,0,"TIME=%03d  SCORE=%05d",999,0);
   FOR (CLRKEY; INKEY(1)==0; ) { WAIT(100); }
 
 まつまえに、まえにおしたキーがのこっているとこまるので、CLRKEY;しています。
 
 これをにゅうりょくしてRUNしてみてください。

-[12-2]
 のこりをいっきにしあげます。
 
   ECHWIN(40,40);
   ECH(20,20,6,6,0);
   FOR (K=0; K<20;) {
     A=RND(40);
     B=RND(39)+1;
     IF (GETECH(A,B)==0) {
       ECH(A,B,2,3,0);
       K=K+1;
     }
   }
   GPRINTF(0,0,7,0,"TIME=%03d  SCORE=%05d",999,0);
   FOR (CLRKEY; INKEY(1)==0; ) { WAIT(100); }
   A=20; B=20; S=0;
   FOR (T=999; T>=0; T=T-1){
     GPRINTF(0,0,7,0,"TIME=%03d  SCORE=%05d",T,S); ← じかんとてんすうをかく
     IF (S==2000) { BREAK; } ← 2000えんになったらおしまい
     K=INKEY(1);
     IF (K>0) { ← もしもなにかキーをおしていたら
       CLRKEY; ← おしすぎたキーがあればすてる
       ECH(A,B,0,0,0); ← ニコニコをけす
       IF (K==4132 && A>0)  { A=A-1; } ← もし←をおしていてひだりにうごかせるなら
       IF (K==4133 && A<39) { A=A+1; } ← もし→をおしていてみぎにうごかせるなら
       IF (K==4134 && B>1)  { B=B-1; }
       IF (K==4135 && B<39) { B=B+1; }
       IF (GETECH(A,B)==2) { S=S+100; } ← おかねをとったら100てんふやす
       ECH(A,B,6,6,0); ← ニコニコをかく
    }
    WAIT(100); ← 0.1びょうまつ
  }
 
 これをにゅうりょくしてRUNしてみてください。
 
 へんすうTはじかんです。へんすうSはてんすうです。へんすうAとBはニコニコのばしょです。
 Tはじかんです。Sはてんすうです。AとBはニコニコのばしょです。
 
 ニコニコは、AやBをかえるまえにけして、AやBのけいさんがおわったらまたかきます。
 そうするとうごいているようにみえます。
 
 ここにもCLRKEY;めいれいがあります。CLRKEY;めいれいがなんのやくにたっているのかわからないときは、
 これをけしてみてください。きっと、ああそういうことか!ってわかります。

** 解説
-このプログラムでは、ゲームスタートを「キーを押すまで」待ってくれますが、しかしこのままだと、最初に矢印キーを押しても歩いてくれません。二歩目からは普通に歩きます。
-これを修正することができます。そのためには、最初のキーを押すまで待つ処理を以下のようにします。
   FOR (CLRKEY; INKEY(0)==0; ) { WAIT(100); }
-こうすると、INKEYしても取得したコードをバッファに残すようになるので、次のループで移動処理ができるようになります。


* こめんと欄
-掲示板をご利用ください。→[[a23_bbs]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS