Newsgroup: it.comp.os.linux.development
Titolo: .oOo.Briscola.Oo. project

Ciao a tutti,
ho sviluppato in C (Borland) un programma che gioca a Briscola (versione
moolto sperimentale ;),
mi piacerebbe fare una versione x linux (magari grafica), c'è qualcuno
interessato al progetto?
o che magari mi darebbe qualche dritta?
In allegato c'è il codice sorgente.
bye gg
================ cut here ==================================================
// .oO0.Briscola.Oo. (beta 1)
// by Luigi (metnik@@
inmail.sk
) hp:
www.fotografie.da.ru
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
//come quando fuori piove, cuori,quadri,..,..    bugs known-> contapunti
gestione chi vince
//riordina carte, controlla zero in liscio>punto, chiusura
/*    
ÉÍ»
º
ÈÍ¼    */
char segno;
int  nuovo[2][40], miskia[2][40], i, ncarta=0, x=0, seme=1, k, j,
y=3,spc=0,sp1=0;
int  p1[2][3], pc[2][3], puntamazzo=6, carta, prima, turno=0, p1carta[2][1];
int  pccarta[2][1], briscola, vpc[2][40], punpc, punp1, vp1[2][40];
conv(int a) //la procedura converte i numeri in carte
{
char segno;
if (a==1) //seme cuori
segno=' ';
else if (a==2) //quadri
segno=' ';
else if (a==3) //fiori
segno=' ';
else if (a==4) //pikke
segno=' ';
return(segno);
}
void disegna()
{
if (p1[0][i]==0) //se nn c'S la carta
 {
 x=x+11;
 }
else
{
segno=conv(p1[1][i]);
if ((p1[0][i]>3) && (p1[0][i]<8))
{
gotoxy(x,y);
cprintf("ÉÍÍÍÍÍÍÍ»");
gotoxy(x,y+1);
cprintf("º %c   %c º",segno,segno);
gotoxy(x,y+2);
cprintf("º       º");
gotoxy(x,y+4);
cprintf("º       º");
gotoxy(x,y+5);
cprintf("º %c   %c º",segno,segno);
gotoxy(x,y+6);
cprintf("ÈÍÍÍÍÍÍÍ¼");
}
else if ((p1[0][i]==2) || (p1[0][i]==3))
{
gotoxy(x,y);
cprintf("ÉÍÍÍÍÍÍÍ»");
gotoxy(x,y+1);
cprintf("º   %c   º",segno);
gotoxy(x,y+2);
cprintf("º       º");
gotoxy(x,y+4);
cprintf("º       º");
gotoxy(x,y+5);
cprintf("º   %c   º",segno);
gotoxy(x,y+6);
cprintf("ÈÍÍÍÍÍÍÍ¼");
}
else if ((p1[0][i]>7) || (p1[0][i]==1))
{
gotoxy(x,y);
cprintf("ÉÍÍÍÍÍÍÍ»");
gotoxy(x,y+1);
cprintf("º       º");
gotoxy(x,y+2);
cprintf("º       º");
gotoxy(x,y+4);
cprintf("º       º");
gotoxy(x,y+5);
cprintf("º       º");
gotoxy(x,y+6);
cprintf("ÈÍÍÍÍÍÍÍ¼");
//seconda linea
}
if ((p1[0][i]==1) || (p1[0][i]==3) || (p1[0][i]==5))
{
gotoxy(x,y+3);
cprintf("º   %c   º",segno);
}
else if ((p1[0][i]==2) || (p1[0][i]==4))
{
gotoxy(x,y+3);
cprintf("º       º");
}
else if (p1[0][i]==6)
{
gotoxy(x,y+3);
cprintf("º %c   %c º",segno,segno);
}
else if (p1[0][i]==7)
{
gotoxy(x,y+3);
cprintf("º %c %c %c º",segno,segno,segno);
}
else if (p1[0][i]==8)
{
gotoxy(x,y+3);
cprintf("º Fante%cº",segno);
}
else if (p1[0][i]==9)
{
gotoxy(x,y+3);
cprintf("º Donna%cº",segno);
}
else if (p1[0][i]==10)
{
gotoxy(x,y+3);
cprintf("º  Re%c  º",segno);
}
}
x=x+11;
}
void creamazzo()
{
clrscr();
//crea nuovo mazzo
for(x=0;x<40;x++)
{
nuovo[0][x]=ncarta+1;
ncarta=ncarta++;
nuovo[1][x]=seme;
if (x==9)
      {        seme=seme++;
 ncarta=0;
      }
if (x==19)
      {        seme=seme++;
 ncarta=0;
      }
if (x==29)
      {        ncarta=0;
 seme=seme++;
      }
}
x=6;
}
void miskiamazzo()   //miskia il mazzo!!!!!
{
int dom,i;
randomize();
for(i=0;i<40;i++)
{
 dom=rand() % 40;
if (nuovo[0][dom]!=0)
{
 miskia[0][i]=nuovo[0][dom];
 miskia[1][i]=nuovo[1][dom];
 nuovo[0][dom]=0;
}
else
 i--;
}
briscola=miskia[1][39];
//debug matrice miskia
for(i=0;i<40;i++)
{
printf("%d/",miskia[0][i]);
printf("%d" ,miskia[1][i]);
printf("\t");
}
printf("\nla briscola S:%d\n",briscola);
getch();
}
void daicarte()
{
 if (prima==0)   //setta le carte iniziali
 {
  for(i=0;i<6;i++)
       {
  if (i<3)
   {      p1[0][i]=miskia[0][i];
   p1[1][i]=miskia[1][i];
   }
     else
   {        pc[0][i-3]=miskia[0][i];
   pc[1][i-3]=miskia[1][i];
   }
      }
 prima=1;
 }
 else   //dopo aver giocato si pesca una carta prima=1
 {
 for (i=0;i<6;i++)
  {
      if (turno==0)
   {
        if (i<3)
    {
  if (p1[0][i]==0)    //la carta nuova viene messa nella pos della carta 0
     {
  p1[0][i]=miskia[0][puntamazzo];
  p1[1][i]=miskia[1][puntamazzo];
  puntamazzo++;
     }
    }
        else //345
    {
  if (pc[0][i-3]==0)
     {
  pc[0][i-3]=miskia[0][puntamazzo];
  pc[1][i-3]=miskia[1][puntamazzo];
  puntamazzo++;
     }
    }
    }
    else if (turno==1)
    {
        if (i<3)
     {
  if (pc[0][i]==0)    //la carta nuova viene messa nella pos della carta 0
      {
  pc[0][i]=miskia[0][puntamazzo];
  pc[1][i]=miskia[1][puntamazzo];
  puntamazzo++;
      }
     }
        else //345
     {
  if (p1[0][i-3]==0)
      {
  p1[0][i-3]=miskia[0][puntamazzo];
  p1[1][i-3]=miskia[1][puntamazzo];
  puntamazzo++;
      }
     }
    }
   }
  }
//debug mostra le carte del pc
for(i=0;i<3;i++)
{
printf("pccarta %d|%d  ",pc[0][i],pc[1][i]);
}
getch();
}
void gioca()
{
clrscr();
//contapunti
spc=0; //riazzera
sp1=0;
for (i=0;i<40;i++)
{
 if (vpc[0][i]==12)
 spc=spc+11;
 else if (vpc[0][i]==11)
 spc=spc+10;
 else if (vpc[0][i]==10)
 spc=spc+4;
 else if (vpc[0][i]==9)
 spc=spc+3;
 else if (vpc[0][i]==8)
 spc=spc+2;
 if (vp1[0][i]==12)
 sp1=sp1+11;
 else if (vp1[0][i]==11)
 sp1=sp1+10;
 else if (vp1[0][i]==10)
 sp1=sp1+4;
 else if (vp1[0][i]==9)
 sp1=sp1+3;
 else if (vpc[0][i]==8)
 sp1=sp1+2;
 }  //fine contapunti
gotoxy(0,0);
cprintf("||||||||||||||||||Briskola|||||||||||||||||||||||||||\n");
gotoxy(3,15);
cprintf("punti giocatore: %d",sp1);
gotoxy(24,15);
cprintf("punti computer: %d\n",spc);
for(i=0;i<3;i++)
{
disegna();
}
x=6;
if (turno==1)
{
for(i=0;i<3;i++)
 {//2
  if ((pc[1][i]!=briscola) && (pc[0][i]<8))   //gioca liscio
  {//3
    pccarta[0][0]=pc[0][i];
    pccarta[1][0]=pc[1][i];
    pc[0][i]=0;
    i=5;
}}
if (pccarta[0][0]==0)
{
 pccarta[0][0]=pc[0][0];
 pccarta[1][0]=pc[1][0];
 pc[0][0]=0;
}
 gotoxy(6,6);
 cprintf("\nil pc ha buttato: %d%c\n",pccarta[0][0],conv(pccarta[1][0]));
}
gotoxy(3,14);
cprintf("la briscola S: %d%c", miskia[0][39],conv(miskia[1][39]));
gotoxy(24,14);
cprintf("mano: %d", k+1);
gotoxy(1,17);
cprintf("||||||||||||||||||||||||||||||||||||||||||||||||||||||");
gotoxy(3,18);
cprintf("fai la tua scelta(1-2-3): ");
do
scanf("%d", &carta);
while ((carta>3) || (carta<1));
p1carta[0][0]=p1[0][carta-1]; //assegna p1carta
p1carta[0][1]=p1[1][carta-1];
if (p1carta[0][0]==1)
p1carta[0][0]=12; //potere dell'asso!!
if (p1carta[0][0]==3) //potere del 3!!
p1carta[0][0]=11;
p1[0][carta-1]=0;
}
void ai()
{
for(i=0;i<3;i++)
{
 if (pc[0][i]==1) //pesa asso e 3
 pc[0][i]=12;
 if (pc[0][i]==3)
 pc[0][i]=11;
}
//structura
if (turno==0)
{
if (p1carta[1][0]==briscola)
{//1
 for(i=0;i<3;i++)
 {//2
  if ((pc[1][i]!=briscola) && (pc[0][i]<8))   //gioca liscio
  {//3
    pccarta[0][0]=pc[0][i];
    pccarta[1][0]=pc[1][i];
    pc[0][i]=0;
    i=5;
  }//3
 }//2
{//1
 for(i=0;i<3;i++)
 {//2
  if ((pc[1][i]!=briscola) && (pc[0][i]<10))   //gioca punto
  {//3
    pccarta[0][0]=pc[0][i];
    pccarta[1][0]=pc[1][i];
    pc[0][i]=0;
    i=5;
  }//3
 }//2
}
}
else
{
 if (p1carta[0][0]>7) //punto
 {
  for(i=0;i<3;i++)
  {
   if ((pc[0][i]>p1carta[0][0]) && (pc[1][i]>p1carta[1][0]))  //pu.
superare?
   {
    pccarta[0][0]=pc[0][i];
    pccarta[1][0]=pc[1][i];
    pc[0][i]=0;
    i=5;
   }
  }
  if (pccarta[0][0]==0)     //se ankora ninnS stat truat
  {
   for(i=0;i<3;i++)
   {
    if (pc[1][i]==briscola) //briscola forza bruta
    {
     pccarta[0][0]=pc[0][i];
     pccarta[1][0]=pc[1][i];
     pc[0][i]=0;
     i=5;
    }
   }
  }
 }
 else
 {
  for(j=0;j<3;j++)    //liscio che supera
  {
   if ((pc[0][j]>8) && (pc[1][j]==p1carta[1][0]))
   {
    pccarta[0][0]=pc[0][j];
    pccarta[1][0]=pc[1][j];
    pc[0][j]=0;
    j=5;
   }
  }
  if (pccarta[0][0]==0)
  {
  for(i=0;i<3;i++)    //liscio diverso
  {
   if ((pc[0][i]<8) && (pc[1][i]!=p1carta[1][0]))
   {
    pccarta[0][0]=pc[0][i];
    pccarta[1][0]=pc[1][i];
    pc[0][i]=0;
    i=5;
   }
   }
  }
 }
}
if (pccarta[0][0]==0)
{
 pccarta[0][0]=pc[0][0];
 pccarta[1][0]=pc[1][0];
 pc[0][0]=0;
}
gotoxy(4,20);
cprintf("hai giocato: %d%c \n",p1carta[0][0],conv(p1carta[1][0]));
gotoxy(4,21);
cprintf("il pc ha giocato: %d%c \n",pccarta[0][0],conv(pccarta[1][0]));
}
}
void elabora()
{
//pesa
if (pccarta[0][0]==1)
pccarta[0][0]=12;
if (pccarta[0][0]==3)
pccarta[0][0]=11;
if (p1carta[0][0]==1)
p1carta[0][0]=12;
if (p1carta[0][0]==1)
p1carta[0][0]=12;
//fine pesa
if (pccarta[0][1]==p1carta[0][1])
 {
if (pccarta[0][0]>p1carta[0][0])
  {
vpc[0][punpc]=p1carta[0][0];//da mettere in funz
vpc[1][punpc]=p1carta[1][0];
vpc[0][punpc+1]=pccarta[0][0];
vpc[1][punpc+1]=pccarta[1][0];
punpc=punpc+2;
punp1=punp1+2;
p1carta[0][0]=0;
pccarta[0][0]=0;
turno=1;        //gioca pc
  }
else
  {
vp1[0][punp1]=p1carta[0][0];//da mettere in funz
vp1[1][punp1]=p1carta[1][0];
vp1[0][punp1+1]=pccarta[0][0];
vp1[1][punp1+1]=pccarta[1][0];
punp1=punp1+2;
punpc=punpc+2;
p1carta[0][0]=0;
pccarta[0][0]=0;
turno=0;
  }
 }
else if ((pccarta[1][0]==briscola) && (p1carta[0][1]!=briscola))
{
vpc[0][punpc]=p1carta[0][0];//da mettere in funz
vpc[1][punpc]=p1carta[1][0];
vpc[0][punpc+1]=pccarta[0][0];
vpc[1][punpc+1]=pccarta[1][0];
punpc=punpc+2;
punp1=punp1+2;
p1carta[0][0]=0;
pccarta[0][0]=0;
turno=1;
}
else if((pccarta[1][0]!=briscola) && (p1carta[0][1]==briscola))
{
vp1[0][punp1]=p1carta[0][0];//da mettere in funz
vp1[1][punp1]=p1carta[1][0];
vp1[0][punp1+1]=pccarta[0][0];
vp1[1][punp1+1]=pccarta[1][0];
punp1=punp1+2;
punpc=punpc+2;
p1carta[0][0]=0;
pccarta[0][0]=0;
turno=0;
}
else if ((pccarta[1][0]!=briscola) && (p1carta[0][1]!=briscola))
 {
if (turno==1)
  {
vpc[0][punpc]=p1carta[0][0];//da mettere in funz
vpc[1][punpc]=p1carta[1][0];
vpc[0][punpc+1]=pccarta[0][0];
vpc[1][punpc+1]=pccarta[1][0];
punpc=punpc+2;
punp1=punp1+2;
p1carta[0][0]=0;
pccarta[0][0]=0;
turno=1;
  }
else
  {
if (turno==0)
   {
vp1[0][punp1]=p1carta[0][0];//da mettere in funz
vp1[1][punp1]=p1carta[1][0];
vp1[0][punp1+1]=pccarta[0][0];
vp1[1][punp1+1]=pccarta[1][0];
punp1=punp1+2;
punpc=punpc+2;
p1carta[0][0]=0;
pccarta[0][0]=0;
turno=0;
   }
  }
 }
}
void fine()
{
clrscr();
if (sp1>spc)
printf("il giocatore ha vinto");
else
printf("il pc ha vinto");
getch();
}
void main()
{
creamazzo();   //
miskiamazzo(); //
for (k=0;k<20;k++)
{
daicarte();    //
gioca(); //
ai(); //gestione scelta pc
elabora(); //decide chi prende
}
fine();
disegna();
char conv();
}
================ end cut here
==================================================

 o che magari mi darebbe qualche dritta?
Non usare conio.h ma imparati le curses ed usa quelle.
-- 
Andrea Bergia - studente
Linux Registred User #281550

 In allegato c'č il codice sorgente.
Pessima idea, viste le dimensioni. Meglio metterlo su un sito e postare solo 
il link.
Ciao
  David
-- 
<d.santinoli presso mi. flashnet. it>