多米诺骨牌计划。我不知道如何将我的矢量拉到空白中以打印出来
Dominoes program. I can't figure out how to pull my vector into a void to print it out
所以我被困在如何将我的向量从shuffle拉到printDom上。我只想显示播放器。我也不知道我将如何开始游戏。我计划将起始多米诺骨牌放入其自己的向量中,然后每当用户或计算机播放多米诺骨牌时,它都会将其放在多米诺骨牌的末尾或开头。我计划使用push_back并插入将它们放入播放的多米诺骨牌向量中。我还计划使用空来检查玩家Dom和计算机Dom,以找出谁赢了。我的主要问题是:如何将向量从随机播放传递到函数中?任何帮助将不胜感激。
#include <iostream>
#include <string>
#include <map>
#include <iterator>
#include <vector>
#include <algorithm>
//#include <cstdlib>
#include <ctime>
using namespace std;
class Domino {
public:
vector<string> shuffle(vector<string> a, vector<string> b, vector<string> c);
void goesFirst();
void winner();
};
class Player : public Domino {
public:
vector <string> playerDom;
void menu(int);
void printDom(vector<string> playerDom);
void addBoneyard();
void head();
void tail();
void pass();
};
vector<string> Domino::shuffle(vector<string> a, vector<string> b,
vector<string> c) {
typedef map<int, string> boneyard;
boneyard m;
m[1] = "[0|1]";
m[2] = "[0|2]";
m[3] = "[0|3]";
m[4] = "[0|4]";
m[5] = "[0|5]";
m[6] = "[0|6]";
m[7] = "[1|2]";
m[8] = "[1|3]";
m[9] = "[1|4]";
m[10] = "[1|5]";
m[11] = "[1|6]";
m[12] = "[2|3]";
m[13] = "[2|4]";
m[14] = "[2|5]";
m[15] = "[2|6]";
m[16] = "[3|4]";
m[17] = "[3|5]";
m[18] = "[3|6]";
m[19] = "[4|5]";
m[20] = "[4|6]";
m[21] = "[5|6]";
m[22] = "[0|0]";
m[23] = "[1|1]";
m[24] = "[2|2]";
m[25] = "[3|3]";
m[26] = "[4|4]";
m[27] = "[5|5]";
m[28] = "[6|6]";
vector <string> bone;
for (boneyard::iterator it = m.begin(); it != m.end(); it++) {
bone.push_back(it->second);
}
random_shuffle(bone.begin(), bone.end());
int n = 6, i = 0;
vector<string>playerDom(bone.begin(), bone.begin() + n);
for (i = 0; i < playerDom.size(); i++) {
cout << playerDom[i];
}
cout << endl;
a = playerDom;
vector<string>compDom(bone.end() - n, bone.end());
for (i = 0; i < compDom.size(); i++) {
cout << compDom[i];
}
cout << endl;
b = compDom;
bone.erase(bone.begin(), bone.begin() + n);
bone.erase(bone.end() - n, bone.end());
for (i = 0; i < bone.size(); i++) {
cout << bone[i];
cout << endl;
}
c = bone;
return a, b, c;
}
void Domino::goesFirst() {
string AI;
bool status = true;
/*for (int i = 0; status && i < 6; i++) {
if (AI[i] = '0,0') {
//idk how to figure out WHICH player will go first, comparing their numbers to figure out
//who has the HIGHER number. Ex. AI has '4,4' but player has '6,6', therefore player goes first
}
else if (AI[i] = '1,1') {
//USE A BINARY SEARCH?
}
else if (AI[i] = '2,2') {
//SUBSTRING USED TO FLIP DOMINOES TO MATCH NUMBERS
}
else if (AI[i] = '3,3') {// [ 2 | 3 ]
//
}
else if (AI[i] = '4,4') {
//
}
else if (AI[i] = '5,5') {
//
}
else if (AI[i] = '6,6') {
//
}
}
// compare computer and player1 dominoes to find who goes first
// whoever has the heaviest of (6,6), (5,5), (4,4), (3,3), (2,2), (1,1)
// goes first*/
return;
}
void Player::printDom(vector<string> a) {
//a = shuffle(a);
for (int i = 0; i < a.size(); i++) {
cout << a[i];
}
return;
}
void Player::addBoneyard() {//BONEYARD MUST BE SHUFFLED FIRST
// get the first domino in the boneyard and add it
// if there are no more dominoes in the boneyard
//then the turn passes
return;
}
void Domino::winner() {
int counter = 0;
// counts elements in array to determine winner
for (int index = 0; index <= 6; index++) {//idk what to add in to count each players pieces
counter++; //it should look similar to the pass function
}
return;
}
void Player::head() {
// place domino on the left, first in the array
//ADD ELEMENT TO FRONT OF VECTOR USE INSERT
return;
}
void Player::tail() {
// place domino on the right, last in the array
//ADD ELEMENT TO END OF VECTOR USE PUSH_BACK
return;
}
void Player::pass() {
//somehow figure out how to continue the game
// passes turn, also passes if the boneyard is empty
return;
}
int printMenu(int choice) {
cout << "Domino Menu" << endl << endl;
cout << "1. Print your dominoes" << endl;
cout << "2. Add a domino to the head of the train" << endl;
cout << "3. Add a domino to the tail of the train" << endl;
cout << "4. Pick a domino from the boneyard" << endl;
cout << "5. Pass your turn (only if bone yard is empty)" << endl;
cout << "6. Print this menu" << endl;
cout << "7. Quit" << endl << endl;
cout << "Please enter a choice: ";
cin >> choice;
return choice;
}
void Player::menu(int choice) {
choice = printMenu(choice);
if (choice == 1) {
//printDom(i);
}
else if (choice == 2) {
head();
}
else if (choice == 3) {
tail();
}
else if (choice == 4) {
addBoneyard();
}
else if (choice == 5) {
pass();
}
else if (choice == 6) {
printMenu(choice);
}
else if (choice == 7) {
exit(0);
}
return;
}
int main()
{
Domino play;
Player play1;
play1.menu(0);
return 0;
}
要操作传递给函数的对象实例(在类型std::vector<std::string>
的情况下(,只需更改函数签名以接受引用:
所以void Player::printDom(vector<string> a) { ... }
变得void Player::printDom(vector<string>& a) { ... }
(注意&
(。
另一种选择是使类的成员函数对其成员进行操作。因此,与其在类成员函数中创建(和管理(std::vector<std::string>
,不如将它们转换为类成员,这实际上只是剪切和粘贴相关的声明行(就像Player
内部vector <string> playerDom;
一样(,但我认为问题的关键是传递对象实例作为引用与&
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 无法通过空白将文本文件行分隔为矢量
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 我如何使它,无论用户用空白字符串按 Enter 多少次,它总是打印"开始"字符串?
- 对象数组打印空白字符串
- 多米诺骨牌计划。我不知道如何将我的矢量拉到空白中以打印出来
- 字符指针值为空白,为什么代码不打印5
- 打印空白,而不是二维数组c++中的整数
- cout<<变量;打印出空白
- 打印所有空白(实际上不打印任何标记)
- 配置解析器打印空白
- 什么会导致死亡<<变量& lt; & lt;“ t";当输出超过终端宽度时,打印空白而不是值
- C++-基本Tic-Tac-Toe程序打印空白屏幕