none
Gioco di carte col linguaggio C RRS feed

  • Domanda

  • Grazie mille! Molto gentile :-)...

    Vi espongo un altro dubbio che ho,riguarda sempre lo stesso esempio,gioco con le carte,ecco il codice:

    /* Questa funzione restituisce 1 se il   */
    /* computer vuole una carta, 0 altrimenti*/
    int ia(float val, float score)
    {
        int gen=0;
        
        if(score!=0.0)
        {
          if(score>0.0)
          {
            if(score>=val)
              return 1;
          }
        }
        gen=rand() % 100;
        if(val==0.5)
          if(gen<=95)
            return 1;
        if(val==1.0)
          if(gen<=93)
            return 1;
        if(val==1.5)
          if(gen<=92)
            return 1;
        if(val==2.0)
          if(gen<=91)
            return 1;
        if(val==2.5)
          if(gen<=90)
            return 1;
        if(val==3.0)
          if(gen<=90)
            return 1;
        if(val==3.5)
          if(gen<=85)
            return 1;
        if(val==4.0)
          if(gen<=80)
            return 1;
        if(val==4.5)
          if(gen<=75)
            return 1;
        if(val==5.0)
          if(gen<=65)
            return 1;
        if(val==5.5)
          if(gen<=55)
            return 1;
        if(val==6.0)
          if(gen<=20)
            return 1;
        if(val==6.5)
          if(gen<=15)
            return 1;
        if(val==7.0)
          if(gen<=5)
            return 1;
        return 0;
    }  

    Praticamente la random ()%100 genera un numero qualsiasi tra 0 e 32767 ma di questo numero viene considerato il resto della divisione intera per 100,quindi qualsiasi numero generi con l'operatore modulo si riduce ad uno del range 0-99 , ma in questo specifico esempio gen cosa rappresenta?? E perchè considera gen sempre <= ad un numero, qual è lo scopo principale di questa funzione? ...Io ho capito sostanzialmente che serve per dare la carta quando il computer lo ritiene oppurtuno, ma non riesco a capire il meccanismo celato dietro tale funzione! Help me...

    Grazie!

    mercoledì 5 febbraio 2014 09:04

Risposte

  • Grazie mille! Molto gentile :-)...

    Vi espongo un altro dubbio che ho,riguarda sempre lo stesso esempio,gioco con le carte,ecco il codice:

    ......

    Praticamente la random ()%100 genera un numero qualsiasi tra 0 e 32767 ma di questo numero viene considerato il resto della divisione intera per 100,quindi qualsiasi numero generi con l'operatore modulo si riduce ad uno del range 0-99 , ma in questo specifico esempio gen cosa rappresenta?? E perchè considera gen sempre <= ad un numero, qual è lo scopo principale di questa funzione? ...Io ho capito sostanzialmente che serve per dare la carta quando il computer lo ritiene oppurtuno, ma non riesco a capire il meccanismo celato dietro tale funzione! Help me...

    Grazie!

    Come già detto qua

    http://social.msdn.microsoft.com/Forums/it-IT/2dd3f357-ddee-452f-a1be-c7a2bc7f41de/programma-in-c?forum=visualcppit

    Da qui:

    http://pastebin.com/....

    [ho mascherato il link perchè se questo codice appartiene ad un libro forse non è lecito che appaia postato su internet]

    si capisce che il gioco è sette e mezzo.

    Probabilmente in base alla somma attuale "val" delle carte che ha già, il computer deve decidere se chiedere una carta o meno cercando di non superare il 7 e mezzo. Ad esempio, se ha 6.5, la probabilità che chieda una carta è solo il 15%



    • Modificato BlueLed mercoledì 5 febbraio 2014 11:43
    • Contrassegnato come risposta Irina Turcu martedì 11 febbraio 2014 14:43
    mercoledì 5 febbraio 2014 09:36

Tutte le risposte

  • Grazie mille! Molto gentile :-)...

    Vi espongo un altro dubbio che ho,riguarda sempre lo stesso esempio,gioco con le carte,ecco il codice:

    ......

    Praticamente la random ()%100 genera un numero qualsiasi tra 0 e 32767 ma di questo numero viene considerato il resto della divisione intera per 100,quindi qualsiasi numero generi con l'operatore modulo si riduce ad uno del range 0-99 , ma in questo specifico esempio gen cosa rappresenta?? E perchè considera gen sempre <= ad un numero, qual è lo scopo principale di questa funzione? ...Io ho capito sostanzialmente che serve per dare la carta quando il computer lo ritiene oppurtuno, ma non riesco a capire il meccanismo celato dietro tale funzione! Help me...

    Grazie!

    Come già detto qua

    http://social.msdn.microsoft.com/Forums/it-IT/2dd3f357-ddee-452f-a1be-c7a2bc7f41de/programma-in-c?forum=visualcppit

    Da qui:

    http://pastebin.com/....

    [ho mascherato il link perchè se questo codice appartiene ad un libro forse non è lecito che appaia postato su internet]

    si capisce che il gioco è sette e mezzo.

    Probabilmente in base alla somma attuale "val" delle carte che ha già, il computer deve decidere se chiedere una carta o meno cercando di non superare il 7 e mezzo. Ad esempio, se ha 6.5, la probabilità che chieda una carta è solo il 15%



    • Modificato BlueLed mercoledì 5 febbraio 2014 11:43
    • Contrassegnato come risposta Irina Turcu martedì 11 febbraio 2014 14:43
    mercoledì 5 febbraio 2014 09:36
  • Infinitamente grazie per l'aiuto!
    mercoledì 5 febbraio 2014 10:31
  •  Questo è l'ultimo dubbio che ho per quanto riguarda il gioco delle carte con il linguaggio C.

    Ecco il codice: 

    float ia_bet(float carta, float soldi_pc, float soldi)
    {
      int x=0;
      float bet_pc=0.0;
      
      x=rand() % 100;
      if(carta==0.5)
        if(x<50)
          bet_pc=0.50;
        else
          if(x<65)
            bet_pc=1.00;
          else
            bet_pc=0.80;
      if(carta==1.0 || carta==2.0)
        if(x<75)
          bet_pc=0.50;
        else
          bet_pc=0.70;
      if(carta==3.0 || carta==4.0)
        if(x<70)
          bet_pc=0.80;
        else
          bet_pc=1.00;
      if(carta==5.0)
        if(x<50)
          bet_pc=0.30;
        else
          bet_pc=0.80;
      if(carta==6.0)
        if(x<85)
          bet_pc=1.50;
        else
          bet_pc=2.00;
      if(carta==7.0)
        if(x<10)
          bet_pc=soldi_pc-1.00;
        else
          if(x<50)
            bet_pc=soldi_pc/2;
          else
            bet_pc=soldi_pc/4;
      if(bet_pc>soldi_pc)
        bet_pc=soldi_pc;
      if(bet_pc>soldi)
        bet_pc=soldi;
      return bet_pc;
    }
    

    Praticamente ho capito che il computer e il giocatore durante questo gioco puntano dei soldi , essi hanno a disposizione un totale di 10.00 euro, dunque in questo caso bet_pc  indica proprio la puntata del computer ma x cosa indica? E questa funzione sostanzialmente cosa fa? Sembra simile a quella che ho postato nel forum precedentemente, ma ho ancora le idee un pò confuse! Se mi chiarite anche questo ultimo dubbio andrò avanti con lo studiare altri esempi, e spero di non annoiarvi più con le mie domande... Grazie.

    mercoledì 5 febbraio 2014 11:28
  • Se il codice che posti appartiene ad un libro, non è detto che questo codice (anche in parte) si possa pubblicare liberamente. Quindi io non andrei avanti.


    • Modificato BlueLed mercoledì 5 febbraio 2014 11:41
    mercoledì 5 febbraio 2014 11:38
  • Veramente il libro cita come esempio solo il codice mescola carte poi tutto il resto lo lascia come esercizio per il lettore, è un libro scritto da un prof. e io vorrei completarlo e tutti gli altri codici che ho postato si trovano tranquillamente sul web, vorrei semplicemente capirli per poter/tentare di concludere l'esercio!Tutto qui...Grazie lo stesso!  
    mercoledì 5 febbraio 2014 12:04