void changePuzzles(struct Field player_puzzles[PLAYER_PUZZLES_NUMBER], char which_char[PLAYER_PUZZLES_NUMBER], struct Letter game_puzzles[GAME_CHARACTERS_NUMBER]) { int k; // position of player puzzle to change int r; // possition of random puzzle in GAME_PUZZLES int which_letter; // possition of returned letter in game_puzzles for (int i = 0; i < PLAYER_PUZZLES_NUMBER; i++) { k = (which_char[i] - 49); if (k >= 0 && k < 7) { //taking returning letter possition if (PLAYER_PUZZLES_CREATED) { which_letter = int(player_puzzles[k].letter->sign - 65); } //draw do { r = rand() % (GAME_CHARACTERS_NUMBER); if (game_puzzles[r].number > 0) { player_puzzles[k].letter = &game_puzzles[r]; player_puzzles[k].color = LIGHTMAGENTA; ; game_puzzles[r].number -= 1; r = -1; } } while (r != -1); //returning if (PLAYER_PUZZLES_CREATED) { game_puzzles[which_letter].number += 1; } } } } // ###### changing puzzles ####### else if (zn == 'w') { for ( int i = 0; i < PLAYER_PUZZLES_NUMBER; i++) { which_change[i] = NULL; } counter_limit_change = 0; do { //LIMIT CHANGE WARNING if (ALL_PUZZLES_NUMBER < 7) { sprintf(message, " YOU CAN ONLY CHANGE : "); gotoxy(PLAYER_PUZZLES_X, PLAYER_PUZZLES_Y + 6); clreol(); cputs(message); gotoxy(PLAYER_PUZZLES_X + 25, PLAYER_PUZZLES_Y + 6); putch(char(ALL_PUZZLES_NUMBER + 48)); } which_buff = getch(); k = int(which_buff - 49); if (k >= 0 && k < 7) { if ((Player_Puzzles[k].color == LIGHTMAGENTA) && (which_change[k] == NULL)) { counter_limit_change++; if ((ALL_PUZZLES_NUMBER - counter_limit_change) != -1) { Player_Puzzles[k].color = LIGHTGRAY; which_change[k] = which_buff; } else counter_limit_change--; } else { Player_Puzzles[k].color = LIGHTMAGENTA; which_change[k] = NULL; counter_limit_change--; } printPlayerPuzzles(PLAYER_PUZZLES_X, PLAYER_PUZZLES_Y, Player_Puzzles); } } while (which_buff != 'w' && which_buff != 0x0d); changePuzzles(Player_Puzzles, which_change, Game_Puzzles); }