Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16-ak0001nl combina RTX 5080 Laptop e Ryzen AI 9 HX 375 in un desktop replacement potente e ben raffreddato, con display 240 Hz e dotazione completa. Autonomia limitata e calibrazione non perfetta frenano l'entusiasmo, ma a 2.609 euro è tra le proposte più interessanti della categoria.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-08-2013, 14:29   #1
jokers85
Member
 
Iscritto dal: Jun 2010
Messaggi: 48
[c++] Briscola, consigli per migliorare il programma.

Ho realizzato questo gioco della briscola in c++, e vorrei migliorarlo un po', qualche consiglio?
Tenete presente che ancora non ho studiato ne le classi ne i puntatori.
P.s.:Se non capite bene il codice ditelo che aggiungo qualche commento.
P.p.s: Il programma non da errori di compilazione.

Codice:
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <time.h>

using namespace std;
// mano: quella parte di gioco in cui i 2 giocatori tirano una carta ciascuno
// partita: quella fase di gioco in cui si usa tutto il mazzo
// gioco
struct carte
{      int val;
       char seme;
} briscola;

carte mazzo [46];
carte terra [2];
carte in_manoC[3];
carte in_manoU[3];
carte preseC[40];
carte preseU[40];
int puntC =0;
int puntU =0;
bool mazziereC;
bool primaU;
int cima_mazzo = 6;
int mani;

void stampamazzo() //funzione stampa mazzo a video
{cout << '\n';
 for (int i=0; i<40; i++)
     cout <<  mazzo[i].val << mazzo[i].seme <<  '\t' ;
 cout << '\n';
}

void creamazzo ()  //funzione creazione mazzo
{ int aus;
  for (int i=0; i<40; i++)
      {mazzo[i].val = i%10 +1 ;
       aus = i/10;
       switch (aus)
              { case 0: mazzo[i].seme = 'd' ; break;
                case 1: mazzo[i].seme = 'c' ; break;
	            case 2: mazzo[i].seme = 'b' ; break;
                case 3: mazzo[i].seme = 's' ; break;
              }
      }
  for (int i=40; i<46; i++)
      {mazzo[i].val = 0 ;
       mazzo[i].seme = ' ';
      }
}

void mescolamazzo ()  //funzione mescolamento carte mazzo
{    int scambi, pos1, pos2, ausV;
     char ausS;
     cout << "quanti scambi facciamo?\n scambi = ";
     cin >> scambi;
     for (int i=0; i<scambi; i++)
         {pos1 = rand()% 40;
          pos2 = rand()% 40;
          ausV = mazzo[pos1].val;
          ausS = mazzo[pos1].seme;
          mazzo[pos1].val = mazzo[pos2].val;
          mazzo[pos1].seme = mazzo[pos2].seme;
          mazzo[pos2].val = ausV;
          mazzo[pos2].seme = ausS;
         }
}

void stampamano() //funzione stampa carte in mano al giocatore e al pc + briscola
{cout << "\n-----------------------------mano " << mani+1 << "--------------------\n\ncarteUmano : ";
 for (int i=0; i<3; i++)
     cout << in_manoU[i].val << in_manoU[i].seme << " | ";
 cout << "# BRISCOLA: " << briscola.val << briscola.seme << " #  carteC : ";
 for (int i=0; i<3; i++)
     cout << in_manoC[i].val << in_manoC[i].seme << " | ";
 cout << "\n\n";
}

int punteggio (int vn) //funzione calcolo punteggio
{int p;
 switch (vn)
  { case 1: p=11 ; break;
    case 3: p=10 ; break;
	case 10: p=4 ; break;
	case 9: p=3 ; break;
	case 8: p=2 ; break;
    default: p=0 ;
  }
 return (p);
}

bool supera1 (int vn1, int vn2)  //funzione determina carta valore maggiore
{       int p1, p2;
        bool m1;
        p1 = punteggio(vn1);
        p2 = punteggio(vn2);
        if ((p1 != 0) || (p2 != 0))  m1 = (p1 > p2);
        else m1 = (vn1 > vn2);
        return (m1);
}

bool prendeI() //funzione determina chi prende
{ bool magg1, br2, eg ;
  magg1 = supera1(terra[0].val,terra[1].val);
  br2 = (briscola.seme==terra[1].seme);
  eg = (terra[0].seme==terra[1].seme);
  return ((eg && magg1)||(!eg && !br2));
}

bool tiraprima () //funzione determina primo a giocare
{    bool primo;
     primo = rand() % 2;
     if (primo) cout << "\n gioca per primo  l'umano\n " ;
     else cout << "\n gioca per primo il computer \n " ;// inverti Umsano /Comp
     return primo;
}

void dai_carte () //funzione assegnamento carte
{ if (mazziereC)
     for (int i=0; i<3; i++)
      {in_manoU[i].val = mazzo[i*2].val;
       in_manoU[i].seme = mazzo[i*2].seme;
       in_manoC[i].val = mazzo[i*2+1].val;
       in_manoC[i].seme = mazzo[i*2+1].seme;
      }
  else
      for (int i=0; i<3; i++)
       {in_manoU[i].val = mazzo[i*2+1].val;
        in_manoU[i].seme = mazzo[i*2+1].seme;
        in_manoC[i].val = mazzo[i*2].val;
        in_manoC[i].seme = mazzo[i*2].seme;
       }
}

int richiestaU () //funzione richiesta carte al giocatore
{int pos;
 cout << "                            Quale carta giochi?  1 o 2 o 3 ? Pos carta = ";
 cin >> pos;
 if (primaU)
    {terra[0].val = in_manoU[pos-1].val;
     terra[0].seme = in_manoU[pos-1].seme;
    }
 else
    {terra[1].val = in_manoU[pos-1].val;
     terra[1].seme = in_manoU[pos-1].seme;
    }
 cout << "L'Umano ha tirato " << in_manoU[pos-1].val << in_manoU[pos-1].seme;
 cout << '\n';
 return(pos-1);
}

int CgiocaII() //funzione giocata pc
{    terra[1].val = in_manoC[mani%3].val;
     terra[1].seme = in_manoC[mani%3].seme;
     cout << "Il computer ha tirato " << in_manoC[mani%3].val << in_manoC[mani%3].seme;
     cout << '\n';
     return (mani%3);
}

int CgiocaI() //funzione giocata pc 1
{    terra[0].val = in_manoC[mani%3].val;
     terra[0].seme = in_manoC[mani%3].seme;
     cout << "Il computer ha tirato " << in_manoC[mani%3].val << in_manoC[mani%3].seme;
     cout << '\n';
     return (mani%3);
}

void chiprende(int ncU,int ncC) //funzione determina presa
{if (prendeI()==primaU)
    {puntU=puntU+punteggio(terra[0].val)+punteggio(terra[1].val);
     in_manoU[ncU].seme=mazzo[cima_mazzo].seme;
     in_manoU[ncU].val =mazzo[cima_mazzo].val ;
     cima_mazzo++;
     in_manoC[ncC].seme=mazzo[cima_mazzo].seme;
     in_manoC[ncC].val =mazzo[cima_mazzo].val ;
     cima_mazzo++;
     cout << "                         prende U ----------- puntiU =" << puntU << "  puntiC = " << puntC << '\n';
     primaU=true;
    }
 else
    {puntC=puntC+punteggio(terra[0].val)+punteggio(terra[1].val);
     in_manoC[ncC].seme=mazzo[cima_mazzo].seme;
     in_manoC[ncC].val =mazzo[cima_mazzo].val ;
     cima_mazzo++;
     in_manoU[ncU].seme=mazzo[cima_mazzo].seme;
     in_manoU[ncU].val =mazzo[cima_mazzo].val ;
     cima_mazzo++;
     cout << "prende C ------------ puntiU=" << puntU << "  puntiC= " << puntC << '\n';
     primaU=false;
    }
    //stampamano();
}

void mano () //funzione mano
{   int numU, numC;
    if (primaU){
        numU=richiestaU();
        numC=CgiocaII();
        }
     else
         {numC=CgiocaI();
          numU=richiestaU();
         }
     chiprende(numU,numC);
     //cout << "\n--------------------------------------------------------\n";
}

void partita () //funzione partita
{    cima_mazzo=6;
     dai_carte();
     primaU=mazziereC;
     for (int i=0; i<20; i++)
       {mani=i;
        stampamano();
        mano();
       }
     cout << "\n                            <<<<<<<<<<<fine partita>>>>>>>>>>>>\n\n";
}

void mostrabriscola () //determina briscola
{   briscola.val = mazzo[39].val;
    briscola.seme = mazzo[39].seme;
    cout << "\n briscola = " <<  briscola.val << briscola.seme << '\n';
}

 main(int argc, char *argv[])
{   creamazzo();
    stampamazzo();
    srand (time (0));
    mazziereC=tiraprima();
    //stampamano();
    while (!((puntC!=puntU)&& ((puntC>119) || (puntU>119))))
    {
      mescolamazzo();
      stampamazzo();
      mostrabriscola();
      partita();
      mazziereC = ! mazziereC;
    }
    if (puntU>puntC) cout << "ha vinto l'Umano\n\n";
    else cout << "ha vinto il Computer\n\n";
    system("PAUSE");
    return EXIT_SUCCESS;
}
jokers85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
IDC rivede le stime del mercato PC: crol...
Microsoft 365 Family 12 mesi a 89,99€ pe...
Power station in forte sconto su Amazon:...
Il browser Google Chrome si espande: sup...
Chat Control, il PE approva la proroga: ...
Il nuovo iPhone Fold potrebbe costare qu...
Formula 1, le qualifiche Sprint dicono a...
YouTube supera Disney e diventa l'aziend...
Quasi regalate: Squier by Fender Stratoc...
Smartphone top di gamma 2026: LPDDR6 e U...
Scope elettriche di marca in offerta su ...
MacBook Neo: ecco le prime stime sulle v...
Il top di gamma compatto di HONOR vuole ...
Google Maps si aggiorna come non mai: ma...
Xiaomi torna a fare notebook con un nuov...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:01.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v