easy-Cの入門書 [レベル12]

  • (by K, 2023.09.21)

ノート

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はニコニコのばしょです。
    
    ニコニコは、AやBをかえるまえにけして、AやBのけいさんがおわったらまたかきます。
    そうするとうごいているようにみえます。
    
    ここにもCLRKEY;めいれいがあります。CLRKEY;めいれいがなんのやくにたっているのかわからないときは、
    これをけしてみてください。きっと、ああそういうことか!ってわかります。

解説

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

こめんと欄

  • 掲示板をご利用ください。→a23_bbs

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-09-29 (金) 10:39:29 (1017d)