Xin ý tưởng để giải quyết game thẻ bài

cho em hỏi làm sao để tạo một bộ bài gồm 7 loại bài mỗi loại có 9 con, khi rút ngẫu nhiên một lá thì đặt là đó vào một hàng, có 3 hàng và rút đến lúc nào hết bộ bài thì thôi. mọi người có thể giúp em ý tưởng giải quyết vấn đề này trong bài lập trình mà em làm mãi ko được ạ

Nếu bạn vẫn ko hiểu lắm thì bạn cần tìm hiểu mỗi lượt đi thì có thể làm gì (có thể bản tiếng Anh dễ đọc hơn), sau đó mới tìm hiểu cách setup ván chơi.

Tiếp theo bạn sẽ cần gotoxy :smiley:

4 Likes

hiểu đề nhưng vì mới tiếp xúc lập trình kiến thức chưa đủ để triển khai ạ

cho em hỏi làm sao để tạo một bộ bài gồm 7 loại bài mỗi loại có 9 con, khi rút ngẫu nhiên một lá thì đặt là đó vào một hàng, có 3 hàng và rút đến lúc nào hết bộ bài thì thôi. mọi người có thể giúp em ý tưởng giải quyết vấn đề này trong bài lập trình mà em làm mãi ko được ạ

Tức là có 7 * 9 = 63 lá bài?
Và việc bạn đang muốn làm là chia đều 63 lá bài cho 3 người?

4 Likes

dạ, thực chất là ko hẳn đơn giản như vậy ạ, có 3 hàng, rút một lá ra đặt vào một hàng trong ba hàng, lúc nào hàng đủ 3 lá thì không được đặt nữa, chỉ có thể đặt vào các hàng còn lại hoặc rút bài của một hàng, nếu cả ba hàng đều đã đặt đủ 3 lá rồi thì bắt buộc phải rút về. Nhưng vì em muốn hỏi đơn giản hóa rồi từ đó em sẽ làm phần tiếp theo nên dẫn đến câu hỏi thành hơi sai với yêu cầu bài toán

bài này thật sự khó thật

Đầu tiên bạn loại mấy lá rules với lá bài vòng cuối, sau đó làm cái enum để dễ đọc sau này. Giờ mỗi player có 1 trạng thái gồm 9 loại lá bài :smiley: đại loại thế. Có phương thức tính điểm luôn.

Để rút bài thì cài weighted random :smiley:

4 Likes

em cảm ơn ạ, khó thật

em sẽ làm cái enum cho tất cả các loại lá bài luôn phải ko ạ, vậy nếu khi rút một lá trong enum rồi phải xóa phần tử trong enum đó đi em phải làm thế nào ạ

1 Like

Cái enum là để thay vì phải nhớ slot 0 màu đỏ hay slot 8 là 2+ hay đại loại vậy thì chỉ cần ghi chữ :smiley:

4 Likes

cho em hỏi player có 11 trạng thái gồm 9 lá bài này là gì ạ, có phải em xe dùng mảng ko ạạ

#include<iostream>
#include<ctime>
#include<cstdlib>
#include<vector>
using namespace std;
enum color { red, yellow, grey, green, blue, brown, pink, plus2, joker };
vector<int> arraylist = {
red,yellow,grey,green,blue,brown,pink,plus2,
red,yellow,grey,green,blue,brown,pink,plus2,
red,yellow,grey,green,blue,brown,pink,plus2,
red,yellow,grey,green,blue,brown,pink,plus2,
red,yellow,grey,green,blue,brown,pink,plus2,
red,yellow,grey,green,blue,brown,pink,plus2,
red,yellow,grey,green,blue,brown,pink,plus2,
red,yellow,grey,green,blue,brown,pink,plus2,
red,yellow,grey,green,blue,brown,pink,plus2,
plus2,joker,joker,joker };
//76
int randCard(vector<int> arr) {
	srand(unsigned int(time(NULL)));
	int a;
	a = rand() % (arr.size() + 1);
	return a;
}
vector<int> row1 = {};
vector<int> row2 = {};
vector<int> row3 = {};
vector<int> row4 = {};
vector<int> player1 = {};
vector<int> player2 = {};
vector<int> player3 = {};
vector<int> player4 = {};
bool card = false;
bool card2 = false;
bool card3 = false;
bool card4 = false;
bool dcard = false;
bool dcard2 = false;
bool dcard3 = false;
bool dcard4 = false;
bool takerow1;
bool takerow2;
bool takerow3;
bool takerow4;
bool round_end;
bool player1_end;
bool player2_end;
bool player3_end;
bool player4_end;
bool card_full;
bool takecard_correct = false;
int selection1, selection2, selection3;
int i, a;

int main() {

	while (arraylist.size() != 0) {
		player1_end = false;
		player2_end = false;
		player3_end = false;
		player4_end = false;
		takerow1 = false;
		takerow2 = false;
		takerow3 = false;
		takerow4 = false;
		card_full = false;
		row1.clear();
		row2.clear();
		row3.clear();
		row4.clear();

		while (round_end == false) {

			while (player1_end == false) {
				cout << "lay bai chon 1, rut bai tu hang chon 2"<<endl;
				cin >> selection1;
				if (row1.size() == 3 && row2.size() == 3 && row3.size() == 3 && row4.size() == 3 && selection1 == 1) {
					cout << "cac hang da day card, xin hay rut"<<endl;
					selection1 = 2;
				}
				if (selection1 == 2 && row1.size() == 0 && row2.size() == 0 && row3.size() == 0 && row4.size() == 0) {
					cout << "cac hang deu trong thi rut cai gi, ban se rut bai"<<endl;
					selection1 = 1;
				}
				if (selection1 == 1) {
					i = randCard(arraylist);
					cout << "bai ban rut duoc la: ";
					if (arraylist[i] == red) {
						cout << "red\n";
					}
					if (arraylist[i] == yellow) {
						cout << "yellow\n";
					}
					if (arraylist[i] == grey) {
						cout << "grey\n";
					}
					if (arraylist[i] == green) {
						cout << "green\n";
					}
					if (arraylist[i] == pink) {
						cout << "pink\n";
					}
					if (arraylist[i] == blue) {
						cout << "blue\n";
					}
					if (arraylist[i] == brown) {
						cout << "brown\n";
					}
					if (arraylist[i] == plus2) {
						cout << "plus2\n";
					}
					if (arraylist[i] == joker) {
						cout << "joker";
					}
					arraylist.erase(arraylist.begin() + i);
					card = false;
					while (card == false) {
						cout << "ban muon dat bai vao hang nao"<<endl;
						cin >> selection2;
						switch (selection2) {
						case 1:
							if (takerow1 == false) {
								if (row1.size() < 3) {
									row1.push_back(i);
									card = true;
								}
								else { cout << "hang da day"; }
							}
							else { cout << "hang da bi rut"; }
							break;
						case 2:
							if (takerow2 == false) {
								if (row2.size() < 3) {
									row2.push_back(i);
									card = true;
								}
								else { cout << "hang da day"; }
							}
							else { cout << "hang da bi rut"; }
							break;
						case 3:
							if (takerow3 == false) {
								if (row3.size() < 3) {
									row3.push_back(i);
									card = true;
								}
								else { cout << "hang da day"; }
							}
							else { cout << "hang da bi rut"; }
							break;
						case 4:
							if (takerow4 == false) {
								if (row4.size() < 3) {
									row4.push_back(i);
									card = true;
								}
								else { cout << "hang da day"; }
							}
							else { cout << "hang da bi rut"; }
							break;
						default:
							cout << "nhap lai";
						}
					}

				}for (a = 0; a < player1.size(); a++) {
					cout << player1[a];
				}
				break;
				if (selection2 == 2) {
					do {
						takecard_correct = false;
						cout << "chon hang ban muon rut" << endl;
						cin >> selection3;
						switch (selection3) {
						case 1:
							if (takerow1 == false) {
								if (row1.size() > 0) {
									for (a = 0; a < row1.size(); a++) {
										player1.push_back(row1[a]);
									}
									takecard_correct = true;
									player1_end = true;
								}
								else { cout << "hang ko co gi de rut, chon hang khac"; }
							}
							else { cout << "hang da bi rut, hay chon hang khac"; }
						case 2:
							if (takerow2 == false) {
								if (row2.size() > 0) {
									for (a = 0; a < row2.size(); a++) {
										player1.push_back(row2[a]);
									}
									takecard_correct = true;
									player1_end = true;
								}
								else { cout << "hang ko co gi de rut, chon hang khac"; }
							}
							else { cout << "hang da bi rut, hay chon hang khac"; }
						case 3:
							if (takerow3 == false) {
								if (row3.size() > 0) {
									for (a = 0; a < row1.size(); a++) {
										player1.push_back(row3[a]);
									}
									takecard_correct = true;
									player1_end = true;
								}
								else { cout << "hang ko co gi de rut, chon hang khac"; }
							}
							else { cout << "hang da bi rut, hay chon hang khac"; }
						case 4:
							if (takerow4 == false) {
								if (row4.size() > 0) {
									for (a = 0; a < row4.size(); a++) {
										player1.push_back(row4[a]);
									}
									takecard_correct = true;
									player1_end = true;
								}
								else { cout << "hang ko co gi de rut, chon hang khac"; }
							}
							else { cout << "hang da bi rut, hay chon hang khac"; }
						}

					} while (takecard_correct == false);

				}
			}
				if (player1_end == true) {

					if (takerow1 == false) {
						cout << "hang 1:\n";
						for (a = 0; a < row1.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] = joker) {
								cout << "joker";
							}
						}
					}
					else {
						cout << "hang da bi lay roi";
					}
					if (takerow2 == false) {
						cout << "hang 2:\n";
						for (a = 0; a < row2.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] = joker) {
								cout << "joker";
							}
						}
					}
					else {
						cout << "hang da bi lay roi";
					}
					if (takerow3 == false) {
						cout << "hang 3:\n";
						for (a = 0; a < row3.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					else {
						cout << "hang da bi lay roi";
					}
					if (takerow4 == false) {
						cout << "hang 4:\n";
						for (a = 0; a < row4.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					else {
						cout << "hang da bi lay roi";
					}

				}
		//player2
			while (player2_end == false) {
				selection1 = rand() % 2 + 1;
				if ((row1.size() == 3 && row2.size() == 3 && row3.size() == 3 && row4.size() == 3) && selection1 == 1) {
					selection1 = 2;
				}
				if (selection1 == 2 && (row1.size() == 0 && row2.size() == 0 && row3.size() == 0 && row4.size() == 0)) {
					selection1 = 1;
				}
				if (selection1 == 1) {
					i = randCard(arraylist);
					arraylist.erase(arraylist.begin() + i);
					card = false;
					while (card == false) {
						selection2 = rand() % 4 + 1;
						switch (selection2) {
						case 1:
							if (takerow1 == false) {
								if (row1.size() < 3) {
									row1.push_back(i);
									card = true;
								}
							}
							break;
						case 2:
							if (takerow2 == false) {
								if (row2.size() < 3) {
									row2.push_back(i);
									card = true;
								}
							}
							break;
						case 3:
							if (takerow3 == false) {
								if (row3.size() < 3) {
									row3.push_back(i);
									card = true;
								}
							}
							break;
						case 4:
							if (takerow4 == false) {
								if (row4.size() < 3) {
									row4.push_back(i);
									card = true;
								}
							}
							break;
						}
					}
					break;

				}
				if (selection2 == 2) {
					do {
						takecard_correct = false;
						cin >> selection3;
						switch (selection3) {
						case 1:
							if (takerow1 == false) {
								if (row1.size() > 0) {
									for (a = 0; a < row1.size(); a++) {
										player2.push_back(row1[a]);
									}
									takecard_correct = true;
									player2_end = true;
								}
							}
						case 2:
							if (takerow2 == false) {
								if (row2.size() > 0) {
									for (a = 0; a < row2.size(); a++) {
										player2.push_back(row2[a]);
									}
									takecard_correct = true;
									player2_end = true;
								}
							}
						case 3:
							if (takerow3 == false) {
								if (row3.size() > 0) {
									for (a = 0; a < row1.size(); a++) {
										player2.push_back(row3[a]);
									}
									takecard_correct = true;
									player2_end = true;
								}
							}
						case 4:
							if (takerow4 == false) {
								if (row4.size() > 0) {
									for (a = 0; a < row4.size(); a++) {
										player2.push_back(row4[a]);
									}
									takecard_correct = true;
									player2_end = true;
								}
							}
						}

					} while (takecard_correct == false);

				}
				if (player2_end == true) {

					if (takerow1 == false) {
						cout << "hang 1: \n";
						for (a = 0; a < row1.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					if (takerow2 == false) {
						cout << "hang 2:\n";
						for (a = 0; a < row2.size(); a++) {
							if (arraylist[i] = red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					if (takerow3 == false) {
						cout << "hang 3:\n";
						for (a = 0; a < row3.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] ==grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					if (takerow4 == false) {
						cout << "hang 4:\n";
						for (a = 0; a < row4.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
				}
			}//AI3
			while (player3_end == false) {
				selection1 = rand() % 2 + 1;
				if ((row1.size() == 3 && row2.size() == 3 && row3.size() == 3 && row4.size() == 3) && selection1 == 1) {
					selection1 = 2;
				}
				if (selection1 == 2 && (row1.size() == 0 && row2.size() == 0 && row3.size() == 0 && row4.size() == 0)) {
					selection1 = 1;
				}
				if (selection1 == 1) {
					i = randCard(arraylist);
					arraylist.erase(arraylist.begin() + i);
					card = false;
					while (card == false) {
						selection2 = rand() % 4 + 1;
						switch (selection2) {
						case 1:
							if (takerow1 == false) {
								if (row1.size() < 3) {
									row1.push_back(i);
									card = true;
								}
							}
							break;
						case 2:
							if (takerow2 == false) {
								if (row2.size() < 3) {
									row2.push_back(i);
									card = true;
								}
							}
							break;
						case 3:
							if (takerow3 == false) {
								if (row3.size() < 3) {
									row3.push_back(i);
									card = true;
								}
							}
							break;
						case 4:
							if (takerow4 == false) {
								if (row4.size() < 3) {
									row4.push_back(i);
									card = true;
								}
							}
							break;
						}
					}
					break;

				}
				if (selection2 == 2) {
					do {
						takecard_correct = false;
						cin >> selection3;
						switch (selection3) {
						case 1:
							if (takerow1 == false) {
								if (row1.size() > 0) {
									for (a = 0; a < row1.size(); a++) {
										player3.push_back(row1[a]);
									}
									takecard_correct = true;
									player3_end = true;
								}
							}
						case 2:
							if (takerow2 == false) {
								if (row2.size() > 0) {
									for (a = 0; a < row2.size(); a++) {
										player3.push_back(row2[a]);
									}
									takecard_correct = true;
									player3_end = true;
								}
							}
						case 3:
							if (takerow3 == false) {
								if (row3.size() > 0) {
									for (a = 0; a < row1.size(); a++) {
										player3.push_back(row3[a]);
									}
									takecard_correct = true;
									player3_end = true;
								}
							}
						case 4:
							if (takerow4 == false) {
								if (row4.size() > 0) {
									for (a = 0; a < row4.size(); a++) {
										player3.push_back(row4[a]);
									}
									takecard_correct = true;
									player3_end = true;
								}
							}
						}

					} while (takecard_correct == false);

				}
				if (player3_end == true) {

					if (takerow1 == false) {
						cout << "hang 1:\n ";
						for (a = 0; a < row1.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					if (takerow2 == false) {
						cout << "hang 2:\n";
						for (a = 0; a < row2.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					if (takerow3 == false) {
						cout << "hang 3:\n";
						for (a = 0; a < row3.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					if (takerow4 == false) {
						cout << "hang 4:\n";
						for (a = 0; a < row4.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
				}
			}//AI4
			while (player4_end == false) {
				selection1 = rand() % 2 + 1;
				if ((row1.size() == 3 && row2.size() == 3 && row3.size() == 3 && row4.size() == 3) && selection1 == 1) {
					selection1 = 2;
				}
				if (selection1 == 2 && (row1.size() == 0 && row2.size() == 0 && row3.size() == 0 && row4.size() == 0)) {
					selection1 = 1;
				}
				if (selection1 == 1) {
					i = randCard(arraylist);
					arraylist.erase(arraylist.begin() + i);
					card = false;
					while (card == false) {
						selection2 = rand() % 4 + 1;
						switch (selection2) {
						case 1:
							if (takerow1 == false) {
								if (row1.size() < 3) {
									row1.push_back(i);
									card = true;
								}
							}
							break;
						case 2:
							if (takerow2 == false) {
								if (row2.size() < 3) {
									row2.push_back(i);
									card = true;
								}
							}
							break;
						case 3:
							if (takerow3 == false) {
								if (row3.size() < 3) {
									row3.push_back(i);
									card = true;
								}
							}
							break;
						case 4:
							if (takerow4 == false) {
								if (row4.size() < 3) {
									row4.push_back(i);
									card = true;
								}
							}
							break;
						}
					}
					break;

				}
				if (selection2 == 2) {
					do {
						takecard_correct = false;
						cin >> selection3;
						switch (selection3) {
						case 1:
							if (takerow1 == false) {
								if (row1.size() > 0) {
									for (a = 0; a < row1.size(); a++) {
										player4.push_back(row1[a]);
									}
									takecard_correct = true;
									player4_end = true;
								}
							}
						case 2:
							if (takerow2 == false) {
								if (row2.size() > 0) {
									for (a = 0; a < row2.size(); a++) {
										player4.push_back(row2[a]);
									}
									takecard_correct = true;
									player4_end = true;
								}
							}
						case 3:
							if (takerow3 == false) {
								if (row3.size() > 0) {
									for (a = 0; a < row1.size(); a++) {
										player4.push_back(row3[a]);
									}
									takecard_correct = true;
									player4_end = true;
								}
							}
						case 4:
							if (takerow4 == false) {
								if (row4.size() > 0) {
									for (a = 0; a < row4.size(); a++) {
										player4.push_back(row4[a]);
									}
									takecard_correct = true;
									player4_end = true;
								}
							}
						}

					} while (takecard_correct == false);

				}
				if (player4_end == true) {

					if (takerow1 == false) {
						cout << "hang 1:\n ";
						for (a = 0; a < row1.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					if (takerow2 == false) {
						cout << "hang 2:\n";
						for (a = 0; a < row2.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					if (takerow3 == false) {
						cout << "hang 3:\n";
						for (a = 0; a < row3.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
					if (takerow4 == false) {
						cout << "hang 4:\n";
						for (a = 0; a < row4.size(); a++) {
							if (arraylist[i] == red) {
								cout << "red";
							}
							if (arraylist[i] == yellow) {
								cout << "yellow";
							}
							if (arraylist[i] == grey) {
								cout << "grey";
							}
							if (arraylist[i] == green) {
								cout << "green";
							}
							if (arraylist[i] == pink) {
								cout << "pink";
							}
							if (arraylist[i] == blue) {
								cout << "blue";
							}
							if (arraylist[i] == brown) {
								cout << "brown";
							}
							if (arraylist[i] == plus2) {
								cout << "plus2";
							}
							if (arraylist[i] == joker) {
								cout << "joker";
							}
						}
					}
				}
			}
			if (takerow1 == true && takerow2 == true && takerow3 == true && takerow4 == true) {
				round_end = true;
			}
			for (a = 0; a < player1.size(); a++) {
				cout << player1[a];
			}

		}
	}
}

em đã viết ra thế này rồi, nhưng chạy lỗi ko biết đường nào mà sửa, có tiền bối nào giúp em kiểm tra được ko ạ

bài này khó thật sự ý, muốn giúp bạn giải mà khó quá ạ

1 Like

cảm ơn vì bạn cũng nhận ra điều đó, nó phức tạp vì luật chơi, có nhiều trường hợp để giải quyết

Bạn cần chia nhỏ chương trình của mình ra thành nhiều phần nhỏ (hàm con). Với mỗi hàm, document lại chi tiết coi hàm đó làm gì, rồi test hàm. Sau khi hàm trả về như mong muốn rồi mới code hàm kế tiếp.

Viết chương trình dài thế kia là cũng có cố gắng. Nhưng chính bạn còn không đọc được code của bạn thì ai làm được nữa. Mình hỏi bạn nhé, nếu mình đưa chương trình của mình như thế cho bạn rồi nhờ bạn soát lỗi giúp thì bạn có làm được không?

4 Likes

Bài này ko dùng struct và hàm thì khoai đấy.

  • Player gồm tên, các lá bài đang giữ và hàm tính điểm
  • Tạo mảng & khởi tạo 4 Player (sẽ cần đa hình :smiley: ad-hoc thôi)
  • Tạo struct trạng thái gồm bộ bài, row cards, trạng thái lấy bài
  • Xào bài
  • Cho đến khi còn 15 lá thì gọi từng Player chưa lấy row bằng hàm take_turn() của Player.
  • Lặp lần cuối cùng cho đến khi lấy hết row.
  • Gọi hàm tính điểm và tổng kết.
5 Likes

cảm ơn anh ạ, để em áp dụng

mình có nói gì đâu nhỉ.

Mình không phải đang muốn làm khó bạn, mà mình hỏi thật. Nếu mình đưa chương trình như thế rồi nhờ bạn soát lỗi giúp thì bạn có làm được không?
Tiêu chuẩn của code để bạn đọc hiểu được như thế nào thì tiêu chuẩn mà người khác khi đọc code của bạn yêu cầu cũng như thế.
Bạn đang học code ở đâu? Họ chưa dạy bạn cấu trúc của một chương trình mà đã cho làm project như thế này, để học sinh bỏ toàn bộ code vào trong hàm main? Mình khuyên bạn nên kiếm chỗ khác để tránh lãng phí thời gian.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?