回答編集履歴
1
ソース追記
answer
CHANGED
@@ -1,52 +1,84 @@
|
|
1
|
-
|
1
|
+
BAが出たようなので・・・
|
2
|
-
```
|
2
|
+
```c
|
3
|
+
#include <stdio.h>
|
4
|
+
#include <stdlib.h>
|
5
|
+
//
|
6
|
+
//0〜9の乱数を発生させる。
|
7
|
+
int rand_n(void);
|
8
|
+
//入力された数字とコンピュータが出した数字を比較して点数を返す。
|
9
|
+
int guess(int);
|
10
|
+
//
|
11
|
+
/*************************************
|
12
|
+
*************************************/
|
13
|
+
//
|
14
|
+
int rand_n(void) { return rand() % 10; }
|
15
|
+
//
|
3
|
-
guess
|
16
|
+
int guess(int f)
|
17
|
+
{
|
18
|
+
static int cnt = 1;
|
19
|
+
static const int point[] = {
|
4
|
-
|
20
|
+
// 10回ぐらいでプレイヤーが勝つ
|
21
|
+
// 400, 300, 250, 150, 100, 50, -10, -20, -30, -50
|
5
|
-
|
22
|
+
// 30回ぐらいでプレイヤーが勝つ
|
23
|
+
200, 100, 50, 25, 10, 0, -25, -50, -100, -200
|
6
24
|
|
25
|
+
};
|
26
|
+
int g;
|
27
|
+
char buf[32];
|
28
|
+
|
29
|
+
printf("Stage%d: Yor point is %d\n", cnt, f);
|
30
|
+
puts("数字を予測してください。");
|
31
|
+
//
|
32
|
+
fgets(buf, sizeof buf, stdin);
|
33
|
+
sscanf(buf, "%d", &g);
|
34
|
+
// 緊急脱出用^^;
|
35
|
+
if (0 > g || g > 9) {
|
36
|
+
puts("quit!");
|
37
|
+
exit(1);
|
38
|
+
}
|
39
|
+
//
|
40
|
+
printf("Selected number is %d\n\n", g);
|
41
|
+
//
|
42
|
+
int p = abs(rand_n() - g); // abs()は結果が負になった時の対策
|
43
|
+
// for DEBUG
|
44
|
+
if (p == 0) {
|
45
|
+
puts("equal");
|
46
|
+
}
|
47
|
+
// printf("%d\n", p);
|
48
|
+
//
|
49
|
+
f += point[p];
|
50
|
+
//
|
51
|
+
cnt++;
|
52
|
+
//
|
53
|
+
return f;
|
54
|
+
}
|
55
|
+
|
56
|
+
int main(void)
|
57
|
+
{
|
58
|
+
puts("guess NUMBER");
|
59
|
+
|
60
|
+
puts("0~9の数字がランダムに選択されるので、\n"
|
61
|
+
"選択された数字を当ててください。\n");
|
62
|
+
|
7
|
-
You have 50 points
|
63
|
+
puts("You have 50 points\n");
|
64
|
+
|
65
|
+
int f = 50;
|
66
|
+
do{
|
67
|
+
f = guess(f);
|
68
|
+
}while (f > 0 && f < 1000);
|
69
|
+
|
8
|
-
|
70
|
+
//
|
9
|
-
1
|
10
|
-
|
71
|
+
if (f <= 0) {
|
11
|
-
2
|
12
|
-
|
72
|
+
puts("your loss ;-p");
|
13
|
-
|
73
|
+
} else {
|
14
|
-
1
|
15
|
-
Selected number is 1
|
16
|
-
5
|
17
|
-
2st stage: Yor point is 350
|
18
|
-
数字を予測してください。
|
19
|
-
1
|
20
|
-
Selected number is 1
|
21
|
-
6
|
22
|
-
3st stage: Yor point is 340
|
23
|
-
数字を予測してください。
|
24
|
-
1
|
25
|
-
Selected number is 1
|
26
|
-
4
|
27
|
-
4st stage: Yor point is 440
|
28
|
-
数字を予測してください。
|
29
|
-
1
|
30
|
-
Selected number is 1
|
31
|
-
2
|
32
|
-
5st stage: Yor point is 690
|
33
|
-
数字を予測してください。
|
34
|
-
1
|
35
|
-
Selected number is 1
|
36
|
-
4
|
37
|
-
6st stage: Yor point is 790
|
38
|
-
数字を予測してください。
|
39
|
-
1
|
40
|
-
Selected number is 1
|
41
|
-
5
|
42
|
-
7st stage: Yor point is 840
|
43
|
-
数字を予測してください。
|
44
|
-
1
|
45
|
-
Selected number is 1
|
46
|
-
1
|
47
|
-
|
74
|
+
puts("Your wins v^^");
|
75
|
+
}
|
48
|
-
|
76
|
+
//
|
49
|
-
Quit this game!
|
77
|
+
puts("Quit this game!");
|
78
|
+
|
79
|
+
return 0;
|
80
|
+
}
|
81
|
+
|
50
82
|
```
|
83
|
+
一応動作確認はしていますが、分かるでしょうか?
|
51
|
-
|
84
|
+
何かいい変数名がないかちょっと考えたのですが、このままとします。
|
52
|
-
あと、よっぽどかけ離れた数値を連続して指定しないと、これ勝てますよ、意図した結果ならいいのですが。
|