- Mattias Hedman
- Medlem ●
- Sundsvall
- 2005-01-03 22:09
Jag har nu knäckt min sista öveningsuppgift i C kursen jag gått på 5 poäng.
Det intressanta är att den fungerar på Win men inte i OS X!
Jag mejlade den till läraren och frågade om de kompileringsfel jag får men hon svarade bara att det fick inte hon och det fungerade...
Är det någon här som kan C och orkar testa?
Jag har lagt till en rad som visar rätt ord så ni kan gissa på rätta bokstäver.
För hur jag än gissar får jag fel bokstav...
#include <stdio.h> #include <string.h> #include "WordGenerator.h" void generateAnswer(char * random, char * answer); int processLetter(char * ord, char * svar, char * bokstav); int main(void) { char random[50]; char answer[50]; char guess; //Gissade bokstaven char p1[100]; //Namn spelare 1 char p2[100]; //Namn spelare 2 int p1p, p2p; //Spelare poang short pa = 1; // Aktiv spelare short check; // Resultatet av kontroll /* Spelare 1s namn */ printf("Namn spelare 1: "); scanf("%s", &p1); /* Spelare 2s namn */ printf("Namn spelare 2: "); scanf("%s", &p2); /* Tilldelar poang till varje spelare */ p1p = 100; p2p = 100; /* Genererar ordet */ GenerateWord(random); /* Genererar det gomda ordet */ generateAnswer(random, answer); /* Starta spelet */ while(p1p != 0 && p2p != 0) { /* Skriv ut poang */ printf("\n%s har: %d poang, %s har: %d poang\n\n", p1, p1p, p2, p2p); /* Starta gissandet */ printf("\nOrdet ar nu: %s ", answer); if(pa == 1) { printf("\n%s gissa en bokstav: ", p1); } else { printf("\n%s gissa en bokstav: ", p2); } fflush(stdin); scanf("%c", &guess); /* Kolla om bokstaven finns i ordet */ check = processLetter(random, answer, guess); printf("ordet: %s\nsvaret: %s\nresultat: %d\n", random, answer, check); /* Poang utdelning */ if(check) { printf("Bra! Bokstaven du gissade pa finns i ordet!\n"); /* Kolla om hela ordet ar synligt */ if(strcmp(random, answer) == 0) { printf("Du har gissat sista bokstaven!\nHela ordet var: %s\n", answer); if(pa==1) p1p += 30; else p2p += 30; /* Generar ett nytt ord */ GenerateWord(random); /* Nollstall gissandet */ generateAnswer(random, answer); } } else { printf("Aj! Du gissade pa fel bokstav!\n"); if(pa == 1) { p1p -= 10; pa = 2; } else { p2p -= 10; pa = 1; } } } /* Skriv ut vinnare */ if(p1p == 0) { printf("Grattis %s!\nDu vann over %s", p2, p1); } else if (p2p == 0) { printf("Grattis %s!\nDu vann over %s", p1, p2); } else { //Something went wrong here... printf("Oooops... remi?"); } fflush(stdin); getchar(); return(0); } int processLetter(char *ord, char *svar, char * bokstav) { int correct = 0; int i, ordlen; fflush(stdin); getchar(); ordlen = strlen(ord); for(i=0; i < ordlen; i++) { if(ord[i] == bokstav) { svar[i] = bokstav; correct=1; } } /* Retunerar att gissnignen var ratt eller inte. */ if(correct) return(1); else return(0); } void generateAnswer(char ord[], char svar[]) { int a, lenword; lenword = strlen(ord); for(a=0; a < lenword; a++) { svar[a] = '_'; } svar[a] = '\0'; }
Hela kodpaketet finns här:
hangman.c
Nu fungerar det....
Senast redigerat 2005-01-03 22:28