Last active
December 21, 2015 12:57
-
-
Save lmaresz/83741b8519ebf9087dd7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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