Risiko su forum (making of)

Pagina 8 di 8 Precedente  1, 2, 3, 4, 5, 6, 7, 8

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ste il Ven Mar 05, 2010 12:54 am

Si pesca (cioè si lancia) alla fine del turno e solo se nel turno si è comquistato almeno un territorio.
Poi ci sono altre fonti di rinforzi: si ha diritto a un numero di armate pari al numero di territori posseduti
diviso per 3, e a un tot di armate se si possiede un intero continente.

Domani prova scritta. hello

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da digi il Ven Mar 05, 2010 2:30 pm

neutral giuro che non sto sfuggendo ma non ce la faccio oggi ma ho le idee molto più chiare, appena riesco a fermarmi un pò, voglio provare... happy
avatar
digi

Femminile Numero di messaggi : 1586
Reputazione : 3
Punti : 1588
Data d'iscrizione : 16.02.09

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ste il Ven Mar 05, 2010 3:18 pm

Ok. thumbs up

Intanto si potrebbe discutere degli obbiettivi.

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Gli obbiettivi

Messaggio Da Ste il Sab Mar 06, 2010 9:46 pm

Gli obbiettivi...

Allora, leggendo i vari regolamenti, già nel gioco originale ci sono diversi modi per giocare.
Oltre agli obbiettivi classici (questi), ci sono gli obbiettivi da torneo che sono più equilibrati:
tutti comportano la conquista di 2 continenti più un certo numero di territori, e sono studiati
in modo che il numero totale dei confini dei territori da conquistare sia lo stesso.

Poi ci sono i punti associati ad ogni territorio (è il numerino a fianco dello stato nel tabellone),
che permettono di fare classifiche a punti, stabilendo un limite di tempo o di turni per la partita.
Se non ho capito male, funziona che se nessuno conquista il suo obbiettivo entro 'sto limite, la
partita termina e ogni giocatore guadagna i punti dei suoi territori che fan parte del suo obbiettivo.

Secondo me la cosa migliore per giocare qui sarebbe: obbiettivi torneo + limite di turni (il limite
di tempo va bene se si gioca dal vivo dove si possono limitare le perdite di tempo...).

C'è però il problema di come assegnarli... per sorteggiarli basta numerarli e usare la tag "rand".
Esempio: gli obbiettivi torneo sono numerati da 1 a 20, il mio obbiettivo è ...
Numero aleatorio (1,20) : 8

... però ci sono due ordini di problemi:
1) L'obbiettivo non è segreto.
2) Due o più giocatori potrebbero pescare lo stesso obbiettivo.

Quindi si tratterebbe di decidere se considerarli dei problemi: se si decide che non lo sono, si può
giocare con gli obbiettivi palesi ed eventualmente se uno si becca un obbiettivo già uscito, rifà...
se invece vogliamo che gli obbiettivi siano segreti, s'ha da studiare il modo...

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ransie il Dom Mar 07, 2010 12:53 pm

obiettivo palese... si si
avatar
Ransie

Femminile Vergine Cane
Numero di messaggi : 8804
Età : 34
Reputazione : 10
Punti : 8794
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ste il Dom Mar 07, 2010 3:35 pm

si, anche secondo me può andare.. si si

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da digi il Dom Mar 07, 2010 8:34 pm

ma praticamente una volta conquistati gli obiettivi si vince? E' quello lo scopo del gioco? Potrebbe essere un problema tenere l'obiettivo palese, perchè insomam così ci si può impedire a a vicenda di arrivare alla meta...e già il risiko normale è lungo...però se si danno i limiti può essere fattibile.. si si sempre che c'ho capito qualcosa.. rolleyes
avatar
digi

Femminile Numero di messaggi : 1586
Reputazione : 3
Punti : 1588
Data d'iscrizione : 16.02.09

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ste il Dom Mar 07, 2010 10:36 pm

Per ovviare a quello si può stabilire un limite di turni dopo il quale la partita è finita e si va ai punti,
come spiegavo un paio di post prima...

Comunque anche con gli obbiettivi segreti, dopo un po' si intuiscono, se non mi ricordo male...

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da digi il Dom Mar 07, 2010 10:44 pm

Tu almeno ricordi male, io non ricordo proprio... non so

Si avevo letto il posto sul limite dei turni, per questo lo dicevo...secondo me è la soluzione migliore... si si
avatar
digi

Femminile Numero di messaggi : 1586
Reputazione : 3
Punti : 1588
Data d'iscrizione : 16.02.09

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Obbiettivi

Messaggio Da Ste il Dom Mar 07, 2010 11:35 pm

Ok... allora si può fare così (riassumo):

- Si usano gli obbiettivi torneo (che si possono trovare ad esempio qui).
- Si gioca ad obbiettivi palesi (non segreti).
- Gli obbiettivi sono numerati da 1 a 20 e si sorteggiano con la tag rand.
(Codice: [rand]1,20[/rand*], togliendo l'asterisco).
- Se un giocatore pesca un obbiettivo già assegnato, rifà finché non ne pesca uno non assegnato
(meglio evitare di avere 2 giocatori con lo stesso obbiettivo...).
- La partita dura al massimo tot turni (chessò... tot=50? Sono 1 o 2 mesi di partita...).
- Se un giocatore raggiunge il suo obbiettivo entro il limite suddetto, vince e la partita termina.
- In caso contrario, si va ai punti: ad ogni giocatore vengono assegnati i punti dei territori da lui occupati
e che fanno parte del suo obbiettivo. Chi fa più punti, vince.
- In caso di parità... boh?... si contano i punti degli altri territori occupati, oppure la si gioca ai dadi...
oppure pari e patta che tanto mica c'è in palio qualcosa!


OBBIETTIVI TORNEO
1 AFRICA, EUROPA, Afghanistan, Urali, Siberia, Jacuzia, Mongolia, Brasile, Perù, Venezuela.
2 ASIA, EUROPA, Indonesia.
3 AFRICA, ASIA, Ucraina, Europa Meridionale
4 AFRICA, AMERICA DEL SUD, OCEANIA, Medio Oriente, India, Siam, Cina, Mongolia, Cita, Giappone, Europa Occidentale, Europa Meridionale.
5 AFRICA, AMERICA DEL NORD, Islanda, Scandinavia, Ucraina, Europa Meridionale, Europa Settentrionale, Gran Bretagna.
6 AMERICA DEL NORD, AMERICA DEL SUD, Africa del Nord, Congo, Africa del Sud, Europa Occidentale, Gran Bretagna, Islanda, Kamchatka, Giappone, Mongolia, Cita
7 AMERICA DEL NORD, EUROPA, Urali, Siberia, Jacuzia, Kamchatka, Giappone.
8 AFRICA, AMERICA DEL SUD, EUROPA, Medio Oriente, Afghanistan, Urali, Siberia.
9 AMERICA DEL SUD, EUROPA, OCEANIA, Afghanistan, Medio Oriente, India, Siam, Africa del Nord, Egitto, Africa Orientale.
10 AMERICA DEL NORD, AMERICA DEL SUD, Africa del Nord, Congo, Africa Orientale, Egitto, Medio Oriente, India, Siam, Indonesia, Nuova Guinea, Australia Occidentale.
11 AFRICA, EUROPA, OCEANIA, Urali, Afghanistan, Medio Oriente, India, Siam.
12 ASIA, OCEANIA, Ucraina, Europa Meridionale, Europa Settentrionale, Scandinavia, Islanda.
13 AMERICA DEL NORD, OCEANIA, Siam, Cina, India, Medio Oriente, Afghanistan, Urali, Ucraina, Scandinavia, Islanda.
14 AMERICA DEL NORD, ASIA.
15 AMERICA DEL NORD, EUROPA, Africa del Nord, Congo, Africa del Sud, Kamchatka, Giappone.
16 AFRICA, EUROPA, Medio Oriente, Afghanistan, Urali, Groenlandia, Quebec, Ontario, Stati Uniti Orientali.
17 AMERICA DEL NORD, AMERICA DEL SUD, EUROPA, Kamchatka, Giappone.
18 AFRICA, AMERICA DEL NORD, AMERICA DEL SUD, Europa Occidentale, Europa Meridionale, Ucraina.
19 AFRICA, AMERICA DEL SUD, ASIA
20 ASIA, OCEANIA, Egitto, Africa Orientale, Madagascar, Africa del Sud, Congo, Alaska, Alberta.


Ultima modifica di Ste il Lun Mar 08, 2010 10:56 am, modificato 1 volta (Motivazione : Aggiunta la lista degli obbiettivi)

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da digi il Lun Mar 08, 2010 1:46 am

mi sembra ci sia tutto...domani si prova?
avatar
digi

Femminile Numero di messaggi : 1586
Reputazione : 3
Punti : 1588
Data d'iscrizione : 16.02.09

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ste il Lun Mar 08, 2010 10:58 am

Per me si può fare...si si Non vuoi prima provare a fare un turno nella partita di test?

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ste il Lun Mar 08, 2010 11:03 am

Ah, mi è venuta un'idea or ora... invece che usare la funzione 'rand' per sorteggiare gli obiettivi posso fare
una modifica al programmino che prepara lo stato iniziale, aggiungendoci anche quella funzione. si si

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ste il Lun Mar 08, 2010 11:42 am

Detto.. fatto. Ora il programmino prepara come "stato" iniziale una cosa del genere:

Blu: TNO1 ALB1 QUE1 AMC1 / EUS1 / AFN1 AFS1 / JAC1 MON1 / AUE1 / - / 20 Obbiettivo=5
Verde: USE1 / BRA1 / GBR1 EUM1 UKR1 / AFO1 / SIB1 JPN1 IND1 / NGU1 / - / 20 Obbiettivo=19
Rosso: ASK1 GRO1 ONT1 USW1 / PER1 ARG1 / SCA1 / CON1 / URA1 MDO1 / IDS1 / - / 19 Obbiettivo=13
Giallo: VEN1 / ISL1 EUO1 / EGI1 MAD1 / CIT1 KAM1 AFG1 CIN1 SIA1 / AUW1 / - / 19 Obbiettivo=7

Quando si inizia a giocare si può cancellare la parte "Obbiettivo=...".
Se poi si vuole usare altri metodi per assegnare gli obbiettivi (es: chiedere a qualcuno che non gioca di
sorteggiarli e comunicarli ai giocatori in privato), basta ignorare quelli assegnati dal programmino.

Il codice modificato:
Spoiler:
Codice:

/* File: riskshuffle.c
 *
 * RISKSHUFFLE v0.2
 * --------------------------------------------------------------------------------
 * Author: Ste
 *
 * Utility per partite a Risiko su forum: mescola il mazzo delle carte-territorio, le
 * distribuisce ai giocatori e stampa su stdout lo "stato" iniziale.
 *
 * Per compilare:
 * $cc riskshuffle.c -o riskshuffle
 *
 * Uso: riskshuffle <n>
 * dove n è il numero di giocatori (n=3..6)
 *
 * Rfr: http://en.wikipedia.org/wiki/Knuth_shuffle
 *      http://rosettacode.org/wiki/Knuth_shuffle#C
 */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
 
#define NCARDS 42 /* no. di territori (=no. di carte nel mazzo) */
#define PMAX  6  /* no. massimo di giocatori */
#define NTGT  20 /* numero di obbiettivi (obbiettivi = 1 ... NTGT) */

typedef struct {
    int Cards[NCARDS]; /* mano */
    int Ncards; /* numero di carte */
    int Narmies; /* armate */
    int Target; /* obbiettivo */
    char* Color;
} PLAYERt;
   
static int Cards[NCARDS]; /* mazzo di carte */
static PLAYERt Player[PMAX]; /* giocatori */
static int Np=4; /* numero di giocatori */

static char* Lands[NCARDS] = {
    "ASK1", "TNO1", "GRO1", "ALB1", "ONT1", "QUE1", "USW1", "USE1", "AMC1",
    "VEN1", "PER1", "BRA1", "ARG1",
    "ISL1", "SCA1", "GBR1", "EUS1", "EUO1", "EUM1", "UKR1",
    "AFN1", "EGI1", "CON1", "AFO1", "AFS1", "MAD1",
    "URA1", "SIB1", "JAC1", "CIT1", "KAM1", "JPN1", "MON1", "AFG1", "MDO1", "IND1", "CIN1", "SIA1",
    "IDS1", "NGU1", "AUE1", "AUW1" };

static int Cont[NCARDS] = {
    1, 1, 1, 1, 1, 1, 1, 1, 1,
    2, 2, 2, 2,
    3, 3, 3, 3, 3, 3, 3,
    4, 4, 4, 4, 4, 4,
    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
    6, 6, 6, 6 };

static int Narmies[PMAX] = { 0, 0, 35, 30, 25, 20 };
static char* Color[PMAX] = { "Giallo", "Rosso", "Verde", "Blu", "Viola", "Nero" };

static int Target[NTGT];

int PrintCards(int* cards, int ncards) {
    int i;
    for(i=0; i<ncards; i++)
        printf("%u ",cards[i]);
    printf("\n");
}

int PrintPlayer(PLAYERt *p) {
    int i,c;
    c=0;
    printf("%s: ",p->Color);
    for(i=0; i<p->Ncards; i++)
        {
        if((c!=0)&&(c!=Cont[p->Cards[i]]))
            printf("/ ");
        c=Cont[p->Cards[i]];
        printf("%s ",Lands[p->Cards[i]]);
        //printf("%u ",p->Cards[i]);
        }
    printf("/ - / %u  Obbiettivo=%u\n",p->Narmies,p->Target);
}

int Cmp(const void *a, const void *b) {
    return *(int *)a - *(int *)b;
}
 
int Sort(int *cards, int ncards) {
    qsort(cards, ncards, sizeof(int), Cmp);
}

inline int Rrand(int m) {
    /* Questo dovrebbe andar bene per smazzate a distanza di giorni l'una dall'altra : */
    srand((unsigned int)time(NULL));
    return (int)((double)m * ( rand() / (RAND_MAX+1.0) ));
}

 
void Shuffle(void *obj, size_t nmemb, size_t size) {
/* Mescola il mazzo */
    void *temp = malloc(size);
    size_t n = nmemb;
    while ( n > 1 )
        {
        size_t k = Rrand(n--);
        memcpy(temp, obj + n*size, size);
        memcpy(obj + n*size, obj + k*size, size);
        memcpy(obj + k*size, temp, size);
        }
    free(temp);
}

void Issue(void) {
/* Distribuisce le carte */
#define P Player[j]
    int i,j;
    for(j=0;j<Np;j++)
        P.Target=Target[j];
    i=0;
    do {
        for(j=0;j<Np;j++)
            {
            if(i==NCARDS) return;
            P.Cards[P.Ncards]=Cards[i];
            P.Ncards++;
            P.Narmies--;
            i++;   
            }
        } while(1);

#undef P
}

#define USAGE \
    "\nUso: %s <n>\n"\
    "n =  numero di giocatori (3..6, default n=4)\n\n\n",argv[0]

int main(int argc, char** argv, char** env) {
    // argv 1 = numero di giocatori 2...6
    int i,j;

    if(argc>2)
        {
        printf(USAGE);
        return 0;
        }

    if(argc==2)
        {
        Np = atoi(argv[1]);
        if((Np<3)||(Np>6))
            {
            printf("\nArgomento non valido.\n");
            printf(USAGE);
            return 0;
            }
        }

    /* Inizializza il mazzo */
    for(i=0; i<NCARDS;i++)
        Cards[i]=i;

    for(i=0; i<NTGT; i++)
        Target[i]=i+1;

    /* Inizializza i giocatori */
    for(j=0; j<Np;j++)
        {
        for(i=0; i<NCARDS;i++)
            {
            Player[j].Cards[i]=-1;
            Player[j].Ncards=0;
            Player[j].Narmies=Narmies[Np-1];
            Player[j].Color = Color[j];
            Player[j].Target = -1;
            }         
        }

    /* Mescola */
    Shuffle(Cards,NCARDS,sizeof(int));
    Shuffle(Target,NTGT,sizeof(int));

    Issue();
    //PrintCards(Cards,NCARDS);

    for(j=0; j<Np;j++)
        Sort(Player[j].Cards,Player[j].Ncards);

    for(j=Np-1; j>-1;j--)
        PrintPlayer(&Player[j]);   

    return 0;
}

/* eof */

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ransie il Lun Mar 08, 2010 11:51 am

per me va bene così, è comodo si si
avatar
Ransie

Femminile Vergine Cane
Numero di messaggi : 8804
Età : 34
Reputazione : 10
Punti : 8794
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ste il Lun Mar 08, 2010 1:44 pm

Ho messo insieme tutti i pezzi, nello scaffale dei giochi da forum: http://tinyurl.com/yeexw42 ( sweat )

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da digi il Lun Mar 08, 2010 5:16 pm

bravo ste!!! happy
Io non ce la faccio ora a cominciare, voglio farlo quando ho un pò di tempo...però hai ragione forse è meglio fare un giro di prova..che ho le idee un pò confuse...così vedo d riordinarle priam di cominciare..forse più tardi riesco, sempre che trovo voi... hello
avatar
digi

Femminile Numero di messaggi : 1586
Reputazione : 3
Punti : 1588
Data d'iscrizione : 16.02.09

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Obbiettivo semisegreto

Messaggio Da Ste il Sab Mar 13, 2010 11:57 am

Ho modificato il programmino in modo che invece che assegnare un obbiettivo solo, ne assegni un "ventaglio":

Blu: ONT1 / VEN1 PER1 / ISL1 / AFN1 AFS1 / URA1 JAC1 / NGU1 AUE1 / - / 20 Obb: A=14 B=9 C=13 D=5 E=7
Verde: ASK1 QUE1 USW1 / BRA1 / GBR1 / AFO1 / SIB1 JPN1 IND1 CIN1 / - / 20 Obb: A=1 B=8 C=12 D=16 E=6
Rosso: TNO1 USE1 / ARG1 / SCA1 EUM1 UKR1 / CON1 / KAM1 MON1 MDO1 / IDS1 / - / 19 Obb: A=20 B=2 C=11 D=15 E=19
Giallo: GRO1 ALB1 AMC1 / EUS1 EUO1 / EGI1 MAD1 / CIT1 AFG1 SIA1 / AUW1 / - / 19 Obb: A=10 B=17 C=3 D=4 E=18

Può essere usato per rendere un po' segreto l'obbiettivo. Basta che prima di iniziare, ogni giocatore scelga una
lettera da A a E senza comunicarla, la cripti usando questo: http://infoencrypt.com/ , e posti la criptatura.

Il suo obbiettivo sarà quello corrispondente alla lettera scelta, nel ventaglio di obbiettivi del colore che gli viene
assegnato dal sorteggio.

Esempio:
In privato, scelgo la lettera D, e la cripto usando la password "123prova".
Dichiaro pubblicamente che il mio obbiettivo è <Encrypted>lNgSHZZTnjs=</Encrypted>
Si sorteggiano i colori e mi capita il Giallo, quindi il mio obbiettivo è il numero 4:

Giallo: GRO1 ALB1 AMC1 / EUS1 EUO1 / EGI1 MAD1 / CIT1 AFG1 SIA1 / AUW1 / - / 19 Obb: A=10 B=17 C=3 D=4 E=18

L'obbiettivo è semisegreto perché gli altri giocatori sanno che è uno tra 10, 17, 3, 4 e 18, ma non sanno quale perché
finché non rivelo la password, non sanno che ho scelto il D.

Ovviamente in più si è e più piccolo è il "ventaglio" di obbiettivi per ogni giocatore, quindi meno segreto l'obbiettivo
(3 giocatori: A-F, 4 giocatori A-E, 5 giocatori A-D, 6 giocatori A-C)

Il nuovo codice del programmino):
Spoiler:
Codice:

/* File: riskshuffle.c
 *
 * RISKSHUFFLE v0.3
 * --------------------------------------------------------------------------------
 * Author: Ste
 *
 * Utility per partite a Risiko su forum: mescola il mazzo delle carte-territorio, le
 * distribuisce ai giocatori e stampa su stdout lo "stato" iniziale.
 *
 * Per compilare:
 * $cc riskshuffle.c -o riskshuffle
 *
 * Uso: riskshuffle <n>
 * dove n è il numero di giocatori (n=3..6)
 *
 * Rfr: http://en.wikipedia.org/wiki/Knuth_shuffle
 *      http://rosettacode.org/wiki/Knuth_shuffle#C
 */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
 
#define NCARDS 42 /* no. di territori (=no. di carte nel mazzo) */
#define PMAX  6  /* no. massimo di giocatori */
#define NTGT  20 /* numero di obbiettivi (obbiettivi = 1 ... NTGT) */

typedef struct {
    int Cards[NCARDS]; /* mano */
    int Ncards; /* numero di carte */
    int Narmies; /* armate */
    int Target[6]; /* obbiettivo */
    char* Color;
} PLAYERt;
   
static int Cards[NCARDS]; /* mazzo di carte */
static PLAYERt Player[PMAX]; /* giocatori */
static int Np=4; /* numero di giocatori */

static char* Lands[NCARDS] = {
    "ASK1", "TNO1", "GRO1", "ALB1", "ONT1", "QUE1", "USW1", "USE1", "AMC1",
    "VEN1", "PER1", "BRA1", "ARG1",
    "ISL1", "SCA1", "GBR1", "EUS1", "EUO1", "EUM1", "UKR1",
    "AFN1", "EGI1", "CON1", "AFO1", "AFS1", "MAD1",
    "URA1", "SIB1", "JAC1", "CIT1", "KAM1", "JPN1", "MON1", "AFG1", "MDO1", "IND1", "CIN1", "SIA1",
    "IDS1", "NGU1", "AUE1", "AUW1" };

static int Cont[NCARDS] = {
    1, 1, 1, 1, 1, 1, 1, 1, 1,
    2, 2, 2, 2,
    3, 3, 3, 3, 3, 3, 3,
    4, 4, 4, 4, 4, 4,
    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
    6, 6, 6, 6 };

static int Narmies[PMAX+1] = { 0, 0, 0, 35, 30, 25, 20 };
static int Ntarget[PMAX+1] = { 0, 0, 0, 6, 5, 4, 3 };
static char* Color[PMAX] = { "Giallo", "Rosso", "Verde", "Blu", "Viola", "Nero" };

static int Target[NTGT];

int PrintCards(int* cards, int ncards) {
    int i;
    for(i=0; i<ncards; i++)
        printf("%u ",cards[i]);
    printf("\n");
}

int PrintPlayer(PLAYERt *p) {
    int i,c,n;
    char* l[]={ "A","B","C","D","E","F"};
    c=0;
    printf("%s: ",p->Color);
    for(i=0; i<p->Ncards; i++)
        {
        if((c!=0)&&(c!=Cont[p->Cards[i]]))
            printf("/ ");
        c=Cont[p->Cards[i]];
        printf("%s ",Lands[p->Cards[i]]);
        //printf("%u ",p->Cards[i]);
        }
    //printf("/ - / %u  Obbiettivo=%u\n",p->Narmies,p->Target[0]);
    n=Ntarget[Np];
    printf("/ - / %u Obb: ",p->Narmies);
    for(i=0; i<n; i++)
        printf("%s=%u ",l[i],p->Target[i]);
    printf("\n");
}

int Cmp(const void *a, const void *b) {
    return *(int *)a - *(int *)b;
}
 
int Sort(int *cards, int ncards) {
    qsort(cards, ncards, sizeof(int), Cmp);
}

inline int Rrand(int m) {
    /* Questo dovrebbe andar bene per smazzate a distanza di giorni l'una dall'altra : */
    srand((unsigned int)time(NULL));
    return (int)((double)m * ( rand() / (RAND_MAX+1.0) ));
}

 
void Shuffle(void *obj, size_t nmemb, size_t size) {
/* Mescola il mazzo */
    void *temp = malloc(size);
    size_t n = nmemb;
    while ( n > 1 )
        {
        size_t k = Rrand(n--);
        memcpy(temp, obj + n*size, size);
        memcpy(obj + n*size, obj + k*size, size);
        memcpy(obj + k*size, temp, size);
        }
    free(temp);
}

void IssueCards(void) {
/* Distribuisce le carte */
#define P Player[j]
    int i,j;
    for(j=0;j<Np;j++)
        P.Target[0]=Target[j];
    i=0;
    do {
        for(j=0;j<Np;j++)
            {
            if(i==NCARDS) return;
            P.Cards[P.Ncards]=Cards[i];
            P.Ncards++;
            P.Narmies--;
            i++;   
            }
        } while(1);

#undef P
}

void IssueTargets(void) {
/* Distribuisce gli obbiettivi */
#define P Player[j]
    int i,j,n,k;
    n=Ntarget[Np];

    k=0;
    for(i=0;i<n;i++)
        for(j=0;j<Np;j++)
            {
            P.Target[i]=Target[k];
            k++;
            }

#undef P
}

#define USAGE \
    "\nUso: %s <n>\n"\
    "n =  numero di giocatori (3..6, default n=4)\n\n\n",argv[0]

int main(int argc, char** argv, char** env) {
    // argv 1 = numero di giocatori 2...6
    int i,j;

    if(argc>2)
        {
        printf(USAGE);
        return 0;
        }

    if(argc==2)
        {
        Np = atoi(argv[1]);
        if((Np<3)||(Np>6))
            {
            printf("\nArgomento non valido.\n");
            printf(USAGE);
            return 0;
            }
        }

    /* Inizializza il mazzo */
    for(i=0; i<NCARDS;i++)
        Cards[i]=i;

    for(i=0; i<NTGT; i++)
        Target[i]=i+1;

    /* Inizializza i giocatori */
    for(j=0; j<Np;j++)
        {
        for(i=0; i<NCARDS;i++)
            {
            Player[j].Cards[i]=-1;
            Player[j].Ncards=0;
            Player[j].Narmies=Narmies[Np];
            Player[j].Color = Color[j];
            Player[j].Target[0] = -1;
            }         
        }

    /* Mescola */
    Shuffle(Cards,NCARDS,sizeof(int));
    Shuffle(Target,NTGT,sizeof(int));

    IssueCards();
    IssueTargets();
    //PrintCards(Cards,NCARDS);

    for(j=0; j<Np;j++)
        Sort(Player[j].Cards,Player[j].Ncards);

    for(j=Np-1; j>-1;j--)
        PrintPlayer(&Player[j]);   

    return 0;
}

/* eof */


Ultima modifica di Ste il Lun Mar 15, 2010 9:12 pm, modificato 2 volte (Motivazione : aggiunti i tag 'code' attorno al codice del programmino)

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ransie il Sab Mar 13, 2010 12:19 pm

fischiettare! (fischio)

si può iniziare? Chi gioca?
avatar
Ransie

Femminile Vergine Cane
Numero di messaggi : 8804
Età : 34
Reputazione : 10
Punti : 8794
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Ste il Sab Mar 13, 2010 12:29 pm

Io volentieri. smile

Però magari aspettiamo di aver finito la partita a Monopoli, sennò finisce che ci perdo troppo tempo. sos

_________________

Let's build a ... boardgame!

"Fai quel che puoi, con quel che hai, dove sei." (T. Roosevelt)


Indice - S&S - Scrabble - Monopoli - Yahtzee - Risk - Frustr
avatar
Ste

Maschile Ariete Maiale
Numero di messaggi : 9606
Età : 46
Località : Trentino
Occupazione/Hobby : malaussègnere
Reputazione : 7
Punti : 9535
Data d'iscrizione : 14.02.09

Vedi il profilo dell'utente http://protocols-lab.blogspot.com/

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da digi il Sab Mar 13, 2010 12:42 pm

si si magari settimana prossima... si si
avatar
digi

Femminile Numero di messaggi : 1586
Reputazione : 3
Punti : 1588
Data d'iscrizione : 16.02.09

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: Risiko su forum (making of)

Messaggio Da Contenuto sponsorizzato


Contenuto sponsorizzato


Tornare in alto Andare in basso

Pagina 8 di 8 Precedente  1, 2, 3, 4, 5, 6, 7, 8

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto

- Argomenti simili

 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum