50069. Hangman

難度:3/5

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "hangman.h"

void solve(){
char ans[128], guess_str[256];
int n;
scanf("%s %d %s", ans, &n, guess_str);

int guess_len = strlen(guess_str);
Hangman* h = newGame(ans, n);
for(int i = 0; i < guess_len; i++){
char now_guess = guess_str[i];
int rtv = guess(h, now_guess);
printf("%d ", rtv);
printStatus(h);

if(solved(h)){
printf("You Win\n");
return;
}
else if(rtv == -1){
printf("You Lose\n");
return;
}
}
printf("You Quit\n");
return;
}

int main(){
int t; scanf("%d", &t);
while(t--){
solve();
}
}

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "hangman.h"

struct Hangman {
char answer[128];
char now[128];
int ans_len;
int now_guess;
int max_guess;
};

static inline int have_ch(Hangman* hangman, char ch){
for(int i = 0; i < hangman->ans_len; i++){
if(hangman->answer[i] == ch) return 1;
}
return 0;
}

Hangman* newGame(char *answer, int G){
Hangman* h = (Hangman*) malloc(sizeof(Hangman));
strcpy(h->answer, answer);
h->ans_len = strlen(answer);
h->now_guess = 0;
h->max_guess = G;

for(int i = 0; i < h->ans_len; i++) h->now[i] = '*';
h->now[h->ans_len] = '\0';
return h;
}

int guess(Hangman* hangman, char ch){
if(have_ch(hangman, ch)){
for(int i = 0; i < hangman->ans_len; i++){
if(hangman->answer[i] == ch){
hangman->now[i] = ch;
}
}
return 1;
}
else{
hangman->now_guess += 1;
if(hangman->now_guess >= hangman->max_guess) return -1;
else return 0;
}
}

void printStatus(Hangman* hangman){
printf("%s\n", hangman->now);
}

int solved(Hangman* hangman){
for(int i = 0; i < hangman->ans_len; i++){
if(hangman->now[i] == '*') return 0;
}
return 1;
}


50069. Hangman
https://aaronlin1229.github.io/judgegirl_50069/
Author
Akizumi
Posted on
July 17, 2023
Licensed under