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(終了)
      }
}
   

※SSL暗号化通信対応

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