Help programma briscola

di il
3 risposte

Help programma briscola

Ciao a tutti, vi scrivo perche il mio programma da qualche problema e non effettua il debug...
di preciso da problemi come
[Linker Error] undefined reference to `readimagefile'
[Linker Error] undefined reference to `setbkcolor'
ld returned 1 exit status
C:\Users\Jenny\Desktop\21.05 12.3\Makefile.win [Build Error] [Output/MingW/21.05] Error 1

//MAIN.cpp

#include <cstdlib>
#include <iostream>
#include <graphics.h>
#include <windows.h>
#include "Classi\Carta.h"
#include "Classi\Giocatore.h"
using namespace std;

//Dichiarazione Variabili Globali

Carta carte[40];
int iMazzo=0;
Carta briscola;
int semeBriscola;
Giocatore giocatori[2]; //giocatori[0]=Utente 1, giocatori[1]=Utente2
Carta turni[2][3]; //turni[0][...]=turno Utente1, turni[1][...]=turno Utente2
int turniGiocati=0;
Carta carteInTavola[2]; //carteInTavola[0]=carta Utente1, carteInTavola[1]=carta Utente2
int cartaGiocata[2]; //cartaGiocata[0]=carta giocata Utente1, cartaGiocata[1]=carta giocata Utente2
char testoPunteggio[20];//visualizza man mano i messaggi
bool primo;

//Dichiarazione Funzioni Globali

void generaCarte();
void mescola();
void preparaTavolo();//grafica
void assegnazioneCarte();
void assegnazioneValoriRifBriscola();
void stampaTurni();

    //Chi gioca per primo
void giocatore1Primo();
void giocatore2Primo();
    //Chi gioca per secondo
void giocatore1Secondo();
void giocatore2Secondo();

    //Penultimo Turno
void giocatore1PrimoPen();
void giocatore2PrimoPen();
void giocatore1SecondoPen();
void giocatore2SecondoPen();

    //Ultimo Turno
void giocatore1PrimoUlt();
void giocatore2PrimoUlt();
void giocatore1SecondoUlt();
void giocatore2SecondoUlt();

    //Vincitori
void vincitoreTurno();
void vincitoreTerUlt();
void vincitorePenUlt();
void vincitoreFinale();

void giocaDiNuovo();

//Dichiarazione Posizioni Interfaccia

#define YGIOC1 500// coordinata y delle carte del giocatore1
#define YGIOC2 10//coordinata y delle carte del giocatore 2
#define XCARTA1 600//  coordinata x della prima carta del giocatore 2
#define XMAZZO 300// coordinata x del mazzo
#define YMAZZO 260// coordinata y del mazzo
#define YCARTAGIOC2 0//Grandezza carte altezza carta<?>
#define YCARTAGIOC1 0
#define DISTANZA 140//Distanza tra una carta e l'altra in mano a giocatore1 e giocatore 2
#define XCARTAGIOC1 675//Dove va la carta giocata dal giocatore1 LARGHEZZA
#define XCARTAGIOC2 830//Dove va la carta giocata dal giocatore2 LARGHEZZA
#define YCARTAGIOCATA 260//dove vanno le carte giocate ALTEZZA(In tavola)
#define XTESTO 175
#define YTESTO1 100
#define YTESTO2 130
#define YTESTOGIOC1 60
#define YTESTOGIOC2 45
#define XTESTOREPLAY 500
#define YTESTOREPLAY 480

int main(int argc, char *argv[])
{
    srand(time(NULL));//funzione per inizializzazione dei numeri casuali
    preparaTavolo();
    generaCarte();
       
    primo=rand()%2;//estrazione del primo giocatore in modo casuale
    bool trovatoPrimo=false;
    int inizia;
    while(!trovatoPrimo)
    {
        inizia=rand()%3;;//genera numero casuale tra 0,1,2
        if(inizia==1)
        {
            primo=true;
            trovatoPrimo=true;
        }
        else if(inizia==2)
        {
            primo=false;
            trovatoPrimo=true;
        }
    }
    
    for(int j=0;j<40;j++)
    for(int i=0;i<1000;i++)
    swap(carte[j],carte[rand()%40]);
    assegnazioneCarte();
    cout<<iMazzo<<endl;
    briscola.stampa(XMAZZO-180,YMAZZO);
    readimagefile("dorso.jpg",XMAZZO,YMAZZO,XMAZZO+120,YMAZZO+200);//dorso delle carte
    stampaTurni();
    setbkcolor(2);
    setcolor(15);
    if(primo==0)
    {
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore2...   ");
    }
    else
    {
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore1...   ");
    }
    int turniRimanenti;
    //Scritta punteggio
    outtextxy(XTESTO,YTESTOGIOC2,"Giocatore2:   ");
    outtextxy(XTESTO,YTESTOGIOC1,"Giocatore1:   ");
    outtextxy(XTESTO+50,YTESTOGIOC2,"0");
    outtextxy(XTESTO+35,YTESTOGIOC1,"0");
    
    while(turniGiocati<17)
    {
        outtextxy(XTESTO,YTESTO2,"Turni restanti:        ");
        turniRimanenti=20-turniGiocati;
        itoa(turniRimanenti,testoPunteggio,10);
        outtextxy(XTESTO+95,YTESTO2,testoPunteggio);
        if(primo)
        {
            outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore1...   ");
            giocatore1Primo();
            outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore2...   ");
            giocatore2Secondo();
        }
        else
        {
            outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore2...   ");
            giocatore2Primo();
            outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore1...   ");
            giocatore1Secondo();
        }
        vincitoreTurno();
        
        outtextxy(XTESTO,YTESTOGIOC2,"Giocatore2:   ");
        itoa(giocatori[0].getPunteggio(),testoPunteggio,10);
        outtextxy(XTESTO+50,YTESTOGIOC2,testoPunteggio);
        outtextxy(XTESTO,YTESTOGIOC1,"Giocatore1:   ");
        itoa(giocatori[1].getPunteggio(),testoPunteggio,10);
        outtextxy(XTESTO+35,YTESTOGIOC1,testoPunteggio);
    }
    //Terzultimo Turno
    
    readimagefile("tavolo.bmp",XMAZZO,YMAZZO,XMAZZO+120,YMAZZO+200);//pone il rettangolo verde sul mazzo il modo che scompaia
    briscola.stampa(XMAZZO-180,YMAZZO,false,true);
    outtextxy(XTESTO,YTESTO2,"Turni restanti:   ");
    turniRimanenti=20-turniGiocati;
    itoa(turniRimanenti,testoPunteggio,10);
    outtextxy(XTESTO+95,YTESTO2,testoPunteggio);
    if(primo)
    {
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore1...   ");
        giocatore1Primo();
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore2...   ");
        giocatore2Secondo();
    }
    else
    {
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore2...   ");
        giocatore2Primo();
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore1...   ");
        giocatore1Secondo();
    }
    
    vincitoreTerUlt();
    cout<<"Giocatore1: "<<giocatori[1].getPunteggio()<<endl<<"Giocatore2: "<<giocatori[0].getPunteggio()<<endl;
    outtextxy(XTESTO,YTESTOGIOC2,"Giocatore2:   ");
    itoa(giocatori[0].getPunteggio(),testoPunteggio,10);
    outtextxy(XTESTO+50,YTESTOGIOC2,testoPunteggio);
    outtextxy(XTESTO,YTESTOGIOC2,"Giocatore1:   ");
    itoa(giocatori[1].getPunteggio(),testoPunteggio,10);
    outtextxy(XTESTO+35,YTESTOGIOC1,testoPunteggio);

    //Penultimo Turno
    
    cout<<"Restano "<<20-turniGiocati<<" turni da giocare"<<endl;
    outtextxy(XTESTO,YTESTO2,"Turni restanti:   ");
    turniRimanenti=20-turniGiocati;
    itoa(turniRimanenti,testoPunteggio,10);
    outtextxy(XTESTO+95,YTESTO2,testoPunteggio);
    if(primo)
    {
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore1...   ");
        giocatore1PrimoPen();
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore2...   ");
        giocatore2SecondoPen();
    }
    else
    {
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore2...   ");
        giocatore2PrimoPen();
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore1...   ");
        giocatore1SecondoPen();
    }
    vincitorePenUlt();
    cout<<"Giocatore1: "<<giocatori[1].getPunteggio()<<endl<<"Giocatore2: "<<giocatori[0].getPunteggio()<<endl;
    outtextxy(XTESTO,YTESTOGIOC2,"Giocatore2:   ");
    itoa(giocatori[0].getPunteggio(),testoPunteggio,10);
    outtextxy(XTESTO+50,YTESTOGIOC2,testoPunteggio);
    outtextxy(XTESTO,YTESTOGIOC1,"Giocatore1:   ");
    itoa(giocatori[1].getPunteggio(),testoPunteggio,10);
    outtextxy(XTESTO+35,YTESTOGIOC1,testoPunteggio);
    
    //Ultimo Turno
    
    cout<<"Restano "<<20-turniGiocati<<" turni da giocare"<<endl;
    outtextxy(XTESTO,YTESTO2,"Turni restanti:   ");
    turniRimanenti=20-turniGiocati;
    itoa(turniRimanenti,testoPunteggio,10);
    outtextxy(XTESTO+95,YTESTO2,testoPunteggio);
    if(primo)
    {
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore1...   ");
        giocatore1PrimoUlt();
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore2...   ");
        giocatore2SecondoUlt();
    }
    else
    {
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore2...   ");
        giocatore2PrimoUlt();
        outtextxy(XTESTO,YTESTO1,"Tocca a Giocatore1...   ");
        giocatore1SecondoUlt();
    }
    
    vincitoreFinale();
    outtextxy(XTESTO,YTESTO2,"Turni restanti:   ");
    outtextxy(XTESTO+95,YTESTO2,"0");
    cout<<"Giocatore1: "<<giocatori[1].getPunteggio()<<endl<<"Giocatore2: "<<giocatori[0].getPunteggio()<<endl;
    outtextxy(XTESTO,YTESTOGIOC2,"Giocatore2:   ");
    itoa(giocatori[0].getPunteggio(),testoPunteggio,10);
    outtextxy(XTESTO+50,YTESTOGIOC2,testoPunteggio);
    outtextxy(XTESTO,YTESTOGIOC1,"Giocatore1:   ");
    itoa(giocatori[1].getPunteggio(),testoPunteggio,10);
    outtextxy(XTESTO+35,YTESTOGIOC1,testoPunteggio);
    outtextxy(XTESTO,YTESTO1,"                                  ");
    outtextxy(XTESTO,YTESTO2,"                                  ");
    if(giocatori[0].getPunteggio()>giocatori[1].getPunteggio())
    {
        outtextxy(XTESTO,YTESTOGIOC1+15,"Ha vinto Giocatore2");
    }
    else if(giocatori[0].getPunteggio()<giocatori[1].getPunteggio())
    {
        outtextxy(XTESTO,YTESTOGIOC1+15,"Ha vinto Giocatore1");
    }
    else
    {
        outtextxy(XTESTO,YTESTOGIOC1+15,"Pareggio");
    }
    giocaDiNuovo();
    return EXIT_SUCCESS;
}

void generaCarte()
{
    carte[0].setImagePath("2c.bmp");
    carte[1].setImagePath("3c.bmp");
    carte[2].setImagePath("4c.bmp");
    carte[3].setImagePath("5c.bmp");
    carte[4].setImagePath("6c.bmp");
    carte[5].setImagePath("7c.bmp");
    carte[6].setImagePath("jc.bmp");
    carte[7].setImagePath("qc.bmp");
    carte[8].setImagePath("kc.bmp");
    carte[9].setImagePath("ac.bmp");
    carte[10].setImagePath("2d.bmp");
    carte[11].setImagePath("3d.bmp");
    carte[12].setImagePath("4d.bmp");
    carte[13].setImagePath("5d.bmp");
    carte[14].setImagePath("6d.bmp");
    carte[15].setImagePath("7d.bmp");
    carte[16].setImagePath("jd.bmp");
    carte[17].setImagePath("qd.bmp");
    carte[18].setImagePath("kd.bmp");
    carte[19].setImagePath("ad.bmp");
    carte[20].setImagePath("2f.bmp");
    carte[21].setImagePath("3f.bmp");
    carte[22].setImagePath("4f.bmp");
    carte[23].setImagePath("5f.bmp");
    carte[24].setImagePath("6f.bmp");
    carte[25].setImagePath("7f.bmp");
    carte[26].setImagePath("jf.bmp");
    carte[27].setImagePath("qf.bmp");
    carte[28].setImagePath("kf.bmp");
    carte[29].setImagePath("af.bmp");
    carte[30].setImagePath("2p.bmp");
    carte[31].setImagePath("3p.bmp");
    carte[32].setImagePath("4p.bmp");
    carte[33].setImagePath("5p.bmp");
    carte[34].setImagePath("6p.bmp");
    carte[35].setImagePath("7p.bmp");
    carte[36].setImagePath("jp.bmp");
    carte[37].setImagePath("qp.bmp");
    carte[38].setImagePath("kp.bmp");
    carte[39].setImagePath("ap.bmp");
    for(int i=0;i<40;i++)
    {
        if(i>=0&&i<10)
        {
            carte[i].setSeme(1);
        }
        else if(i>9&&i<20)
        {
            carte[i].setSeme(2);
        }
        else if(i>19&&i<30)
        {
            carte[i].setSeme(3);
        }
        else if(i>29&&i<40)
        {
            carte[i].setSeme(4);
        }
        if(i<6)
        {
            carte[i].setPunteggio(0);
        }
        else if(i>9&&i<16)
        {
            carte[i].setPunteggio(0);
        }
        else if(i>19&&i<26)
        {
            carte[i].setPunteggio(0);
        }
        else if(i>29&&i<36)
        {
            carte[i].setPunteggio(0);
        }
        carte[i].setValNum((i%10)+1);
    }
    carte[1].setValNum(10);
    carte[11].setValNum(10);
    carte[21].setValNum(10);
    carte[31].setValNum(10);
    carte[9].setValNum(11);
    carte[19].setValNum(11);
    carte[29].setValNum(11);
    carte[39].setValNum(11);
    carte[6].setValNum(7);
    carte[16].setValNum(7);
    carte[26].setValNum(7);
    carte[36].setValNum(7);
    carte[7].setValNum(8);
    carte[17].setValNum(8);
    carte[27].setValNum(8);
    carte[37].setValNum(8);
    carte[8].setValNum(9);
    carte[18].setValNum(9);
    carte[28].setValNum(9);
    carte[38].setValNum(9);
    carte[1].setPunteggio(10);
    carte[11].setPunteggio(10);
    carte[21].setPunteggio(10);
    carte[31].setPunteggio(10);
    carte[9].setPunteggio(11);
    carte[19].setPunteggio(11);
    carte[29].setPunteggio(11);
    carte[39].setPunteggio(11);
    carte[6].setPunteggio(2);
    carte[16].setPunteggio(2);
    carte[26].setPunteggio(2);
    carte[36].setPunteggio(2);
    carte[7].setPunteggio(3);
    carte[17].setPunteggio(3);
    carte[27].setPunteggio(3);
    carte[37].setPunteggio(3);
    carte[8].setPunteggio(4);
    carte[18].setPunteggio(4);
    carte[28].setPunteggio(4);
    carte[38].setPunteggio(4);
}

void mescola()
{
    srand(time(NULL));
    for(int j=0;j<900000;j++)
    for(int i=0;i<40;i++)
    {
        swap(carte[i],carte[rand()%40]);
    }
}

void preparaTavolo()
{
    initwindow(1460,700,"Briscola",2,2,false);//initwindows(x,y,"",A,B,false) x->limite destro,y->limite inferiorefinestra, non grafica A, B dove riscpetto allo schermo si apre la finestra di gioco
    setcolor(2);
    for(int i=0;i<700;i++)
    {
        line(0,i,1460,i);
    }
}

void assegnazioneCarte()
{
    briscola=carte[6];
    swap(carte[6],carte[39]);
    assegnazioneValoriRifBriscola();
    for(int i=0;i<3;i++)//i=0,1,2=carte
    for(int j=0;j<2;j++)//j=0,1=giocatori
    {
        turni[j][i]=carte[iMazzo++];
    }
}

void assegnazioneValoriRifBriscola()
{
    for(int i=0;i<40;i++)
    {
        if(carte[i].getSeme()==briscola.getSeme())
        {
            carte[i].setValNum(carte[i].getValNum()+21);
        }
    }
}

void stampaTurni()
{
    for(int i=0;i<3;i++)
    {
        turni[0][i].stampa(XCARTA1+(DISTANZA*i),YGIOC2);
        turni[1][i].stampa(XCARTA1+(DISTANZA*i),YGIOC1);
    }
}

void giocatore1Primo()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<3;i++)
            {
                if((posx>(XCARTA1+(100*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC1)&&(posy<YGIOC1+200)))//setta la posizione di click del mouse come selezione della carta in questione 
                {
                    cartaGiocata[1]=i;
                    carteInTavola[1]=turni[1][i];
                    carteInTavola[1].incValNum(11);
                    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA);
                    semeBriscola=carteInTavola[1].getSeme();
                    turni[1][i].stampa(XCARTA1+(DISTANZA*i),YGIOC1,false,true);
                    for(int j=0;j<2;j++)
                    for(int k=0;k<3;k++)
                    if(turni[j][k].getSeme()==carteInTavola[1].getSeme())
                        turni[j][k].incValNum(11);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore2Primo(){
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<3;i++)
            {
                if((posx>(XCARTA1+(100*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC2)&&(posy<YGIOC2+200)))//setta la posizione di click del mouse come selezione della carta in questione 
                {
                    cartaGiocata[0]=i;
                    carteInTavola[0]=turni[0][i];
                    carteInTavola[0].incValNum(11);
                    carteInTavola[0].stampa(XCARTAGIOC2,YCARTAGIOCATA);
                    semeBriscola=carteInTavola[0].getSeme();
                    turni[0][i].stampa(XCARTA1+(DISTANZA*i),YGIOC2,false,true);
                    for(int j=0;j<2;j++)
                    for(int k=0;k<3;k++)
                    if(turni[j][k].getSeme()==carteInTavola[0].getSeme())
                        turni[j][k].incValNum(11);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore1Secondo()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<3;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC1)&&(posy<YGIOC1+200)))//Click del mouse sulla carta che il giocatore vuole giocare
                {
                    cartaGiocata[1]=i;
                    carteInTavola[1]=turni[1][i];
                    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA);
                    turni[1][i].stampa(XCARTA1+(DISTANZA*i),YGIOC1,false,true);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore2Secondo()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<3;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC2)&&(posy<YGIOC2+200)))//Click del mouse sulla carta che il giocatore vuole giocare
                {
                    cartaGiocata[0]=i;
                    carteInTavola[0]=turni[0][i];
                    carteInTavola[0].stampa(XCARTAGIOC1,YCARTAGIOCATA);
                    turni[0][i].stampa(XCARTA1+(DISTANZA*i),YGIOC2,false,true);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore1PrimoPen()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<2;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC1)&&(posy<YGIOC1+200)))
                {
                    cartaGiocata[1]=i;
                    carteInTavola[1]=turni[1][i];
                    carteInTavola[1].incValNum(11);
                    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA);
                    semeBriscola=carteInTavola[1].getSeme();
                    turni[1][i].stampa(XCARTA1+(DISTANZA*i),YGIOC1,false,true);
                    for(int j=0;j<2;j++)
                    for(int k=0;k<3;k++)
                    if(turni[j][k].getSeme()==carteInTavola[1].getSeme())
                        turni[j][k].incValNum(11);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore2PrimoPen()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<2;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC2)&&(posy<YGIOC2+200)))
                {
                    cartaGiocata[0]=i;
                    carteInTavola[0]=turni[0][i];
                    carteInTavola[0].incValNum(11);
                    carteInTavola[0].stampa(XCARTAGIOC2,YCARTAGIOCATA);
                    semeBriscola=carteInTavola[0].getSeme();
                    turni[0][i].stampa(XCARTA1+(DISTANZA*i),YGIOC2,false,true);
                    for(int j=0;j<2;j++)
                    for(int k=0;k<3;k++)
                    if(turni[j][k].getSeme()==carteInTavola[0].getSeme())
                        turni[j][k].incValNum(11);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore1SecondoPen()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<2;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC1)&&(posy<YGIOC1+200)))
                {
                    cartaGiocata[1]=i;
                    carteInTavola[1]=turni[1][i];
                    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA);
                    turni[1][i].stampa(XCARTA1+(DISTANZA*i),YGIOC1,false,true);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore2SecondoPen()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<2;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC2)&&(posy<YGIOC2+200)))
                {
                    cartaGiocata[0]=i;
                    carteInTavola[0]=turni[0][i];
                    carteInTavola[0].stampa(XCARTAGIOC2,YCARTAGIOCATA);
                    turni[0][i].stampa(XCARTA1+(DISTANZA*i),YGIOC2,false,true);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}
void giocatore1PrimoUlt()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<1;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC1)&&(posy<YGIOC1+200)))
                {
                    cartaGiocata[1]=i;
                    carteInTavola[1]=turni[1][i];
                    carteInTavola[1].incValNum(11);
                    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA);
                    semeBriscola=carteInTavola[1].getSeme();
                    turni[1][i].stampa(XCARTA1+(DISTANZA*i),YGIOC1,false,true);
                    for(int j=0;j<2;j++)
                    for(int k=0;k<3;k++)
                    if(turni[j][k].getSeme()==carteInTavola[1].getSeme())
                        turni[j][k].incValNum(11);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore2PrimoUlt()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<1;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC2)&&(posy<YGIOC2+200)))
                {
                    cartaGiocata[0]=i;
                    carteInTavola[0]=turni[0][i];
                    carteInTavola[0].incValNum(11);
                    carteInTavola[0].stampa(XCARTAGIOC2,YCARTAGIOCATA);
                    semeBriscola=carteInTavola[0].getSeme();
                    turni[0][i].stampa(XCARTA1+(DISTANZA*i),YGIOC2,false,true);
                    for(int j=0;j<2;j++)
                    for(int k=0;k<3;k++)
                    if(turni[j][k].getSeme()==carteInTavola[0].getSeme())
                        turni[j][k].incValNum(11);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore1SecondoUlt()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<2;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC1)&&(posy<YGIOC1+200)))
                {
                    cartaGiocata[1]=i;
                    carteInTavola[1]=turni[1][i];
                    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA);
                    turni[1][i].stampa(XCARTA1+(DISTANZA*i),YGIOC1,false,true);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void giocatore2SecondoUlt()
{
    int posx,posy;
    clearmouseclick(WM_LBUTTONDOWN);
    int stato=0;
    while(!stato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            for(int i=0;i<2;i++)
            {
                if((posx>(XCARTA1+(120*i))&&posx<((XCARTA1+(120*i))+120))&&((posy>YGIOC2)&&(posy<YGIOC2+200)))
                {
                    cartaGiocata[0]=i;
                    carteInTavola[0]=turni[0][i];
                    carteInTavola[0].stampa(XCARTAGIOC2,YCARTAGIOCATA);
                    turni[0][i].stampa(XCARTA1+(DISTANZA*i),YGIOC2,false,true);
                    return;
                }
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
}

void vincitoreTurno()
{
    Sleep(1500);
    if(carteInTavola[0].getValNum()>carteInTavola[1].getValNum())
    {
        giocatori[0].incrementaPungeggio(carteInTavola[0].getPunteggio()+carteInTavola[1].getPunteggio());
        primo=false;
    }
    else
    {
        giocatori[1].incrementaPungeggio(carteInTavola[0].getPunteggio()+carteInTavola[1].getPunteggio());
        primo=true;
    }
    for(int j=0;j<2;j++)
    for(int k=0;k<3;k++)
    {
        if(turni[j][k].getSeme()==semeBriscola)
            turni[j][k].incValNum(-11);
    }
    if(!primo)
    {
        turni[0][cartaGiocata[0]]=carte[iMazzo++];
        turni[1][cartaGiocata[1]]=carte[iMazzo++];
        //turni[0][cartaGiocata[0]].set2(true);
    }
    else
    {
        turni[1][cartaGiocata[1]]=carte[iMazzo++];
        turni[0][cartaGiocata[0]]=carte[iMazzo++];
        //turni[0][cartaGiocata[0]].set2(true);
    }
    carteInTavola[0].stampa(XCARTAGIOC2,YCARTAGIOCATA,false,true);
    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA,false,true);
    stampaTurni();
    turniGiocati++;
}

void vincitoreTerUlt()
{
    Sleep(1500);
    if(carteInTavola[0].getValNum()>carteInTavola[1].getValNum())
    {
        giocatori[0].incrementaPungeggio(carteInTavola[0].getPunteggio()+carteInTavola[1].getPunteggio());
        primo=false;
    }
    else
    {
        giocatori[1].incrementaPungeggio(carteInTavola[0].getPunteggio()+carteInTavola[1].getPunteggio());
        primo=true;
    }
    for(int j=0;j<2;j++)
    for(int k=0;k<3;k++)
    {
        if(turni[j][k].getSeme()==semeBriscola)
            turni[j][k].incValNum(-11);
    }
    if(cartaGiocata[0]!=2)
    {
        swap(turni[0][2],turni[0][cartaGiocata[0]]);
    }
    if(cartaGiocata[1]!=2)
    {
        swap(turni[1][2],turni[1][cartaGiocata[1]]);
    }
    stampaTurni();
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*2),YGIOC2,XCARTA1+(DISTANZA*2)+120,YGIOC2+200);
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*2),YGIOC1,XCARTA1+(DISTANZA*2)+120,YGIOC1+200);
    carteInTavola[0].stampa(XCARTAGIOC2,YCARTAGIOCATA,false,true);
    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA,false,true);
    turniGiocati++;
}

void vincitorePenUlt ()
{
    Sleep(1500);
    if(carteInTavola[0].getValNum()>carteInTavola[1].getValNum())
    {
        giocatori[0].incrementaPungeggio(carteInTavola[0].getPunteggio()+carteInTavola[1].getPunteggio());
        primo=false;
    }
    else
    {
        giocatori[1].incrementaPungeggio(carteInTavola[0].getPunteggio()+carteInTavola[1].getPunteggio());
        primo=true;
    }
    for(int j=0;j<2;j++)
    for(int k=0;k<3;k++)
    {
        if(turni[j][k].getSeme()==semeBriscola)
            turni[j][k].incValNum(-11);
    }
    if(cartaGiocata[0]!=1)
    {
        swap(turni[0][1],turni[0][cartaGiocata[0]]);
    }
    if(cartaGiocata[1]!=1)
    {
        swap(turni[1][1],turni[1][cartaGiocata[1]]);
    }
    stampaTurni();
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*1),YGIOC2,XCARTA1+(DISTANZA*1)+120,YGIOC2+200);
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*1),YGIOC1,XCARTA1+(DISTANZA*1)+120,YGIOC1+200);
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*2),YGIOC2,XCARTA1+(DISTANZA*2)+120,YGIOC2+200);
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*2),YGIOC1,XCARTA1+(DISTANZA*2)+120,YGIOC1+200);
    carteInTavola[0].stampa(XCARTAGIOC2,YCARTAGIOCATA,false,true);
    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA,false,true);
    turniGiocati++;
}

void vincitoreFinale()
{
    Sleep(1500);
    if(carteInTavola[0].getValNum()>carteInTavola[1].getValNum())
    {
        giocatori[0].incrementaPungeggio(carteInTavola[0].getPunteggio()+carteInTavola[1].getPunteggio());
        primo=false;
    }
    else
    {
        giocatori[1].incrementaPungeggio(carteInTavola[0].getPunteggio()+carteInTavola[1].getPunteggio());
        primo=true;
    }
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*0),YGIOC2,XCARTA1+(DISTANZA*0)+120,YGIOC2+200);
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*0),YGIOC1,XCARTA1+(DISTANZA*0)+120,YGIOC1+200);
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*1),YGIOC2,XCARTA1+(DISTANZA*1)+120,YGIOC2+200);
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*1),YGIOC1,XCARTA1+(DISTANZA*1)+120,YGIOC1+200);
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*2),YGIOC2,XCARTA1+(DISTANZA*2)+120,YGIOC2+200);
    readimagefile("tavolo.bmp",XCARTA1+(DISTANZA*2),YGIOC1,XCARTA1+(DISTANZA*2)+120,YGIOC1+200);
    carteInTavola[0].stampa(XCARTAGIOC2,YCARTAGIOCATA,false,true);
    carteInTavola[1].stampa(XCARTAGIOC1,YCARTAGIOCATA,false,true);
    turniGiocati++;
}

//dimensioni rettangoli per rigiocare
#define XINIZRECT1 XTESTOREPLAY
#define YINIZRECT 500
#define XFINRECT1 576
#define YFINRECT 536
#define XINIZRECT2 580
#define XFINRECT2 656
void giocaDiNuovo()
{
    outtextxy(XTESTOREPLAY,YTESTOREPLAY,"Fare un'altra partita?");
    readimagefile("rettangolo.jpg",XINIZRECT1,YINIZRECT,XFINRECT1,YFINRECT);
    readimagefile("rettangolo.jpg",XINIZRECT2,YINIZRECT,XFINRECT2,YFINRECT);
    outtextxy(XTESTOREPLAY+31,YTESTOREPLAY+29,"Si");
    outtextxy(XTESTOREPLAY+80+31,YTESTOREPLAY+29,"No");
    clearmouseclick(WM_LBUTTONDOWN);
    int cliccato=0;
    int posx,posy;
    while(!cliccato)
    {
        if(ismouseclick(WM_LBUTTONDOWN))
        {
            posx=mousex();
            posy=mousey();
            if(posx>XINIZRECT1&&posx<XFINRECT1&&posy>YINIZRECT&&posy<YFINRECT)
            {
                cliccato=1;
            }
            else if(posx>XINIZRECT2&&posx<XFINRECT2&&posy>YINIZRECT&&posy<YFINRECT)
            {
                cliccato=-1;
            }
            clearmouseclick(WM_LBUTTONDOWN);
        }
    }
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    if(cliccato==1)
    {
        //CreateProcess( NULL,"Briscola.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi );
        ShellExecute(NULL,NULL,"Briscola.exe",NULL,NULL,SW_SHOWDEFAULT);
    }
}

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte