Игра 21 очко: Доработать проверку вводимых символов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Вот есть игрушка в 21 очко. Всё хорошо работает, но стоит задача немного это доработать: 1) Нужно доработать проверку вводимых символов (ans != 'n'), чтобы программа адекватно отрабатывала, если вводимый символ ни n и ни y. 2) В этой программе компьютер останавливает набор карт по условию while (komp<17). Изменить условие так, чтобы останов набора карт происходил с различными (случайными) уставками из разумно применимых пределов: komp<(уставка) Помогите пожалуйста!
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
 
int koloda[13] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 11 };
 
int karta() { return  rand() % 13; }
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int igrok, komp, kart;
    char  ans, buf;
 
    time_t t;
    srand((unsigned)time(&t));
 
    do
    {
        printf("\n****************** Игра начинается... ***************\n\n");
        komp = 0; igrok = 0;
        do
        {
            kart = karta();
            printf("Ваша карта: %d ", koloda[kart]);
            igrok += koloda[kart];
            printf("\tСумма = %d\n", igrok);
            if (igrok>21)
            {
                printf("У Вас перебор, Вы проиграли!\n ");
                break;
            }
 
            printf("взять еще? ('y' - да, 'n' - нет) : ");
            ans = getchar();
            buf = getchar();
        } while (ans != 'n');
 
        if (igrok <= 21)
        {
            printf("\nКарты компьютера:");
            do
            {
                kart = karta();
                printf(" %d", koloda[kart]);
                komp += koloda[kart];
            } while (komp<17);
            printf("\t Сумма = %d", komp);
            if (igrok>komp) printf(" \n\nПоздравляем, Вы выиграли! \n");
            if (igrok == komp) printf(" \n\nНичья! \n");
            if (igrok<komp && komp <= 21)  printf(" \n\nВы проиграли! \n");
            if (igrok<komp && komp>21) printf("\n\nУ компьютера перебор, Вы выиграли! \n");
        }
        printf(" \nиграть еще? ('y' - да, 'n' - нет) : ");
        ans = getchar();
        buf = getchar();
    } while (ans != 'n');
 
    printf(" \n Спасибо за игру!!! Для выхода нажмите Enter! \n ");
    _getch();
}

Решение задачи: «Игра 21 очко: Доработать проверку вводимых символов»

textual
Листинг программы
        if (igrok <= 21)
        {
            printf("\nКарты компьютера:");
            do
            {
                kart = karta();
                printf(" %d", koloda[kart]);
                komp += koloda[kart];
            } while (komp<17);
            printf("\t Сумма = %d", komp);
            if (igrok>komp) printf(" \n\nПоздравляем, Вы выиграли! \n");
            if (igrok == komp) printf(" \n\nНичья! \n");
            if (igrok<komp && komp <= 21)  printf(" \n\nВы проиграли! \n");
            if (igrok<komp && komp>21) printf("\n\nУ компьютера перебор, Вы выиграли! \n");
        }
        printf(" \nиграть еще? ('y' - да, 'n' - нет) : ");
 
        while ((ans = _getch())!='y' && ans!='n')
        printf("Only \'y\' or \'n\'\n");
 
            printf("%c\n",ans);
 
        } while (ans != 'n');

Объяснение кода листинга программы

  1. igrok - переменная, представляющая количество очков игрока.
  2. koloda - массив, содержащий количество очков в каждой карте.
  3. kart - переменная, используемая в качестве счетчика для прохождения по массиву koloda.
  4. komp - переменная, представляющая сумму очков компьютера.
  5. printf - функция вывода информации на экран.
  6. do-while цикл используется для вывода карт компьютера и суммирования очков.
  7. if условия используются для проверки и вывода различных сообщений в зависимости от результата игры.
  8. while цикл используется для запроса у игрока продолжения игры.
  9. _getch - функция, используемая для получения ввода от игрока.
  10. ans - переменная, используемая для хранения ввода игрока.
  11. printf - функция, используемая для вывода сообщения на экран.
  12. char - тип данных, используемый для хранения символов, в данном случае, ввода игрока.
  13. n - символ, используемый для обозначения конца игры.
  14. y - символ, используемый для обозначения продолжения игры.
  15. only \'y\' or \'n\' - сообщение, выводимое на экран при неправильном вводе игрока.
  16. karta - функция, генерирующая случайное число от 1 до 6, представляющее карту компьютера.
  17. getch - функция, используемая для получения ввода от игрока.
  18. n - символ, используемый для обозначения конца игры.
  19. y - символ, используемый для обозначения продолжения игры.
  20. printf - функция, используемая для вывода сообщения на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5