• ベストアンサー

じゃんけんゲームをつくったのですが・・・。

自分でじゃんけんゲームを作ってみたのですが、他の人のソースで どういう風に組んでいるのか研究したいのでソースお願いします。 後、もっとこういう風にした方がいいとおもう所があればおねがいします。 <ソース> #include<stdio.h> #include<time.h> #include<stdlib.h> int main() { int i; int n; srand(time(NULL)); n=rand()%3; printf("じゃんけんをします,0がグーで1がチョキで2がパーです\n"); printf("じゃんけんぽい!"); scanf("%d",&i); if(i==0&&n==0){ printf("あいこです\n"); } else if(i==0&&n==1){ printf("勝ちました\n"); } else if(i==0&&n==2) { printf("負けました\n"); } if(i==1&&n==0){ printf("負けました\n"); } else if(i==1&&n==1){ printf("あいこです\n"); } else if(i==1&&n==2) { printf("勝ちました\n"); } if(i==2&&n==0){ printf("勝ちました\n"); } else if(i==2&&n==1){ printf("負けました\n"); } else if(i==2&&n==2){ printf("あいこです\n"); } if(i>2) { printf("やりなおしてください\n"); } return 0; }

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

インデントに全角スペースを使ってます。実際にコピーペーストする際には気をつけてください。 勝敗判定のコードをまとめて簡略化していますが、入力エラーチェックを強化したのでコード量は大して変わってません。 #include <stdio.h> #include <stdlib.h> #include <time.h> #define GU 0 #define CHOKI 1 #define PA 2 #define MAX_STRLEN 256 int main() {  int i;  int n;  char input[MAX_STRLEN];  char hand[][MAX_STRLEN] = {"グー", "チョキ", "パー"};  srand(time(NULL));  n=rand()%3;  printf("じゃんけんぽい!\n");  // 手を入力 -- 有効な数値が入るまで繰り返す  while(1)  {   printf("あなたの手(グー:0 チョキ:1 パー:2):");   fgets(input, MAX_STRLEN, stdin);   if(sscanf(input, "%d", &i) < 1)   {    printf("数値を入力してください。\n");   }else{    if(i < GU || i > PA)    {     printf("0から2の範囲で入力してください。\n");    }else{     break;    }   }  }  // 自分の手と相手の手を表示  printf("あなたの手:%s わたしの手:%s\n", hand[i], hand[n]);  // 勝敗判定  if(i == n)  {   printf("あいこです\n");  }else{   if((i + 1) % 3 == n)   {    printf("あなたの勝ちです\n");   }else{    printf("あなたの負けです\n");   }  }  return 0; }

tomo_ko_n
質問者

お礼

配列を使ってみるのもいいですね。 while文で繰り返しやってみるのもいいですね。 ソースとても参考になったのでコンパイルさせていただきます。 1である限り繰り返しは考えつきませんでした。 面白いプログラミングですね。

その他の回答 (5)

noname#227064
noname#227064
回答No.6

No.4です。 自分のを見直してみたら変なところがありました。 一つ目 > int pc, player; /* PC(私)とプレイヤー(あなた)の手 */ > enum { GU, CHOKI, PA, END }; どうせなら、 typedef enum { GU, CHOKI, PA, END } TE; TE pc, player; /* PC(私)とプレイヤー(あなた)の手 */ とすべきでした。 二つ目 > const char *te[] = { "グー", "チョキ", "パー", "終了"}; > const char *message[] = { "負けました", "あいこです", "勝ちました" }; constにするなら char const * const ここまですべきかな? 三つ目 > if (player < 0 || player > END) { > puts("やり直してください"); > continue; > } else if (player == END) > break; do while文にした意味がない。 breakをcontinueに変えるか、while(1) {}でもよかった。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

#3のzwiです。 調子に乗って第2弾。マトリックス・タイプも既に出てますが勝率判定付きです。 #include<stdio.h> #include<time.h> #include<stdlib.h> int main() { int i; int n; int hantei; int allplay = 0; // 結果 static int hantei_count[3] = {0,0,0}; // 勝ち負け enum { HANTEI_AIKO, HANTEI_KACHI, HANTEI_MAKE }; // 判定マトリックス static int hantei_matrix[3][3] = { HANTEI_AIKO, HANTEI_KACHI, HANTEI_MAKE, // i:0 n:0 i:0 n:1 i:0 n:2 HANTEI_MAKE, HANTEI_AIKO, HANTEI_KACHI,// i:1 n:0 i:1 n:1 i:1 n:2 HANTEI_KACHI, HANTEI_MAKE, HANTEI_AIKO // i:2 n:0 i:2 n:1 i:2 n:2 }; // 判定表示用の文字列。 static char *hantei_str[3] = { "あいこです", //HANTEI_AIKO, "勝ちです", //HANTEI_KACHI, "負けです" //HANTEI_MAKE }; // 表示用 static char *te[3] = { "グー", // 0 "チョキ", // 1 "パー" // 2 }; srand(time(NULL)); while( 1 ) { n=rand()%3; printf("じゃんけんをします,0がグーで1がチョキで2がパーです。-1で終了します。\n"); printf("じゃんけんぽい!"); scanf("%d",&i); // 終了 if( i==-1 ) { break; } // エラー判定 if( (i>2) || (i<0) ) { printf("0,1,2を入力して、やりなおしてください\n"); continue; } // 判定を得る。 hantei = hantei_matrix[i][n]; // 結果表示 printf( "自分:%s(%d) コンピュータ:%s(%d) 判定は、%s。\n", te[i],i, te[n],n, hantei_str[hantei] ); // 勝率の計算と表示 hantei_count[hantei]++; allplay++; printf( "あなたの勝率:%d%% あいこの確率:%d%%\n\n", hantei_count[HANTEI_KACHI]*100/allplay, hantei_count[HANTEI_AIKO]*100/allplay ); } return 0; }

tomo_ko_n
質問者

お礼

いいプログラミングだと思います。 じっくり読ませていただいたのですが、配列の計算面白いです。 enumeを使うの思いつかなったです。 後は理解できます。 やはりwhile文を使って繰り返し判定を出すの必要だと思いました。

noname#227064
noname#227064
回答No.4

配列を用いた方法が既に出ていますが、それ以外のところで参考になればと思いましたので、回答します #include<stdio.h> #include<time.h> #include<stdlib.h> int main() { int i; int pc, player; /* PC(私)とプレイヤー(あなた)の手 */ enum { GU, CHOKI, PA, END }; const char *te[] = { "グー", "チョキ", "パー", "終了"}; typedef enum { LOOSE, EVEN, WIN} JUDGE; const JUDGE result[3][3] = { {EVEN, WIN, LOOSE}, {LOOSE, EVEN, WIN}, {WIN, LOOSE, EVEN} }; /* プレイヤーの勝ち負けはresult[player][pc]で得られる */ const char *message[] = { "負けました", "あいこです", "勝ちました" }; srand((unsigned)time(NULL)); puts("じゃんけんをします"); for (i = 0; i < sizeof(te) / sizeof(te[0]); i++) { printf("%dが%sで", i, te[i]); } puts("す"); do { puts("じゃんけんぽい!"); scanf("%d",&player); /* 手抜き */ if (player < 0 || player > END) { puts("やり直してください"); continue; } else if (player == END) break; pc = (int)(rand() / (RAND_MAX + 1.0) * 3); printf("あなたの手:%s\n", te[player]); printf("私の手:%s\n", te[pc]); puts(message[result[player][pc]]); } while (player != END); return 0; }

tomo_ko_n
質問者

お礼

構造体+配列わかりやすいです。 他の方で配列を使っている方もいたので、配列でまた作りなおしてみます。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

思いっきり配列を使ってみました。 少し仕組みも変わっていて遊ぶ人に分かりやすくしてあります。 #include<stdio.h> #include<time.h> #include<stdlib.h> int main() { int i; int n; static char *hantei[3][3] = { "あいこです",// i:0 n:0 "勝ちです", // i:0 n:1 "負けです", // i:0 n:2 "負けです", // i:1 n:0 "あいこです",// i:1 n:1 "勝ちです", // i:1 n:2 "勝ちです", // i:2 n:0 "負けです", // i:2 n:1 "あいこです" // i:2 n:2 }; static char *te[3] = { "グー", // 0 "チョキ", // 1 "パー" // 2 }; srand(time(NULL)); while( 1 ) { n=rand()%3; printf("じゃんけんをします,0がグーで1がチョキで2がパーです。-1で終了します。\n"); printf("じゃんけんぽい!"); scanf("%d",&i); if( i==-1 ) { break; } if( (i>2) || (i<0) ) { printf("0,1,2を入力して、やりなおしてください\n"); continue; } printf( "自分:%s(%d) コンピュータ:%s(%d) 判定は、%s。\n\n", te[i],i, te[n],n, hantei[i][n] ); } return 0; }

tomo_ko_n
質問者

お礼

見てわかりやすいプログラムだと思いました。 配列を使うと、すっきりしますね。 コンパイルさせていただきます。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

>もっとこういう風にした方がいいとおもう所があればおねがいします。 printf("あいこです\n"); などの同じ文を繰り返し書いていますね。 勝ち負けの判定を関数にしましょう。 あと、「やりなおしてください」のメッセージと共に、 ユーザにプログラムの起動からやり直させるのはどうなんでしょう。 scanf("%d",&i); まで勝手に戻った方がよいのでは?

tomo_ko_n
質問者

お礼

そうですね。勝ち負けの判定した方がいいですね。 やり直してくださいはwhile文を使って考えてみます。

関連するQ&A

  • プログラミング(じゃんけんゲーム)

    C言語をしています。 そこでわからない所がありのですが、解説お願いします。 作りたいのは、乱数を使ったジャンケン5回戦で、 一番最後に、何勝何敗何引き分けかを表示させ、 2人のうちどちらが勝ったかです。 最後の何勝何敗何引き分けかを どう書いたらいいかがわかりません。 関数のひきわたしみたいな感じでするというのはわかります。 できたところまでのプログラムが、以下のようなコードです。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a,c,i; printf("じゃんけんをしましょう。 (グー=1 チョキ=2 パー=3)\n"); for(i=i; i<=5; i++) { srand(time(NULL)); c = rand()%3+1; scanf("%d",&a); if(a==1 && c==1) printf("私もグー=1なので、あいこです。\n"); else if(a==1 && c==2) printf("私はチョキ=2なので、あなたの勝ちです。\n"); else if(a==1 && c==3) printf("私はパー=3なので、あなたの負けです。\n"); else if(a==2 && c==1) printf("私はグー=1なので、あなたの負けです。\n"); else if(a==2 && c==2) printf("私もチョキ=2なので、あいこです。\n"); else if(a==2 && c==3) printf("私はパー=3なので、あなたの勝ちです。\n"); else if(a==3 && c==1) printf("私はグー=1なので、あなたの勝ちです。\n"); else if(a==3 && c==2) printf("私はチョキ=2なので、あなたの負けです。\n"); else if(a==3 && c==3) printf("私もパー=3なので、あいこです。\n"); else printf("正しい手を入れてください。\n"); } return 0; }

  • C言語でのじゃんけん

    こんちには。 C言語の乱数を用いてじゃんけんプログラムを作ろうと思っているのですが、 エラーメッセージが出てしまいうまくいきません。 どこがおかしいのでしょうか? #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i,j,k; printf("じゃんけんをしましょう(ぐー:1、ちょき:2、ぱー:3)¥n"); for(k=k; k<=10; k++) { srand(time(NULL)); j=rand()%3+1; scanf("%d",&i); if(i==1&&j==1) printf("私はグーなので、あいこです¥n"); else if(i==1&&j==2) printf("私はチョキなので、あなたの勝ちです¥n"); else if(i==1&&j==3) printf("私はパーなので、あなたの負けです¥n"); else if(i==2&&j==1) printf("私はグーなので、あなたの負けです¥n"); else if(i=2&&j==2) printf("私はチョキなので、あいこです¥n"); else if(i==2&&j==3) printf("私はパーなので、あなたの勝ちです¥n"); else if(i==3&&j==1) printf("私はグーなので、あなたの勝ちです¥n"); else if(i==3&&j==2) printf("私はチョキなので、あなたの負けです¥n"); else if(i==3&&j==3) printf("私はパーなので、あいこです¥n"); else printf("1か2か3を入力してください¥n"); } } OS mountain lionで利用中ですが、 「じゃんけんをしましょう(ぐー:1、ちょき:2、ぱー:3)」 と表示されたまま、うまく動作しません。 教えてください。

    • ベストアンサー
    • Mac
  • C言語初心者です。 ジャンケンゲーム

    今、授業の課題でジャンケンゲームを作成していますが、なかなかできません。もし、良かったら何処が違うのか教えてください。 // main.c #include <stdio.h> #include <time.h> //#include <time.h> #include "my.h" main(int argc, char* argv[]){ int i; char s[7]; printf("これはジャンケンゲームです。\n"); printf("手を入力します(グー:1 チョキ:2 パー:3)\n"); scanf("%s",&s[7]); srand((unsigned)time(NULL)); printf("%s\n",jyan(dice(3))); if(s == jyan){ printf("あいこです。\n"); }else if(s == 1 && jyan ==2){ printf("あなたの勝ちです。\n"); }else if(s == 2 && jyan == 3){ printf("あなたの勝ちです。\n"); }else if(s == 3 && jyan ==1){ printf("あなたの勝ちです。\n"); }else{ printf("コンピュターの勝ちです。\n"); } } // dice.c #include <time.h> int dice(int n){ srand((unsigned)time(NULL)); return(rand()%n+1); } // jyan.c char *jyan(int n){ static char s[][7]={"グー","チョキ","パー"}; return s[--n]; } // my.h #include <stdio.h> char *jyan(int hand); //int dice(int n); 見づらくて申し訳ありません。4つのファイルに分けて作成しています。上記のプログラムだと自分の手、コンピューターの手がランダムに出てくるのですが判定が出来ませんでした。アドバイス、よろしくお願いします。 長文になってしまい申し訳ありません。

  • じゃんけんゲームについてお願いします。

    #include <stdio.h> #include <stdlib.h> int main() { int n; int player; // プレイヤーの手の保存 int computer; // コンピュータの手を保存 srand(0); // 乱数列を初期化 do { printf("あなたの手を入力してください(グー:1 チョキ:2 パー:3) > "); scanf("%d", &player); computer = rand() % 3 + 1; if(computer == player){ printf("あいこです\n"); }else if(player == 1 && computer == 2){ printf("プレイヤーの勝ちです\n"); }else if(player == 2 && computer == 3){ printf("プレイヤーの勝ちです\n"); }else if(player == 3 && computer == 1){ printf("プレイヤーの勝ちです\n"); }else{ printf("コンピュータの勝ちです\n"); } printf("このまま続けますか?続けない場合は 0 を入力してください > "); scanf("%d", &n); // n が 0 以外だったら続ける }while(n != 0); return 0; } このじゃんけんプログラムで一番最初に何回勝負するか指定出来るようにしたいのですが。 指定しただけ勝負して、最後に勝ち、負け、引き分けの結果を。 お願いいたします。

  • 何かおかしい?

    ソース何かおかしいですか? #include <stdio.h> #include <time.h> #include <stblib.h> //ジャンケンゲーム実行 (繰り返しなし) main () { int player = 0, computer; //乱数の種をまく srand(time(NULL)); printf("【ジャンケンゲーム】\n"); //プレイヤーの入力 printf("ジャンケン・・・(グー:1チョキ:2パー:3を入力) > "); scanf("%d", &player); //コンピュウターの手の入力 computer = rand()%3 + 1; printf("コンピュータは"); if(computer == 1) {printf("グー"); } else if(computer == 2) { printf("チョキ");} else if(computer == 3) { printf("パー");} printf("! "); //勝敗の判断と結果表示 if(computer == player){ printf("あいこ\n"); } else if(player ==1 && computer ==2){ printf("プレイヤーの勝ち\n"); } else if(player ==2 && computer ==3){ printf("プレイヤーの勝ち\n"); } else if(player ==3 && computer ==1){ printf("プレイヤーの勝ち\n"); } else { printf("コンピュウターの勝ち\n"); } return 0; }

  • じゃんけんゲーム

    問1:ジャンケンを十回行って、何勝何敗、何引き 分けかを表示するプログラムを作れ。 問2:計算機とじゃんけんを行って、貴方が計算 機より2回多く勝つまで続けるプログラムを作れ。 上記の問題が、どうしてもわかりません。"問1を少し変えれば問2はできる"と思うのですが・・・。 コンピュータにランダムで手を出させ、かつ勝敗の回数をカウントさせたいのですがうまくいきません。 どこをどう変えればよいのか、どなたか回答願います。 できればソースを添えてお願いします。 使っている言語はC言語です。また、私はC言語初心者なので、if文やfor文、do~while文あたりまでしか使えません。 下記に示すのは私が作った、問1のソースです。参考までに。 ---------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <time.h> main(){ int i, a, b;time_t seed; seed=time(&seed); srand(seed*(seed%12345)); a=3.0*(float)rand()/(RAND_MAX+1.0)+1; for(i=0;i<10;i++){ printf("1、2、3 ?\n"); scanf("%d",&b); printf("PCは%d\n",a); if(a==b){ printf("アイコッ!\n"); }else{ if((a==1 && b==2) || (a==2 && b==3) || (a==3 && b==1 )){ printf("PCが勝ちッ!\n"); }else{printf("PCが負けッ!\n");} }/*if の括弧閉じ*/ }/* for の括弧閉じ*/ printf( "結果発表ッ!\n" ); printf( "私は%d 回勝ちッ!\n",b ); printf( "PCは%d 回勝ちッ!\n", a); printf( "引き分けは %d 回ッ!\n", (10 - a - b) ); return 0; }/*main() の括弧閉じ*/ -------------------------------------------------------------- --------------------------------------------------------------

  • おかしいところ

    ソースのおかしいところ教えてください #include <stdio.h> #include <time.h> #include <stdlib.h> //繰り返し処理(結果のトータル表示なし) main () { int piayer, computer; int limit = 5; //繰り返し回数 int i; printf ("【%d回勝敗ジャンケンゲーム】\n", limit); srand(time(NULL)); for(i = 0; i < limit; i++) { printf("ジャンケンゲーム・・・(グ―:1 チョキ:2 パ―:3を入力) > "); piayer = 0; scanf("%d", &piayer); while (getchar() != '\n') { } computer = rand()%3 + 1; printf("コンピュータは"); if(computer == 1) {printf("グー"); } else if(computer == 2) { printf("チョキ");} else if(computer == 3) { printf("パー");} printf("! "); if(computer == player){ printf("あいこ\n"); } else if(player ==1 && computer ==2){ printf("プレイヤーの勝ち\n"); } else if(player ==2 && computer ==3){ printf("プレイヤーの勝ち\n"); } else if(player ==3 && computer ==1){ printf("プレイヤーの勝ち\n"); } else if(player ==2 && computer ==1){ printf("コンピュターの勝ち\n"); } else if(player ==3 && computer ==2){ printf("コンピュターの勝ち\n"); } else if(player ==1 && computer ==3){ printf("コンピュターの勝ち\n"); } else { printf("プレイヤーが不正な手を出した\n"); } return 0; }

  • じゃんけんゲームの応用

    • 問1:ジャンケンを十回行って、何勝何敗、何引き 分けかを表示するプログラムを作れ。 • 問2:計算機とじゃんけんを行って、貴方が計算 機より2回多く勝つまで続けるプログラムを作れ。 上記の問題で、どうしても問2がわかりません。"問1を少し変えれば問2はできる"と思うのですが・・・。 どこをどう変えればよいのか、どなたか回答願います。 使っている言語はC言語です。また、私はC言語初心者なので、if文やfor文、do~while文あたりまでしか使えません。 下記に示すのは私が作った、問1のソースです。参考までに。 ---------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <time.h> main(){ int i, a, b;time_t seed; seed=time(&seed); srand(seed*(seed%12345)); a=3.0*(float)rand()/(RAND_MAX+1.0)+1; for(i=0;i<10;i++){ printf("1、2、3 ?\n"); scanf("%d",&b); printf("PCは%d\n",a); if(a==b){ printf("アイコッ!\n"); }else{ if((a==1 && b==2) || (a==2 && b==3) || (a==3 && b==1 )){ printf("PCが勝ちッ!\n"); }else{printf("PCが負けッ!\n");} }/*if の括弧閉じ*/ }/* for の括弧閉じ*/ printf( "結果発表ッ!\n" ); printf( "私は%d 回勝ちッ!\n",b ); printf( "PCは%d 回勝ちッ!\n", a); printf( "引き分けは %d 回ッ!\n", (10 - a - b) ); return 0; }/*main() の括弧閉じ*/ -------------------------------------------------------------- --------------------------------------------------------------

  • C言語について

    C言語のじゃんけんゲームを作成したいのですが、 仕様は 1.利用者とコンピュータによる対戦形式とします。 2.利用者がキーボードから入力した手(グー・チョキ・パー)と、擬似乱数を用いて生成したコンピュータの手を比較し、利用者の勝ち・あいこ・負けの結果を表示しなさい。 3.利用者の入力が不正の場合には再度入力を促すなど、適切な処理をしなさい。 4.これまでの累積勝利数・引き分け数・敗北数をそれぞれ、user_win・user_draw・user_loseの3つの変数(int型)に格納しなさい。 5.連勝中の場合は「5連勝中!」などと表示させるようにしなさい。 6.あいこである限りは自動的にじゃんけんを反復しなさい。 7.勝敗がついた場合、利用者にまだ継続するか質問した上で、じゃんけんを反復させなさい。 8.じゃんけんを終了した場合、これまでの通算成績として、累積勝利数・引き分け数・敗北数のほか、勝利=累積勝利数÷(累積勝利数+累積敗北数)×100、および、最大勝利数を計算して表示しなさい。 という仕様のじゃんけんゲームを作成したいのですが、下記に書いているまでしかできません。誰か教えていただけないでしょうか。分からなくて困っています。 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int a,c; srand(time(NULL)); c = rand()%3+1; printf("手を入力してください [1:グー 2:チョキ 3:パー] "); scanf("%d",&a); if(a==1 && c==1) printf("あなたはグーで、私もグーでした。アイコです。\n"); else if(a==1 && c==2) printf("あなたはグーで、私はチョキでした。あなたの勝ちです。\n"); else if(a==1 && c==3) printf("あなたはグーで、私はパーでした。あなたの負けです。\n"); else if(a==2 && c==1) printf("あなたはチョキで、私はグーでした。あなたの負けです。\n"); else if(a==2 && c==2) printf("あなたはチョキで、私もチョキでした。アイコです。\n"); else if(a==2 && c==3) printf("あなたはチョキで、私はパーでした。あなたの勝ちです。\n"); else if(a==3 && c==1) printf("あなたはパーで、私はグーでした。あなたの勝ちです。\n"); else if(a==3 && c==2) printf("あなたはパーで、私はチョキでした。あなたの負けです。\n"); else if(a==3 && c==3) printf("あなたはパーで、私もパーでした。アイコです。\n"); else printf("正しい手を入れてください。\n"); return 0; }

  • C言語で数当てゲーム

    私は最近5月からCのプログラミングを学び始めた中3なんですが じゃんけんゲームと丁半ゲームを今までに作りました で今回数当てゲームを作ってみたのですが何回作り直しても エラーが出ます(コンパイラのエラーではなくWindows?のエラーのようなもの) じゃんけんゲームなどと同じように作ったつもりなのですが・・・・ どうなっているのでしょうか? ソースは↓です #include <stdio.h> #include <time.h> #include <stdlib.h> #include <conio.h> int main() { int kazu,i,x; printf("数当てゲーム!!\n"); srand(time(NULL)); x=0; i=0; do { kazu=rand()%9+1; printf("数を入力してください(1~9)\n"); scanf("%d",i); if(i<10){ if(i==kazu) { printf("当たり!!\n続けるなら0やめるなら0以外を入力"); scanf("%d",x); } else {printf("残念・・・はずれ\n続けるなら0やめるなら0以外を入力"); scanf("%d",x);} } else {printf("入力ミスです\n続けるなら0やめるなら0以外を入力"); getch();} }while(x==0); return 0; } 一応コンパイラのエラーは出ていないのですが・・・ 初心者なのでわかりません。 どこが原因なのか詳しくおしえてください

専門家に質問してみよう