1989年開業 情報工学部門 文部科学省登録番号 第22082号 公益社団法人日本技術士会会員 東大阪商工会議所会員

≫サンプルプログラム一覧 

オープンソース/C言語サンプルプログラム コンピュータとじゃんけん

●コンピュータとじゃんけんするゲームです。
●コンピュータはランダムに出す手を選びます。
●プレイヤーは、出す手に応じて1から3の数字を入力します。
●入力後、結果を判定して表示します。
●Sleep()やBeep()を使って間を取っています。
●getch()の戻り値はキーコードです。
 キーコードについては次のページを参照してください。
 押されたキーの番号(キーコード)を表示 kb001.html
●getch()は標準入力から1バイト取得する関数です。
 キーボードバッファ(入力ストリーム)に複数バイトのデータ
 があっても、残りは消去されません。

 ≫ソースファイルのダウンロード: game04.C

【問題】
●表示される文字やタイミングを変えてみよう。
●標準入出力関数について調べてみよう。

【発展問題】
●勝敗の回数をカウントし、勝った場合は「おめえ、強ええな」等
 表示するように改造してみよう。

/******************************/
/*  コンピュータとじゃんけん  */
/******************************/
#include <stdio.h>
#include <stlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>

char  te[3][7]={"グー","チョキ","パー"};                // じゃんけんの手

void  main( )
{
    char c[32];
    int  nC,n,k;

    printf("****************************\n");
    printf("*                          *\n");
    printf("* コンピュータとじゃんけん *\n");
    printf("*                          *\n");
    printf("* Escキーで終了            *\n");
    printf("****************************\n\n");

    srand(time(NULL));                                  // 乱数の準備

    while( 1 )
      {
        nC=rand( )%3+1;                                 // 乱数発生
        Sleep(1000);
        printf("オラは何を出すか決めたぞ。さあ入力してくれ。\n\n");
        printf("じゃんけん( 1=グー, 2=チョキ, 3=パー ): ");
        fflush(stdout);

        gets(c); n=atoi(c);                             // 番号入力
        if ( n<1 || n>3 )                               // 範囲外
          {
            printf("\n悪りいな。1 から 3 の数字で入力してくれよな。\n");
            printf("次いくぞ。\n\n");
            Beep(262,500);
            continue;
          }

        printf("\nきみは【%s】か。\n\n",&te[n-1]);
        Beep(523,500);//ド
        Sleep(1000);

        if ( nC==n ) printf("オラも"); else printf("オラは");
        printf("【%s】だ。\n",&te[nC-1]);
        Sleep(1000);

        if ( nC==n )
            strcpy(c,"あいこだな。");
        else if ( nC-n==-2 || nC-n==1 )
            strcpy(c,"きみの勝ちだ。");
        else
            strcpy(c,"オラの勝ちだ。");
        printf("\n%s\n\n",c);
        Sleep(2000);

        printf("\n続けるならEsc以外のキーを押してくれ。\n\n\n");
        fflush(stdout);
        k=getch( );                                        // 文字入力
        if ( k==27 ) break;                                // Esc(終了)
      }
}
   

©著作者からのお願い

●プログラムの著作者、著作権者は佐伯英子です。
●このページで公開するプログラムは、複製、改変、無償再配布できます。
●再配布に当たっては、必ず著作者名を明記し、ソースも公開してください。
●改変後に再配布される場合も、原著作者を明記していただき、ソースも公開してください。
●これらのプログラムを使って、有償サービスをしていただいてもかまいません。
●これらのプログラムは、改変されたものも含めて、無断で有償再配布しないでください。
●これらは、再再配布以降にも引き継がれます。

         【ご利用例】
●ブログやホームページ、印刷物に掲載していただいてもかまいません。(出典明記)
●学校の授業や実習、会社の研修、有料の講座などでお使いいただけます。(出典明記)
無断で販売しないでください。
----------------------------------------
●お問合せはどうぞこちらから
----------------------------------------
■著作権法全文(e-Govウェブサイト)■
法令全般



佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601  E-mail: yfb22332@nifty.com