Beispiel #1
0
END_TEST

void *add_and_lookup_stuff(void *parm)
{
  int i = 0;

    while((i < 1000) || (everybody_started == false))
    {
      struct addrinfo *pAddr = (struct addrinfo *)calloc(1,sizeof(addrinfo));
      struct sockaddr_in *pINetAddr;
      const char *word = getRandomWord((unsigned int *)parm);

      i++;
      if(NULL == get_cached_addrinfo(word))
      {
        pAddr->ai_addr = (struct sockaddr *)calloc(1,sizeof(struct sockaddr_in));
        pAddr->ai_family = AF_INET;
        pINetAddr = (struct sockaddr_in *)pAddr->ai_addr;

        pAddr->ai_canonname = strdup(word);
        pINetAddr->sin_addr.s_addr = rand_r((unsigned int *)parm);        
        pAddr = insert_addr_name_info(pAddr,pAddr->ai_canonname);
      }
      else
      {
        freeaddrinfo(pAddr);
        pAddr = get_cached_addrinfo_full(word);
      }

      fail_unless((pAddr != NULL));

      if(pAddr != NULL)
      {
        char *p1;
        char *p2;
        struct sockaddr_in *p3;
        struct addrinfo *p4;

        pINetAddr = (struct sockaddr_in *)pAddr->ai_addr;
        p1 = get_cached_nameinfo(pINetAddr);
        p2 = get_cached_fullhostname(word,pINetAddr);
        p3 = get_cached_addrinfo(word);
        p4 = get_cached_addrinfo_full(word);
        fail_unless(((p1 != NULL)&&(p2 != NULL)&&(p3 != NULL)&&(p4 != NULL)));
      }
      else
      {
      }
    }
  return NULL;
  }
int main(int argc, char **argv) {
  char c,word[200], prompt;
  int level = 237;
  int length = 4;
  int repeat = 0;
  while((c = getopt(argc, argv, "rvl:")) != -1) {
    switch(c) {
    case 'v':
      verbose = 1;
      break;
    case 'r':
      repeat = 1;
      break;
    case 'l':
      length = (int)strtol(optarg,NULL,10);
      break;
    case '?':
	fprintf(stderr, "Unknown option. Usage pwgen [-l #] [-rv]\n");
	break;
    }
  }

  if(verbose == 1) {
      printf("Length: %d\n",length);
  }
  if(repeat) {
    do {
      printf("Password: %s\n", getRandomWord(word,length,level));
      printf("Regenerate? [Enter for yes, N/n to stop]: ");
      prompt = getchar();
    } while(prompt == '\n');
  } else {
    printf("Password: %s\n", getRandomWord(word,length,level));
  }
  return 0;
}
void play_hangman(int socket_id, userpw_t* User)
{
	
	word_t* hangmanWord = getRandomWord();
	send_number(socket_id, strlen(hangmanWord->object));
	send_number(socket_id, strlen(hangmanWord->objectType));
	char* objGuessing = obfuscate_string(hangmanWord->object);
	char* objTypeGuessing = obfuscate_string(hangmanWord->objectType);

	send_word(socket_id, objGuessing);
	send_word(socket_id, objTypeGuessing);
	int guessesAllowedServer = determineWordLength(hangmanWord);
	int correct = 2;

	do 
	{
		char received = receive_char(socket_id);
		reveal_string(hangmanWord->object, objGuessing, received);
		reveal_string(hangmanWord->objectType, objTypeGuessing, received);
		send_word(socket_id, objGuessing);
		send_word(socket_id, objTypeGuessing);
		guessesAllowedServer--;
		if(wordGuessed(objGuessing) == 1 && wordGuessed(objTypeGuessing) == 1)
		{
			correct = 1;
			pthread_mutex_lock(&leaderboardLock);
			int* gamesWon = User->gamesWon;
			(*gamesWon)++;
			pthread_mutex_unlock(&leaderboardLock);

		}
	} while (guessesAllowedServer > 0 && correct == 2);
	int* gamesPlayed = User->gamesPlayed;
	(*gamesPlayed)++;
	
}
/***********************************************************
synopsis: do all of the initialisation for a new game:
          build the screen
	  get a random word and generate anagrams
	  (must get less than 66 anagrams to display on screen)
	  initialise all the game control flags

inputs: head - first node in the answers list (in/out)
        dblHead - first node in the dictionary list
	screen - the SDL_Surface to display the image
	letters - first node in the letter sprites (in/out)

outputs: n/a
***********************************************************/
static void
newGame(struct node** head, struct dlb_node* dlbHead, 
        SDL_Surface* screen, struct sprite** letters)
{
    char guess[9];
    char remain[9];
    int happy = 0;   /* we don't want any more than ones with 66 answers */
                     /* - that's all we can show... */
    int i;

	/* show background */
	strcpy(txt, language);
	ShowBMP(strcat(txt,"images/background.bmp"),screen, 0,0);

	destroyLetters(letters);
    assert(*letters == NULL);

	while (!happy) {
        char buffer[9];
        getRandomWord(buffer, sizeof(buffer));
		strcpy(guess,"");
		strcpy(rootWord, buffer);
		bigWordLen = strlen(rootWord)-1;
		strcpy(remain, rootWord);

		rootWord[bigWordLen] = '\0';

		/* destroy answers list */
		destroyAnswers(head);

		/* generate anagrams from random word */
		ag(head, dlbHead, guess, remain);

		answersSought = Length(*head);
		happy = ((answersSought <= 77) && (answersSought >= 6));

#ifdef DEBUG
		if (!happy) {
			Debug("Too Many Answers!  word: %s, answers: %i",
                   rootWord, answersSought);
		}
#endif
	}

#ifdef DEBUG
    Debug("Selected word: %s, answers: %i", rootWord, answersSought);
#endif

    /* now we have a good set of words - sort them alphabetically */
    sort(head);

	for (i = bigWordLen; i < 7; i++){
		remain[i] = SPACE_CHAR;
	}
	remain[7] = '\0';
	remain[bigWordLen]='\0';

	shuffleWord(remain);
	strcpy(shuffle, remain);

	strcpy(answer, SPACE_FILLED_STRING);

	/* build up the letter sprites */
    assert(*letters == NULL && screen != NULL);
	buildLetters(letters, screen);
	addClock(letters, screen);
	addScore(letters, screen);

	/* display all answer boxes */
	displayAnswerBoxes(*head, screen);

	gotBigWord = 0;
	score = 0;
	updateTheScore = 1;
	gamePaused = 0;
	winGame = 0;
	answersGot = 0;

	gameStart = time(0);
	gameTime = 0;
	stopTheClock = 0;
}