ショッピングモール  掲示板ランキング


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    使用可能タグ一覧

No.2703

お世話になってます(^^;
投稿者---manyuaru(2004/09/25 21:29:15)


いつもいつも申し訳無いです。

#include <stdio.h>
#include <string.h>

#define clear printf("\x1b[2J")
#define carsol printf("\x1b[%d;%dH",y,x)

int move(void);

char move1[2];
int x=10,y=10;

int main(void)
{
    clear;
    move();
    return 0;
}

int move(void)
{
    printf(" w->上に進む a->左 d->右 x->下 s->終了 \n");
    getchar();
    while(1){
        clear;
        carsol;
        printf("__\n    ");
        scanf("%c",&move1);
        if(strcmp(move1,"w")==0){
            y=y-1;
        }if(strcmp(move1,"a")==0){
            x=x-1;
        }if(strcmp(move1,"d")==0){
            x=x+1;
        }if(strcmp(move1,"x")==0){
            y=y+1;
        }if(strcmp(move1,"s")==0){
            return 0;
        }
    }
}



w,a,d,x,のキーで棒が動くという風に作ったのですが、

(1) if(strcmp(move1,"w"){
---------
   }else(----){.....
  最後のif文をelseで表すには、どうしたらいいですか?
  「ステートメントにセミコロン(;)がない(関数 move )」
  というエラーが出てしまいます。

(2) 動きたい方向のキー(w,dなど)を押した後に、エンター
  を押さないと動きません。
  何かいい方法ありませんか?

自分なりに考えたのですが、結局分かりませんでした。
どなたかよろしくお願いします。
   





この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:お世話になってます(^^; 2704 Sciggepy 2004/09/25 22:28:10


No.2704

Re:お世話になってます(^^;
投稿者---Sciggepy(2004/09/25 22:28:10)



>(1) if(strcmp(move1,"w"){
> ---------
>   }else(----){.....
>  最後のif文をelseで表すには、どうしたらいいですか?
>  「ステートメントにセミコロン(;)がない(関数 move )」
>  というエラーが出てしまいます。
まず、左右の括弧の数が違っています。あと、少し無駄な気がするので、
switch(move1[0]) {
    case 'w':
        ...
        break;
    ...
    default:
        ...
}
と書いたほうがよいかと思います。仮名や漢字を判定するとしたら別ですが。

>(2) 動きたい方向のキー(w,dなど)を押した後に、エンター
>  を押さないと動きません。
>  何かいい方法ありませんか?
Win95/98/Meと仮定しますが、kbhit、getchを使えば、Enterしなくても、キー入力を受け取れます。



この投稿にコメントする

削除パスワード

No.2716

Re:お世話になってます(^^;
投稿者---manyuaru(2004/09/26 20:35:43)


問題解決しました。
ありがとうございます。

//完成版

#include <stdio.h>
#include <string.h>


#define clear printf("\x1b[2J")
#define carsol printf("\x1b[%d;%dH",y,x)
#define kesi printf("\x1b[>5h")

int move(void);

int move1,x=10,y=10;

int main(void)
{
    clear;
    move();
    return 0;
}

int move(void)
{
    printf(" w->上に進む a->左 d->右 x->下 s->終了 \n");
    getchar();
    while(1){
        clear;
        kesi;
        carsol;
        printf("__\n");
        move1=getch();
        switch(move1){
            case 'w': y=y-1; break;
            case 'a': x=x-1; break;
            case 'd': x=x+1; break;
            case 'x': y=y+1; break;
            case 's': return 0;
        }
    }
}


getch()関数を使うことにしました。
それとカーソルが邪魔なので、消してみました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    使用可能タグ一覧




掲示板提供:Real Integrity