C言語でジャンケンゲームを作る

1.ジャンケンゲームはランダム関数でrand() % 3 + 1; としてグーチョキパーを出す。
2.srand((unsigned int)time(NULL));でランダム関数を初期化する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <stdlib.h> // rand()に必要
 
int main(void){
    int n, r;
    printf("ジャンケン....\n");
    printf("1.グー、2.チョキ、3.パー [数字を入力してください]\n");
    scanf("%d", &n);
    switch(n){
        case 1:
            printf("グー\n");
            break;
        case 2:
            printf("チョキ\n");
            break;
        case 3:
            printf("パー\n");
            break;
        default:
            printf("1〜3の何れかを入力してください。\n");
            return 1;
    }  
 
    srand((unsigned int)time(NULL));
    r = rand() % 3 + 1;
 
    switch(r){
        case 1:
            printf("相手はグー\n\n");
            break;
        case 2:
            printf("相手はチョキ\n\n");
            break;
        case 3:
            printf("相手はパー\n\n");
            break;
    }
    switch(n){
        case 1:
            switch(r){
                case 1:
                    printf("あいこです。\n");
                    break;
                case 2:
                    printf("あなたの勝ちです。\n");
                    break;
                case 3:
                    printf("あなたの負けです。\n");
                    break;
            }
            break;
        case 2:
            switch(r) {
                case 1:
                    printf("あなたの負けです。\n");
                    break;
                case 2:
                    printf("あいこです。\n");
                    break;
                case 3:
                    printf("あなたの勝ちです。\n");
                    break;
            }
            break;             
        case 3:
            switch(r) {
                case 1:
                    printf("あなたの勝ちです。\n");
                    break;
                case 2:
                    printf("あなたの負けです。\n");
                    break;
                case 3:
                    printf("あいこです。\n");
                    break;
            }
            break;
    }
 
    return 0;
}

$ ./app
ジャンケン….
1.グー、2.チョキ、3.パー [数字を入力してください]
1
グー
相手はチョキ

あなたの勝ちです。
$ ./app
ジャンケン….
1.グー、2.チョキ、3.パー [数字を入力してください]
3
パー
相手はパー

あいこです。

一応できたけど、勝ち負けの判定をswitch文の入れ子にすると冗長になるな。。
他の方がどうやって書いているか見てみると、、、
あ、swtichではなく、以下の条件式で収まるじゃん。。。
if (r == n) : あいこ
elseif (r – n == 1 || r – n == -2) : あなたの勝ち
else : 負け