Advertisement
Guest User

aa

a guest
Nov 16th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.68 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6. string briscola="spade";
  7.  
  8. class Card {        // The class
  9.   public:          // Access specifier
  10.     int rank;  // Attribute
  11.     int seme_i;
  12.     string seme;
  13.     string nome;
  14.     int valore;  // Attribute    // Attribute
  15.     Card (){
  16.  
  17.     }
  18.     Card(int x, int y) { // Constructor with parameters
  19.       rank = x;
  20.       seme_i = y;
  21.       switch (y) {
  22.         case 0:
  23.           seme = "denari";
  24.           break;
  25.         case 1:
  26.           seme = "spade";
  27.           break;
  28.         case 2:
  29.           seme = "coppe";
  30.           break;
  31.         case 3:
  32.           seme = "bastoni";
  33.           break;
  34.         default:
  35.           seme = "porcodio";
  36.       }
  37.       switch (x) {
  38.         case 0:
  39.           nome = "due";
  40.           valore = 0;
  41.           break;
  42.         case 1:
  43.           nome = "quattro";
  44.           valore = 0;
  45.           break;
  46.         case 2:
  47.           nome = "cinque";
  48.           valore = 0;
  49.           break;
  50.         case 3:
  51.         nome = "sei";
  52.         valore = 0;
  53.           break;
  54.         case 4:
  55.         nome = "sette";
  56.         valore = 0;
  57.           break;
  58.         case 5:
  59.         nome = "fante";
  60.         valore = 2;
  61.           break;
  62.         case 6:
  63.         nome = "cavallo";
  64.         valore = 3;
  65.           break;
  66.         case 7:
  67.         nome = "re";
  68.         valore = 4;
  69.           break;
  70.         case 8:
  71.         nome = "tre";
  72.         valore = 10;
  73.           break;
  74.         case 9:
  75.           nome = "asso";
  76.           valore = 11;
  77.             break;
  78.         default:
  79.         nome ="er mejo de";
  80.         valore=0;
  81.       }
  82.   }
  83.   string toString(){
  84.     string daje;
  85.     daje+=" "+nome+" di "+seme;
  86.     return daje;
  87.   }
  88. };
  89.  
  90. bool confronta(Card carta1, Card carta2){
  91.   if (carta1.seme == carta2.seme){
  92.     if (carta1.rank > carta2.rank)
  93.       return true;
  94.     else
  95.       return false;
  96.     }
  97.   else if (carta1.seme == briscola)
  98.     return true;
  99.   else if (carta2.seme == briscola)
  100.     return false;
  101.   else
  102.     return true;
  103. }
  104. Card minima(Card carta1, Card carta2){
  105.     return carta1.rank < carta2.rank ? carta1 : carta2;
  106. }
  107.  
  108. int main()
  109. {
  110.   cout << "daje";
  111.   //printf("\033c");
  112.   cout << "\033c";
  113.   int sceltafatta = 0;
  114.   int boh = 0;
  115.   while (true) {
  116.   cout <<"scelte sicure: " << sceltafatta << "\t\t\t\t\t casi particolari: " << boh;
  117.   string x;
  118.   srand(time(NULL));
  119.   Card mazzo[40];
  120.   int cont=0;
  121.   for (int i=0;i<4;i++){
  122.     for (int j=0;j<10;j++){
  123.       Card comodo(j,i);
  124.       mazzo[cont] = comodo;
  125.       cont++;
  126.     }
  127.   }
  128.   Card app;
  129.   for (int i=0;i<4;i++){
  130.   int chosenCard = rand()%(40-i);
  131.   app = mazzo[chosenCard];
  132.   mazzo[chosenCard] = mazzo[39-i];
  133.   mazzo[39-i] = app;
  134.   }
  135.  
  136.   Card c0,c1,g0,g1;
  137.   Card cartaScelta(10,10);
  138.   Card ngulo = cartaScelta;
  139.   c0 = mazzo[39];
  140.   c1 = mazzo[38];
  141.   g0 = mazzo[37];
  142.   g1 = mazzo[36];
  143.  
  144.   // 0d 1s 2c 3b
  145.   /*Card c00(2,3);
  146.   Card c01(1,1);
  147.   Card g00(5,3);
  148.   Card g01(7,1);
  149.   c0=c00;
  150.   c1=c01;
  151.   g0=g00;
  152.   g1=g01;*/
  153.   cout << "\n\n\nbriscola: " << briscola << endl << endl;
  154.   cout << "carteCPU:"<<endl;
  155.   cout << c0.toString() << endl;
  156.   cout << c1.toString() << endl ;
  157.   cout << endl << "carteGiocatore:"<<endl;
  158.   cout << g0.toString() << endl;
  159.   cout << g1.toString() << endl ;
  160.   cout << "cosa deve giocare la cpu?\n";
  161.   int ps0 = 0; //rank se gioco prima carta
  162.   int ps1 = 0; //rank se gioco seconda carta
  163.   //la prima (giocata da primo) prende su entrambe
  164.  
  165.   /* da cancellare */
  166.   if (confronta(c0,g0) && confronta(c0,g1) && confronta(c1,g0) && confronta(c1,g1)){
  167.     cout << "BONAAAAAA\n ricomincia:";
  168.   }
  169.  
  170.  
  171.   if (confronta(c0,g0) && confronta(c0,g1)){
  172.     cartaScelta = c0;
  173.     cout << c0.toString() << "PRESA SICURA";
  174.   }
  175.   //la prima (giocata da primo) non prende mai
  176.   else if (!confronta(c0,g0) && !confronta(c0,g1)) {
  177.     //se non prendo una sega per certo
  178.  
  179.     //da cancellare
  180.     if (confronta (g0,c1) && confronta(g1,c1)) {
  181.       //se gioco c0 con c1 non prendo mai, quindi dirò di non giocare c0
  182.       cout << "\nSE GIOCHI A PRIMA CE SE NCULA";
  183.       cartaScelta = c1;
  184.     }
  185.  
  186.     if (!confronta (g0,c1) || !confronta(g1,c1)) {
  187.       cout << "\nSE GIOCHI A PRIMA CE SE NCULICCHIA\n";
  188.       cartaScelta = c1;
  189.       cout << "\t0-0"<<endl;
  190.       cout << "\tx-x"<<endl << endl;
  191.     }
  192.   }
  193.   //la seconda (giocata da primo) prende su entrambe
  194.   if (confronta(c1,g0) && confronta(c1,g1)){
  195.     cartaScelta = c1;
  196.     cout << c1.toString() << "PRESA SICURA";
  197.   }
  198.   //se la seconda (giocata da primo) non prende mai
  199.   else if (!confronta(c1,g0) && !confronta(c1,g1)) {
  200.     if (confronta (g0,c0) && confronta(g1,c0)) {
  201.       cout << "\nSE GIOCHI A SECONNA CE SE NCULA";
  202.       cartaScelta = c0;
  203.     }
  204.     if (!confronta (g0,c0) || !confronta(g1,c0)) {
  205.       cout << "\nSE GIOCHI A SECONNA CE SE NCULICCHIA\n";
  206.       cartaScelta = c0;
  207.       cout << "\tx-x"<<endl;
  208.       cout << "\t0-0"<<endl<< endl;
  209.     }
  210.   }
  211.  
  212.   if (cartaScelta.seme_i == 10) {
  213.     if (confronta (c0,g0) || confronta(c0,g1)){//x alto a sinistra
  214.       cartaScelta=c0;
  215.       cout << "\tx-0"<<endl;
  216.       cout << "\t0-0"<<endl<< endl;
  217.       if (confronta (c1,g0) || confronta(c1,g1)) {//x alto a sinistra + x basso a sinistra
  218.         //più bassa e valutazione
  219.         /*
  220.         caso particolare in cui è molto difficile prendere, poiché è possibile farlo soltanto alla prima giocata
  221.         per questo si giocherà in base al valore delle carte, in particolare si tenterà di indurre all'errore
  222.         il giocatore giocando la carta più bassa inducendolo a scartare eventuali punti piuttosto che prendere
  223.         (l'unico caso che ha senso valutare è
  224.         giocatore briscola e 1 seme
  225.         cpu 2 semi diversi da quelli del giocatore)
  226.         tuttavia nel caso in cui questo tentativo porterebbe non più di zero punti, e la carta rimanente non sia un carico
  227.         gioco la più alta.
  228.         */
  229.         cartaScelta=min(c0,c1);
  230.         if ()
  231.         cout << "\tx-0"<<endl;
  232.         cout << "\tx-0"<<endl<< endl;
  233.         if (!confronta (g0,c0) || !confronta(g1,c0)){// x alto a sinistra + x basso a sinistra + x alto a destra
  234.           cartaScelta=c1;
  235.           cout << "\tx-x"<<endl;
  236.           cout << "\tx-0"<<endl<< endl;
  237.           if (!confronta (g0,c1) || !confronta(g1,c1)){
  238.             //tutte x da valutare
  239.             /*
  240.               caso particolare in cui si riuscirà a fare un presa ma totalmente dipendente dalla giocata del giocatore.
  241.               (guarda foto)
  242.               non è male giocare la più bassa
  243.             */
  244.             cartaScelta=min(c0,c1);
  245.             cout << "\tx-x"<<endl;
  246.             cout << "\tx-x"<<endl<< endl;
  247.           }
  248.         }
  249.         else if (!confronta (g0,c1) || !confronta(g1,c1)){ //x alto a sinistra + x basso a sinistra + x basso a destra
  250.           cartaScelta=c0;
  251.           cout << "\tx-0"<<endl;
  252.           cout << "\tx-x"<<endl<< endl;
  253.         }
  254.       }
  255.     }
  256.     else if (confronta (c1,g0) || confronta(c1,g1)){
  257.       cartaScelta=c1;
  258.       cout << "\t0-0"<<endl;
  259.       cout << "\tx-0"<<endl<< endl;
  260.     }
  261.  
  262.  
  263.   }
  264.   //a questo punto so per certo se:
  265.   // - prendo sempre
  266.   // non prendo mai se gioco una carta che ce se incula, quindi gioco l'altra
  267.  
  268.   //rimane solo da valutare il rank.
  269.   //gioco la carta con rank maggiore!
  270.   //se rank è pari, giocherò la carta che, giocata per seconda, mi fa prendere sempre.
  271.   //se non c'è una carta buona di seconda, gioco quella più alta delle due(scelta personale)
  272.   if (cartaScelta.seme_i == 10) {
  273.     boh++;
  274.   }
  275.   else {
  276.     sceltafatta++;
  277.   }
  278.   cout << "\n\n gioca per prima" << cartaScelta.toString();
  279.   cout << "\n ricomincia:";
  280.   cin >> x;
  281.   cout << "\033c";
  282. }
  283. return 0;
  284. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement