Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2012, 16:07   #11
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
using namespace std;

int takePoints(int);

int main() {
  srand(time(NULL));
  int myPoints = 0, compPoints = 0, answer = 0, answerPoints = 0;
  cout << "Privet. Davajj sygraem v blehkdzhek." << endl << endl;
  cout << "Vvedi 1, chtoby nachat' igru." << endl;
  cout << "Vvedi 2, chtoby uznat' pravila." << endl;
  cout << "Vvedi 3, chtoby vyjjti." << endl;
  cin >> answer;
  switch (answer) {
    case 1:
      system("cls");
      break;
    case 2:
      system("cls");
      cout << "Cel' igry Blehkdzhek – nabrat' karty s summojj ochkov, po vozmozhnosti blizkojj k 21. 21 – ehto maksimum, perebor srazu zhe privodit k porazheniyu." << endl;
      cout << "Chem bol'she summa ochkov, tem vyshe cennost' nabrannykh kart." << endl;
      cout << "Neobkhodimo, pravda, odno utochnenie: tuz i desyatka nazyvayutsya blehkdzhekom i schitayutsya samojj znachimojj kombinaciejj." << endl;
      cout << "Po cennosti ona prevoskhodit lyubye drugie karty, sostavlyayusсhie 21 ochko." << endl << endl;
      cout << "Koroli, damy, valety i desyatki ocenivayutsya v 10 ochkov." << endl;
      cout << "Vse ehti karty ravnoznachny i dlya prostoty nazyvayutsya desyatkami." << endl;
      cout << "Tuzy po zhelaniyu igroka schitayutsya za 11 ochkov ili za 1 ochko." << endl;
      cout << "Ostal'nye karty – v sootvetstvii s ikh rangom (dvojjka – 2 ochka, vos'mjorka – 8 ochkov i t.d.)." << endl;
      cout << "Masti kart znacheniya ne imeyut." << endl << endl;
      cout << "Nazhmi lyubuyu knopku, chtoby nachat' igru." << endl;
      _getch();
      system("cls");
      break;
    case 3:
      return 0;
  }

  do {
    cout << "U tebya " << myPoints << " ochkov." << endl;
    cout << "Budesh' brat' kartu? (0 - net, 1 - da)";
    cin >> answerPoints;
    if (answerPoints == 0)
      break;
    if (answerPoints == 1)
      myPoints = takePoints(myPoints);
    else
      cout << "Oshibka. Vvedi dejjstvie esсhe raz." << endl;
  } while (answerPoints >= 0 && answerPoints <= 1);
  _getch();
  return 0;
}

int takePoints(int points) {
  points = 1 + rand() % 11;
  return points;
}
rrrFer вне форума Ответить с цитированием
Старый 28.10.2012, 16:08   #12
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

вроде бы работает, но над кодом тебе надо поработать еще )
rrrFer вне форума Ответить с цитированием
Старый 28.10.2012, 19:24   #13
Dima-War
Форумчанин
 
Регистрация: 17.03.2012
Сообщений: 105
По умолчанию

Спасибо большое за код, нашел все свои ошибки
Вот только осталась одна проблема, как можно осуществить рестарт игры? Т.е. когда пользователь сыграл, ему должно быть предложено сообщение типа "не хочешь ли сыграть еще раз" и при положительном ответе начать игру сначала. Возможно с использованием goto?

И нашел еще одну ошибку. При вводе любого символа, кроме цифры, программа либо зацикливается, либо просто закрывается. Как можно это исправить?
Dima-War вне форума Ответить с цитированием
Старый 28.10.2012, 19:39   #14
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
И нашел еще одну ошибку. При вводе любого символа, кроме цифры, программа либо зацикливается, либо просто закрывается. Как можно это исправить?
считывай строку, проверяй ее правильность(отсутствие всяких левых символов и т.п.) и если она правильная - продолжай игру, иначе...можешь сообщение об ошибке выдать и предложить ввести строку еще раз.

по первому вопросу отвечу завтра (если никто не опередит)
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц