Вы можете сделать цикл, который останавливается, если пользователь хочет, или fish
меньше 0
, создав цикл while
, который зависит от некоторого логического playing
, который изначально true
.Поэтому, если происходит одно из двух событий, установите playing
равным false
и цикл остановится:
int main() {
//variables
bool playing = true;
while (playing) {
int fish = 100;
//poker game
if (fish < 0) { //no money
playing = false;
}
else {
char input;
std::cout << "would you like to play again? (y/n): ";
std::cin >> input;
if (input != 'y') {
playing = false;
}
}
}
}
, как вы можете видеть, это повторяется, пока я не введу что-то, что не 'y'
:
would you like to play again? (y/n): y
would you like to play again? (y/n): y
would you like to play again? (y/n): n
чтобы выбрать случайный элемент из массива, вы бы использовали утилиты из <random>
как их std::mersenne_twister_engine
.Чтобы получить случайный элемент из массива, вам просто нужно создать случайное число и использовать его в качестве индекса массивов:
#include <iostream>
#include <random>
int main() {
std::random_device rd;
std::mt19937_64 engine(rd());
std::uniform_int_distribution<int> distribution(0, 8);
int cards[9] = { 2,3,4,5,6,7,8,9,10 };
while (true) {
std::cout << cards[distribution(engine)] << '\n';
}
}
отсюда некоторые важные вещи:
std::random_device rd;
std::mt19937_64 engine(rd());
isсделано только один раз (никогда не в цикле).Это для инициализации вашего псевдослучайного генератора engine
.
std::uniform_int_distribution<int> distribution(0, 8);
добавляет распределение.Обратите внимание, что поскольку у вашего int cards[9]
есть 9
элементов, диапазон должен быть от 0
до 8
, так как массивы начинаются с 0
и заканчиваются их размером - 1, как вы, возможно, уже знаете.:)
Запустив эту программу, вы можете увидеть, как она случайным образом распечатывает номера карт от 2
до 10
:
2
10
7
9
2
4
9
10
8
9
8
6
8
2
10
Это ваши вспомогательные пункты для дальнейшей реализации.Я добавляю еще кое-что, что заметил в вашем коде, но не является необходимым для самого вопроса.
Вы должны заметить, что вам не следует use namespace std
- вы можете прочитать здесь почему,
Также вместо:
char seed[4][10] = { "hearts","clubs","diamonds","spades" };
используйте:
std::string seed[4] = { "hearts","clubs","diamonds","spades" };
Для использования std::string
включите <string>
header.
Вы написали std::cin >> name;
, но это не работает для строк с пробелами, как показано здесь:
Welcome in PokerBash! Please enter your name:
Stack Danny
Your name is Stack
Чтобы получить полное имя, используйте
std::getline(std::cin, name);