Skip to content

Instantly share code, notes, and snippets.

@lmaresz
Last active December 21, 2015 12:57
Show Gist options
  • Save lmaresz/83741b8519ebf9087dd7 to your computer and use it in GitHub Desktop.
Save lmaresz/83741b8519ebf9087dd7 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <ctime>
#include <cstdlib>
using namespace std;
int myrandom (int i) { return std::rand()%i;}
class Kartya {
public:
int ertek;
int szam;
Kartya () {}
Kartya (int x) {
this -> szam = x;
if (x % 5 == 0) {
if (x % 10 == 0) { //0-ra végzõdik
this -> ertek = 3;
}
else { //5-re végzõdik
this -> ertek = 2;
}
if (x % 11 == 0) { //55
this -> ertek = 7;
}
}
else {
if (x % 11 == 0) { // 11-el osztható
this -> ertek = 5;
}
else { //minden más
this -> ertek = 1;
}
}
}
};
class Jatekos {
public:
bool bot = false;
int pontok = 0;
Kartya kartya;
string nev;
vector <Kartya> slapok;
Jatekos(vector <Kartya> &pakli, string nev) {
for (unsigned int i = 0; i < 10; i++) {
this -> slapok.push_back(pakli[pakli.size()-1]);
pakli.pop_back();
}
this -> nev = nev;
}
};
void JatekosokLetrehozasa(vector <Jatekos> &jatekosok, vector <Kartya> &pakli);
void PakliGeneralasa(vector <Kartya> &pakli);
void PakliKiir(vector <Kartya> pakli);
void AsztalGeneralasa (vector <Kartya> &pakli, vector <vector <Kartya>> &asztal);
void PakliKever(vector <Kartya> &pakli);
void SlapokKiir(Jatekos jatekos);
void AsztalKiir(vector <vector <Kartya>> asztal);
void KorVegeJatekos(Jatekos &jatekos, Kartya kartya, vector <vector <Kartya>> &asztal);
void KartyaVektorKiir (vector <Kartya> vektor);
void Vegeredmeny(vector <Jatekos> jatekosok);
Kartya AsztalraRakas(Jatekos jatekos);
Kartya KorElejeJatekos(Jatekos jatekos, vector <vector <Kartya>> &asztal);
int main () {
srand ( unsigned ( std::time(0) ) );
vector <Kartya> pakli;
vector <vector <Kartya>> asztal;
vector <Jatekos> jatekosok;
vector <Jatekos> jatekosok_vegeztek;
vector <Kartya> kartyak;
PakliGeneralasa(pakli);
PakliKever(pakli);
AsztalGeneralasa(pakli, asztal);
JatekosokLetrehozasa(jatekosok, pakli);
for (int i = 0; i < 10; i++) {
cout << "A " << i+1 << ". kor kezdetet vette" << endl;
for (int j = 0; j < jatekosok.size(); j++) { //minden játékos kiválasztja, melyik lapot szeretné letenni az asztalra
jatekosok[j].kartya = KorElejeJatekos(jatekosok[j], asztal);
}
int x = jatekosok.size();
for (int j = 0; j < x; j++) {
int minimum = 105;
int min_index = 0;
for (int k = 0; k < jatekosok.size(); k++) {
if (jatekosok[k].kartya.szam < minimum) {
minimum = jatekosok[k].kartya.szam;
min_index = k;
}
}
KorVegeJatekos(jatekosok[min_index],jatekosok[min_index].kartya,asztal);
jatekosok_vegeztek.push_back(jatekosok[min_index]);
jatekosok.erase(jatekosok.begin()+min_index);
}
jatekosok.clear();
for (int j = 0; j < jatekosok_vegeztek.size(); j++) {
jatekosok.push_back(jatekosok_vegeztek[j]);
}
jatekosok_vegeztek.clear();
cout << string(100, '\n');
}
Vegeredmeny(jatekosok);
return 0;
}
void Vegeredmeny(vector <Jatekos> jatekosok) {
int maximum = 0;
int max_index;
for (unsigned int i = 0; i < jatekosok.size(); i++) {
cout << jatekosok[i].nev << " pontjai: " << jatekosok[i].pontok << endl;
if (jatekosok[i].pontok > maximum) {
maximum = jatekosok[i].pontok;
max_index = i;
}
}
cout << endl << "A jatek nyertese: " << jatekosok[max_index].nev << endl;
}
void JatekosokLetrehozasa(vector <Jatekos> &jatekosok, vector <Kartya> &pakli) {
cout << "Jatekosok szama: ";
int x;
cin >> x;
for (int i = 0; i < x; i++) {
string nev;
cout << "A(z) " << i+1 << " jatekos neve: ";
cin >> nev;
Jatekos jatekos = Jatekos(pakli, nev);
jatekosok.push_back(jatekos);
}
}
void PakliGeneralasa(vector <Kartya> &pakli) {
for (int i = 1; i < 105; i++) {
pakli.push_back(Kartya(i));
}
}
void PakliKiir(vector <Kartya> pakli) {
cout << endl;
for (unsigned int i = 0; i < pakli.size(); i++) {
cout << "Szam: " << pakli[i].szam << " Ertek: " << pakli[i].ertek << endl;
}
}
void AsztalGeneralasa (vector <Kartya> &pakli, vector <vector <Kartya>> &asztal) {
for (int i = 0; i < 4; i++) {
vector <Kartya> temp;
temp.push_back(pakli[pakli.size()-1]);
asztal.push_back(temp);
pakli.pop_back();
}
}
void PakliKever(vector <Kartya> &pakli) {
random_shuffle ( pakli.begin(), pakli.end(), myrandom);
}
void SlapokKiir(Jatekos jatekos) {
cout << endl << "A lapjaid a kovetkezok: " << endl;
for (int i = 0; i < jatekos.slapok.size(); i++) {
cout << " - " << i+1 << ". lap: " << jatekos.slapok[i].szam << "(" << jatekos.slapok[i].ertek << ")" << endl;
}
cout << endl;
}
void AsztalKiir(vector <vector <Kartya>> asztal) {
for (int i = 0; i < 4; i++) {
cout << i+1 << ". oszlop: ";
for (int j = 0; j < asztal[i].size(); j++) {
cout << asztal[i][j].szam << "(" << asztal[i][j].ertek << ") ; ";
}
cout << endl;
}
}
Kartya AsztalraRakas(Jatekos jatekos) {
int x;
cout << "Add meg, melyik kartyat kivanod az asztalra helyezni: ";
cin >> x;
Kartya kartya = jatekos.slapok[x-1];
return kartya;
}
void KorVegeJatekos(Jatekos &jatekos, Kartya kartya, vector <vector <Kartya>> &asztal) {
vector <int> lehetoseg;
int x;
for (int i = 0; i < jatekos.slapok.size(); i++) {
if (kartya.szam == jatekos.slapok[i].szam) {x = i; break;}
}
for (int i = 0; i < 4; i++) {
int kulonbseg = kartya.szam - asztal[i][asztal[i].size()-1].szam;
lehetoseg.push_back(kulonbseg);
}
bool letehet = false;
int minimum = 105;
int minimum_index = 0;
for (int i = 0; i < lehetoseg.size(); i++) {
if ((minimum > lehetoseg[i]) && (lehetoseg[i] > 0)) {
letehet = true;
minimum = lehetoseg[i];
minimum_index = i;
}
}
if (letehet) {
if ((letehet) && (asztal[minimum_index].size() == 5)) {
int s = 0;
for (int i = 0; i < asztal[minimum_index].size(); i++){
s += asztal[minimum_index][i].ertek;
}
jatekos.pontok += s;
vector <Kartya> uj_oszlop;
uj_oszlop.push_back(kartya);
asztal[minimum_index] = uj_oszlop;
jatekos.slapok.erase(jatekos.slapok.begin()+x);
cout << jatekos.nev << "pontjai:" << jatekos.pontok << endl;
}
else {
cout << "A " << kartya.szam << "(" << kartya.ertek << ")" << " kartya helye " << minimum_index+1 << ". oszlop" << endl;
asztal[minimum_index].push_back(kartya);
jatekos.slapok.erase(jatekos.slapok.begin()+x);
}
}
else {
cout << endl << "A(z) " << jatekos.nev << " kore: " << endl;
cout << "Add meg melyik oszlopot szeretned felvenni:";
int y;
cin >> y;
int s = 0;
for (int i = 0; i < asztal[y-1].size(); i++){
s += asztal[y-1][i].ertek;
}
jatekos.pontok += s;
vector <Kartya> uj_oszlop;
uj_oszlop.push_back(kartya);
asztal[y-1] = uj_oszlop;
jatekos.slapok.erase(jatekos.slapok.begin()+x);
cout << jatekos.nev << "pontjai:" << jatekos.pontok << endl;
}
}
Kartya KorElejeJatekos(Jatekos jatekos, vector <vector <Kartya>> &asztal) {
cout << endl << "A(z) " << jatekos.nev << " kore: " << endl;
AsztalKiir(asztal);
SlapokKiir(jatekos);
Kartya kartya = AsztalraRakas(jatekos);
return kartya;
}
void KartyaVektorKiir (vector <Kartya> vektor) {
for (int i = 0; i < vektor.size(); i++) {
cout << vektor[i].szam << "(" << vektor[i].ertek << ")" << " ";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment