Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- string briscola="spade";
- class Card { // The class
- public: // Access specifier
- int rank; // Attribute
- int seme_i;
- string seme;
- string nome;
- int valore; // Attribute // Attribute
- Card (){
- }
- Card(int x, int y) { // Constructor with parameters
- rank = x;
- seme_i = y;
- switch (y) {
- case 0:
- seme = "denari";
- break;
- case 1:
- seme = "spade";
- break;
- case 2:
- seme = "coppe";
- break;
- case 3:
- seme = "bastoni";
- break;
- default:
- seme = "porcodio";
- }
- switch (x) {
- case 0:
- nome = "due";
- valore = 0;
- break;
- case 1:
- nome = "quattro";
- valore = 0;
- break;
- case 2:
- nome = "cinque";
- valore = 0;
- break;
- case 3:
- nome = "sei";
- valore = 0;
- break;
- case 4:
- nome = "sette";
- valore = 0;
- break;
- case 5:
- nome = "fante";
- valore = 2;
- break;
- case 6:
- nome = "cavallo";
- valore = 3;
- break;
- case 7:
- nome = "re";
- valore = 4;
- break;
- case 8:
- nome = "tre";
- valore = 10;
- break;
- case 9:
- nome = "asso";
- valore = 11;
- break;
- default:
- nome ="er mejo de";
- valore=0;
- }
- }
- string toString(){
- string daje;
- daje+=" "+nome+" di "+seme;
- return daje;
- }
- };
- bool confronta(Card carta1, Card carta2){
- if (carta1.seme == carta2.seme){
- if (carta1.rank > carta2.rank)
- return true;
- else
- return false;
- }
- else if (carta1.seme == briscola)
- return true;
- else if (carta2.seme == briscola)
- return false;
- else
- return true;
- }
- Card minima(Card carta1, Card carta2){
- return carta1.rank < carta2.rank ? carta1 : carta2;
- }
- int main()
- {
- cout << "daje";
- //printf("\033c");
- cout << "\033c";
- int sceltafatta = 0;
- int boh = 0;
- while (true) {
- cout <<"scelte sicure: " << sceltafatta << "\t\t\t\t\t casi particolari: " << boh;
- string x;
- srand(time(NULL));
- Card mazzo[40];
- int cont=0;
- for (int i=0;i<4;i++){
- for (int j=0;j<10;j++){
- Card comodo(j,i);
- mazzo[cont] = comodo;
- cont++;
- }
- }
- Card app;
- for (int i=0;i<4;i++){
- int chosenCard = rand()%(40-i);
- app = mazzo[chosenCard];
- mazzo[chosenCard] = mazzo[39-i];
- mazzo[39-i] = app;
- }
- Card c0,c1,g0,g1;
- Card cartaScelta(10,10);
- Card ngulo = cartaScelta;
- c0 = mazzo[39];
- c1 = mazzo[38];
- g0 = mazzo[37];
- g1 = mazzo[36];
- // 0d 1s 2c 3b
- /*Card c00(2,3);
- Card c01(1,1);
- Card g00(5,3);
- Card g01(7,1);
- c0=c00;
- c1=c01;
- g0=g00;
- g1=g01;*/
- cout << "\n\n\nbriscola: " << briscola << endl << endl;
- cout << "carteCPU:"<<endl;
- cout << c0.toString() << endl;
- cout << c1.toString() << endl ;
- cout << endl << "carteGiocatore:"<<endl;
- cout << g0.toString() << endl;
- cout << g1.toString() << endl ;
- cout << "cosa deve giocare la cpu?\n";
- int ps0 = 0; //rank se gioco prima carta
- int ps1 = 0; //rank se gioco seconda carta
- //la prima (giocata da primo) prende su entrambe
- /* da cancellare */
- if (confronta(c0,g0) && confronta(c0,g1) && confronta(c1,g0) && confronta(c1,g1)){
- cout << "BONAAAAAA\n ricomincia:";
- }
- if (confronta(c0,g0) && confronta(c0,g1)){
- cartaScelta = c0;
- cout << c0.toString() << "PRESA SICURA";
- }
- //la prima (giocata da primo) non prende mai
- else if (!confronta(c0,g0) && !confronta(c0,g1)) {
- //se non prendo una sega per certo
- //da cancellare
- if (confronta (g0,c1) && confronta(g1,c1)) {
- //se gioco c0 con c1 non prendo mai, quindi dirò di non giocare c0
- cout << "\nSE GIOCHI A PRIMA CE SE NCULA";
- cartaScelta = c1;
- }
- if (!confronta (g0,c1) || !confronta(g1,c1)) {
- cout << "\nSE GIOCHI A PRIMA CE SE NCULICCHIA\n";
- cartaScelta = c1;
- cout << "\t0-0"<<endl;
- cout << "\tx-x"<<endl << endl;
- }
- }
- //la seconda (giocata da primo) prende su entrambe
- if (confronta(c1,g0) && confronta(c1,g1)){
- cartaScelta = c1;
- cout << c1.toString() << "PRESA SICURA";
- }
- //se la seconda (giocata da primo) non prende mai
- else if (!confronta(c1,g0) && !confronta(c1,g1)) {
- if (confronta (g0,c0) && confronta(g1,c0)) {
- cout << "\nSE GIOCHI A SECONNA CE SE NCULA";
- cartaScelta = c0;
- }
- if (!confronta (g0,c0) || !confronta(g1,c0)) {
- cout << "\nSE GIOCHI A SECONNA CE SE NCULICCHIA\n";
- cartaScelta = c0;
- cout << "\tx-x"<<endl;
- cout << "\t0-0"<<endl<< endl;
- }
- }
- if (cartaScelta.seme_i == 10) {
- if (confronta (c0,g0) || confronta(c0,g1)){//x alto a sinistra
- cartaScelta=c0;
- cout << "\tx-0"<<endl;
- cout << "\t0-0"<<endl<< endl;
- if (confronta (c1,g0) || confronta(c1,g1)) {//x alto a sinistra + x basso a sinistra
- //più bassa e valutazione
- /*
- caso particolare in cui è molto difficile prendere, poiché è possibile farlo soltanto alla prima giocata
- per questo si giocherà in base al valore delle carte, in particolare si tenterà di indurre all'errore
- il giocatore giocando la carta più bassa inducendolo a scartare eventuali punti piuttosto che prendere
- (l'unico caso che ha senso valutare è
- giocatore briscola e 1 seme
- cpu 2 semi diversi da quelli del giocatore)
- tuttavia nel caso in cui questo tentativo porterebbe non più di zero punti, e la carta rimanente non sia un carico
- gioco la più alta.
- */
- cartaScelta=min(c0,c1);
- if ()
- cout << "\tx-0"<<endl;
- cout << "\tx-0"<<endl<< endl;
- if (!confronta (g0,c0) || !confronta(g1,c0)){// x alto a sinistra + x basso a sinistra + x alto a destra
- cartaScelta=c1;
- cout << "\tx-x"<<endl;
- cout << "\tx-0"<<endl<< endl;
- if (!confronta (g0,c1) || !confronta(g1,c1)){
- //tutte x da valutare
- /*
- caso particolare in cui si riuscirà a fare un presa ma totalmente dipendente dalla giocata del giocatore.
- (guarda foto)
- non è male giocare la più bassa
- */
- cartaScelta=min(c0,c1);
- cout << "\tx-x"<<endl;
- cout << "\tx-x"<<endl<< endl;
- }
- }
- else if (!confronta (g0,c1) || !confronta(g1,c1)){ //x alto a sinistra + x basso a sinistra + x basso a destra
- cartaScelta=c0;
- cout << "\tx-0"<<endl;
- cout << "\tx-x"<<endl<< endl;
- }
- }
- }
- else if (confronta (c1,g0) || confronta(c1,g1)){
- cartaScelta=c1;
- cout << "\t0-0"<<endl;
- cout << "\tx-0"<<endl<< endl;
- }
- }
- //a questo punto so per certo se:
- // - prendo sempre
- // non prendo mai se gioco una carta che ce se incula, quindi gioco l'altra
- //rimane solo da valutare il rank.
- //gioco la carta con rank maggiore!
- //se rank è pari, giocherò la carta che, giocata per seconda, mi fa prendere sempre.
- //se non c'è una carta buona di seconda, gioco quella più alta delle due(scelta personale)
- if (cartaScelta.seme_i == 10) {
- boh++;
- }
- else {
- sceltafatta++;
- }
- cout << "\n\n gioca per prima" << cartaScelta.toString();
- cout << "\n ricomincia:";
- cin >> x;
- cout << "\033c";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement