Mastermind
Számkitaláló játék
mastermind
randommaster.c
1
#include <stdlib.h>
2
#include <stdio.h>
3
#include <time.h>
4
5
typedef
struct
{
6
int
black, white;
7
}
Response
;
8
9
int
randomGuess(
void
)
10
{
11
return
rand() % 1296;
12
}
13
14
void
int2hex(
int
n,
int
digits
[])
15
{
16
int
i;
17
for
(i = 0; i < 4; ++i) {
18
digits
[4-1-i] = n % 6;
19
n /= 6;
20
}
21
}
22
23
Response
processGuess(
int
guess,
int
secret)
24
{
25
Response
res = {0, 0};
26
int
g[4], s[4], i, j;
27
/* számjegyek előállítása */
28
int2hex(guess, g);
29
int2hex(secret, s);
30
/* fekete tüskék */
31
for
(i = 0; i < 4; ++i)
32
if
(g[i] == s[i]) {
33
res.
black
++;
34
g[i] = -1;
35
s[i] = -2;
36
}
37
/* fehér tüskék */
38
for
(i = 0; i < 4; ++i)
39
for
(j = 0; j < 4; ++j)
40
if
(g[i] == s[j]) {
41
res.
white
++;
42
s[j] = -2;
43
break
;
44
}
45
46
return
res;
47
}
48
49
int
main
(
void
)
50
{
51
int
i = 0;
52
int
secret;
53
Response
response;
54
55
srand(time(NULL));
56
secret = randomGuess();
/* Rejtő gondol */
57
do
{
58
++i;
59
int
guess = randomGuess();
/* Fejtő tippel */
60
response = processGuess(guess, secret);
/* Rejtő válaszol */
61
printf(
"%d: %d (%d, %d)\n"
, i, guess, response.
black
, response.
white
);
62
}
while
(response.
black
!= 4);
63
64
return
0;
65
}
66
digits
void digits(int a, int d[])
egész szám jegyeinek előállítása
Definition:
mastermind.c:41
Response::white
int white
a fehér tüskék száma
Definition:
mastermind.c:18
Response::black
int black
a fekete tüskék száma
Definition:
mastermind.c:17
main
int main(void)
a főprogram
Definition:
mastermind.c:153
Response
egy választ tároló típus
Definition:
mastermind.c:16
Projekt: Mastermind Készült: Kedd December 8 2020 14:09:47 Készítette:
1.8.17