provate e ditemi...
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 14 di 14

Discussione: provate e ditemi...

Cambio titolo
  1. #1
    Utente L'avatar di complicated
    Registrato il
    08-03
    Località
    villaggio dei puffi
    Messaggi
    364

    provate e ditemi...

    questo è il primopezzo delgiochino ke sto realizzando...

    (solo creazionedel personaggio...)

    provatelo e ditemi come sistemnare ilcodiec...

    /*
    Name: PROVATELO E DITEMI KE VE NE PARE...
    Author: ALESSANDRO COCCO
    Date: 07/10/03 18.56
    Description: RPG TESTUALE
    */

    #include <stdio.h> /* */
    #include <stdlib.h> /* inclusione librerie */
    #include <time.h> /* */

    int pv, dm, dif, bonus, nome[7], /* variabili del personaggio */
    forza, intelligenza, vitalita, /* variabili per le caratteristiche */
    dadoPOZ, dado6, dado12, /* variabili dei dadi */
    menu1, menu2, /* variabili dei menu */
    giorno, ore, min, /* variabili del tempo */
    able, a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0, i=0, l=0, /* abilità */
    combattere, osservare, parata, colpo, resistere, /* */
    azzardo, furto, /* lvl abilità */
    medicina, parolacce, pallaDiFuoco, /* */
    totale, totaleVERO, rimaste, x; /* varie */

    void CreaEroe() /* creazione del personaggio / inizio funzione CreaEroe*/
    {
    printf("\t\n");
    printf("\t=========================\n");
    printf("\tCREAZIONE DEL PERSONAGGIO\n");
    printf("\t=========================\n");
    printf("\t\n");
    printf("\tPrima di cominciare devi crearti il personaggio.\n");
    printf("\tLe caratteristiche del personaggio sono tre:\n");
    printf("\t\n");
    printf("\t\t FORZA\n");
    printf("\t\t VITALITA\'\n");
    printf("\t\t INTELLIGENZA\n");
    printf("\t\n");
    printf("\tPrima di tutto da un nome al tuo eroe:\n");
    printf("\t(no spazi, no caratteri strani, massimo sette\n");
    printf("\ttra lettere e numeri).\n");

    printf("\t\n");
    printf("\t");
    scanf("%s", nome);
    system("CLS");

    /* tiro x determinare la forza */
    srand((unsigned)time(NULL));
    forza=1+rand()%6;
    printf("\t \n");
    printf("\tTiro dado per determinare la FORZA: %d\n", forza);
    printf("\t \n");
    if (forza<5 && forza>2) {
    printf("\tNessun bonus alla forza.\n");
    bonus=0;
    }
    if (forza<3) {
    printf("\tChe schifo!\n");
    bonus=0;
    }
    if (forza==5) {
    printf("\tBonus +1 al danno inflitto con armi da corpo a corpo.\n");
    bonus=1;
    }
    if (forza==6) {
    printf("\tBonus +2 al danno inflitto con armi da corpo a corpo.\n");
    bonus=2;
    }
    printf("\t \n");
    system("PAUSE");
    system("CLS");

    /* tiro x determinare la vitalità */
    srand((unsigned)time(NULL));
    vitalita=1+rand()%6;
    printf("\t\n");
    printf("\tTiro dado per determinare la VITALITA\': %d\n", vitalita);
    pv=vitalita+10;
    printf("\t \n");
    printf("\t10 + %d = %d punti vita\n", vitalita, pv);
    printf("\t \n");
    printf("\tI punti vita sono i danni che il tuo personaggio puo\'\n");
    printf("\tsubire prima di morire. Se subisci danni puoi recupe-\n");
    printf("\trare punti vita utilizzando delle pozioni di cura.\n");
    printf("\t \n");
    system("PAUSE");
    system("CLS");

    /* tiro x determinare l'intelligenza */
    srand((unsigned)time(NULL));
    intelligenza=1+rand()%6;
    printf("\t \n");
    printf("\tTiro per determinare l\'INTELLIGENZA: %d\n", intelligenza);
    printf("\t \n");
    printf("\tL'intelligenza ti permette di usare alcune delle abilita\'\n");
    printf("\tche vedrai tra poco. Piu\' il valore e\' alto, piu\' abili-\n");
    printf("\tta\' potrai scegliere.\n");
    printf("\t \n");
    system("PAUSE");
    system("CLS");

    /* riepilogo caratteristiche */
    printf("\t \n");
    printf("\t=====================================\n");
    printf("\tRIEPILOGO PERSONAGGIO - - - PARTE 1/2\n");
    printf("\t=====================================\n");
    printf("\t \n");
    printf("\tnome personaggio...: %s\n", nome);
    printf("\tspecializzazione...: guerriero\n");
    printf("\tpunti vita.........: %d\n", pv);
    printf("\tbonus ai danni.....: %d\n", bonus);
    if (intelligenza<=2) {
    printf("\tscrivere e leggere.: poco capace\n");
    }
    if (intelligenza<=4 && intelligenza>2) {
    printf("\tscrivere e leggere.: abbastanza bene\n");
    }
    if (intelligenza>4) {
    printf("\tscrivere e leggere.: molto bene\n");
    }
    printf("\tforza..............: %d\n", forza);
    printf("\tvitalita\'..........: %d\n", vitalita);
    printf("\tintelligenza.......: %d\n", intelligenza);
    printf("\t\n");
    system("PAUSE");
    system("CLS");

    /* scelta abilità */
    totale=intelligenza+forza+vitalita;
    printf("\t\n");
    printf("\tSCELTA ABILITA\'\n");
    printf("\t\n");
    printf("\t 1: combattere (obbligatoria per ogni guerriero che si rispetti)\n");
    printf("\t 2: osservare e intuire (necessaria per scorgere oggetti interessanti)\n");
    printf("\t 3: parare con lo scudo (indovina...)\n");
    printf("\t 4: colpo forte (colpo che infligge piu\' danni del normale)\n");
    printf("\t 5: resistere al dolore (per limitare i danni quando colpito)\n");
    printf("\t 6: medicina (permette di curarsi di 1D6, se il tiro riesce)\n");
    printf("\t 7: arte delle parolacce (^_^)\n");
    printf("\t 8: gioco d\'azzardo (^_^)\n");
    printf("\t 9: furto / spionaggio (secondo te\?)\n");
    if (intelligenza>=5) {
    printf("\t10: palla di fuoco (per lanciarne una devi pagare 1 punto vita)\n");
    }
    printf("\t\n");
    /* x scegliere le abilità */
    x=0;
    rimaste=intelligenza-x;
    printf("\tPuoi segliere al massimo %d abilita\': ", rimaste);
    scanf("%d", &able);
    goto able2;

    able:
    rimaste=intelligenza-x;
    printf("\tPuoi segliere ancora %d abilita\': ", rimaste);
    scanf("%d", &able);

    able2:
    if (able==1) {
    printf("\t\t+++ Abilita\' COMBATTERE scelta\n");
    a=1;
    x++;
    }
    if (able==2) {
    printf("\t\t+++ Abilita\' OSSERVARE E INTUIRE scelta\n");
    b=1;
    x++;
    }
    if (able==3) {
    printf("\t\t+++ Abilita\' PARARE CON LO SCUDO scelta\n");
    c=1;
    x++;
    }
    if (able==4) {
    printf("\t\t+++ Abilita\' COLPO FORTE scelta\n");
    d=1;
    x++;
    }
    if (able==5) {
    printf("\t\t+++ Abilita\' RESISTERE AL DOLORE scelta\n");
    e=1;
    x++;
    }
    if (able==6) {
    printf("\t\t+++ Abilita\' MEDICINA scelta\n");
    f=1;
    x++;
    }
    if (able==7) {
    printf("\t\t+++ Abilita\' ARTE DELLE PAROLACCE scelta\n");
    g=1;
    x++;
    }
    if (able==8) {
    printf("\t\tAbilita\' GIOCO D\'AZZARDO scelta\n");
    h=1;
    x++;
    }
    if (able==9) {
    printf("\t\t+++ Abilita\' FURTO / SPIONAGGIO scelta\n");
    i=1;
    x++;
    }
    if (able==10) {
    printf("\t\t+++ Abilita\' PALLA DI FUOCO scelta\n");
    l=1;
    x++;
    }
    if (able<=0 || able>=11) {
    printf("\tERRORE!!! NUMERO NON VALIDO!!!\n");
    }

    if (x==intelligenza) {
    system("CLS");
    goto abilitaOK;
    }
    goto able;

    /* abililà scelte */
    abilitaOK:
    printf("\t \n");
    printf("\tHai scelto le seguenti abilita\':\n");
    printf("\t \n");
    if (a==1) {
    printf("\tCOMBATTERE\n");
    printf("\t \n");
    }
    if (b==1) {
    printf("\tOSSERVARE E INTUIRE\n");
    printf("\t \n");
    }
    if (c==1) {
    printf("\tPARARE CON LO SCUDO\n");
    printf("\t \n");
    }
    if (d==1) {
    printf("\tCOLPO FORTE\n");
    printf("\t \n");
    }
    if (e==1) {
    printf("\tRESISTERE AL DOLORE\n");
    printf("\t \n");
    }
    if (f==1) {
    printf("\tMEDICINA\n");
    printf("\t \n");
    }
    if (g==1) {
    printf("\tARTE DELLE PAROLACCE\n");
    printf("\t \n");
    }
    if (h==1) {
    printf("\tGIOCO D\'AZZARDO\n");
    printf("\t \n");
    }
    if (i==1) {
    printf("\tFURTO / SPIONAGGIO\n");
    printf("\t \n");
    }
    if (l==1) {
    printf("\tPALLA DI FUOCO\n");
    printf("\t \n");
    }

    system("PAUSE");
    system("CLS");
    printf("\t \n");
    printf("\tAdesso devi scegliere quanti punti dare ad ogni abilita\' che\n");
    printf("\thai scelto. I punti totali sono dati dalla somma dei valori \n");
    printf("\tdelle tue caratteristiche.\n");
    printf("\tAd ogni abilita\' puoi dare al minimo un punto e al massimo\n");
    printf("\tcinque. Questi punti servono ad indicare quanto il tuo per-\n");
    printf("\tsonaggio e\' capace di usare una certa abilita\'.\n");
    printf("\tTutte le abilita\' che non hai selezionato hanno zero punti.\n");
    printf("\tSe ti accorgi di aver sbagliato ad inserire il numero scrivi\n");
    printf("\tun numero qualsiasi maggiore di 5 o uguale a zero. Facendo\n");
    printf("\tcosi\' ricomincerai l\'assegnamento dei punti.\n");
    errore:
    totaleVERO=intelligenza+forza+vitalita;
    if (a==1) {
    printf("\t \n");
    printf("\tCOMBATTERE\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai a COMBATTERE\?\n");
    printf("\tInserisci qui il numero: ");
    scanf("%d", &combattere);
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    if (combattere<=0 || combattere>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-combattere;
    }
    if (b==1) {
    printf("\t \n");
    printf("\tOSSERVARE E INTUIRE\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai a OSSERVARE E INTUIRE\?\n");
    printf("\tInserisci qui il numero: ");
    scanf("%d", &osservare);
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    if (osservare<=0 || osservare>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-osservare;
    }
    if (c==1) {
    printf("\t \n");
    printf("\tPARARE CON LO SCUDO\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai a PARARE CON LO SCUDO\?\n");
    printf("\tInserisci qui il numero: ");
    scanf("%d", &parata);
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    if (parata<=0 || parata>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-parata;
    }
    if (d==1) {
    printf("\t \n");
    printf("\tCOLPO FORTE\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai a COLPO FORTE\?\n");
    printf("\tInserisci qui il numero: ");
    scanf("%d", &colpo);
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    if (colpo<=0 || colpo>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-colpo;
    }
    if (e==1) {
    printf("\t \n");
    printf("\tRESISTERE AL DOLORE\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai a RESISTERE AL DOLORE\?\n");
    printf("\tInserisci qui il numero: ");
    scanf("%d", &resistere);
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    if (resistere<=0 || resistere>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-resistere;
    }
    if (f==1) {
    printf("\t \n");
    printf("\tMEDICINA\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai a MEDICINA\?\n");
    printf("\tInserisci qui il numero: ");
    scanf("%d", &medicina);
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    if (medicina<=0 || medicina>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-medicina;
    }
    if (g==1) {
    printf("\t \n");
    printf("\tARTE DELLE PAROLACCE\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai ad ARTE DELLE PAROLACCE\?\n");
    printf("\tInserisci qui il numero: ");
    scanf("%d", &parolacce);
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    if (parolacce<=0 || parolacce>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-parolacce;
    }
    if (h==1) {
    printf("\t \n");
    printf("\tGIOCO D\'AZZARDO\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai a GIOCO D\'AZZARDO\?\n");
    printf("\tInserisci qui il numero: ");
    scanf("%d", &azzardo);
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    if (azzardo<=0 || azzardo>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-azzardo;
    }
    if (i==1) {
    printf("\t \n");
    printf("\tFURTO / SPIONAGGIO\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai a FURTO / SPIONAGGIO\?\n");
    printf("\tInserisci qui il numero: ");
    printf("\t \n");
    scanf("%d", &furto);
    system("PAUSE");
    system("CLS");
    if (furto<=0 || furto>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-furto;
    }
    if (l==1) {
    printf("\t \n");
    printf("\tPALLA DI FUOCO\n");
    printf("\tHai %d punti da distribuire.\n", totale);
    printf("\tQuanti ne dai a PALLA DI FUOCO\?\n");
    printf("\tInserisci qui il numero: ");
    scanf("%d", &pallaDiFuoco);
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    if (pallaDiFuoco<=0 || pallaDiFuoco>5) {
    printf("\t \n");
    printf("\tERRORE! NUMERO NON VALIDO!!! BISOGNA RICOMINCIARE\n");
    totale=totaleVERO;
    printf("\t \n");
    goto errore;
    }
    totale=totale-pallaDiFuoco;
    }
    printf("\t \n");
    printf("\tCREAZIONE PERSONAGGIO COMPLETATA!!!\n");
    printf("\t \n");
    system("PAUSE");
    system("CLS");
    /* riepilogo personaggio 2/2 */
    printf("\t \n");
    printf("\t=====================================\n");
    printf("\tRIEPILOGO PERSONAGGIO - - - PARTE 2/2\n");
    printf("\t=====================================\n");
    printf("\t \n");
    printf("\tnome personaggio...: %s\n", nome);
    printf("\tspecializzazione...: guerriero\n");
    printf("\tpunti vita.........: %d\n", pv);
    printf("\tbonus ai danni.....: %d\n", bonus);
    if (intelligenza<=2) {
    printf("\tscrivere e leggere.: poco capace\n");
    }
    if (intelligenza<=4 && intelligenza>2) {
    printf("\tscrivere e leggere.: abbastanza bene\n");
    }
    if (intelligenza>4) {
    printf("\tscrivere e leggere.: molto bene\n");
    }
    printf("\tforza..............: %d\n", forza);
    printf("\tvitalita\'..........: %d\n", vitalita);
    printf("\tintelligenza.......: %d\n", intelligenza);
    printf("\tabilita\':\n");
    /* elenco abilita' nel riepilogo */
    if (a==1) {
    printf("\t\t COMBATTERE\n");
    }
    if (b==1) {
    printf("\t\t OSSERVARE E INTUIRE\n");
    }
    if (c==1) {
    printf("\t\t PARARE CON LO SCUDO\n");
    }
    if (d==1) {
    printf("\t\t COLPO FORTE\n");
    }
    if (e==1) {
    printf("\t\t RESISTERE AL DOLORE\n");
    }
    if (f==1) {
    printf("\t\t MEDICINA\n");
    }
    if (g==1) {
    printf("\t\t ARTE DELLE PAROLACCE\n");
    }
    if (h==1) {
    printf("\t\t GIOCO D\'AZZARDO\n");
    }
    if (i==1) {
    printf("\t\t FURTO / SPIONAGGIO\n");
    }
    if (l==1) {
    printf("\t\t PALLA DI FUOCO\n");
    }
    printf("\t\n");
    } /* fine funzione CreaEroe */



    main() /* funzione MAIN */
    {
    CreaEroe();

    system("PAUSE");
    }

    Una donna per domarli, Una donna per trovarli,
    Una donna per ghermirli e nel buio incantenarli.
    (motto del partito "Donne al Potere")


    non so cos'altro scrivere nella firma...

  2. #2
    I am Pain. L'avatar di The Wind Waker
    Registrato il
    05-03
    Località
    Nuoro
    Messaggi
    1.576
    Linkare il tutto in un file pareva brutto?


  3. #3
    gymvideo
    Ospite
    ma sto proprio creando adesso un programma per creare avventure testuali!

  4. #4
    fremo di raccapriccio L'avatar di kocam
    Registrato il
    10-02
    Località
    Dove vivi
    Messaggi
    3.463
    C'è un errore qua:
    scanf("%d", ¶ta);
    Sono masto. Gaio chi nega.

  5. #5
    fremo di raccapriccio L'avatar di kocam
    Registrato il
    10-02
    Località
    Dove vivi
    Messaggi
    3.463
    sostiuitelo con
    316
    scanf("%d", &parata);

    anche se non conosco minimamente il linguaggio qualcosa ci capisco

    FANCULO STO FORUM CAMBIA & + para in quel carattere strano cmq mette così
    316
    scanf("%d",&parata);
    Ultima modifica di kocam; 12-10-2003 alle 08:59:02
    Sono masto. Gaio chi nega.

  6. #6
    Utente L'avatar di devilheart
    Registrato il
    01-03
    Messaggi
    28.310
    nn ho capito xchè hai utilizzato un array di interi x memorizzare il nome. dovrebbe essere un char.

  7. #7
    Utente L'avatar di complicated
    Registrato il
    08-03
    Località
    villaggio dei puffi
    Messaggi
    364
    Inviato da devilheart
    nn ho capito xchè hai utilizzato un array di interi x memorizzare il nome. dovrebbe essere un char.

    se nn ci metto il num [7] mi prende solo laprima lettera del nome...

    Una donna per domarli, Una donna per trovarli,
    Una donna per ghermirli e nel buio incantenarli.
    (motto del partito "Donne al Potere")


    non so cos'altro scrivere nella firma...

  8. #8
    Utente
    Registrato il
    12-02
    Località
    Venezia
    Messaggi
    110

    OMG



    'Spaghetti code' r|_|l3z!!!
    man is your friend

  9. #9
    Utente L'avatar di devilheart
    Registrato il
    01-03
    Messaggi
    28.310
    Inviato da complicated
    se nn ci metto il num [7] mi prende solo laprima lettera del nome...
    intendevo dire che dovevi scrivere char nome[7];
    un array di tipo char è fatto x memorizzare stringhe alfanumeriche e ogni elemento occupa la metà di un int.

  10. #10
    Utente L'avatar di complicated
    Registrato il
    08-03
    Località
    villaggio dei puffi
    Messaggi
    364

    Re: OMG

    Inviato da 3y34|v|31337


    'Spaghetti code' r|_|l3z!!!


    Una donna per domarli, Una donna per trovarli,
    Una donna per ghermirli e nel buio incantenarli.
    (motto del partito "Donne al Potere")


    non so cos'altro scrivere nella firma...

  11. #11
    Utente L'avatar di hottar17
    Registrato il
    10-03
    Località
    Trient
    Messaggi
    55
    ragazzi sarò deficiente ma la sintassi del c++ a me sembra molto + facile.unica cosa occhio ai controlli d'errore se trovi uno che come nome ti da 3.14e25 ( ossia un pi greco della madonna)

  12. #12
    Utente L'avatar di complicated
    Registrato il
    08-03
    Località
    villaggio dei puffi
    Messaggi
    364
    Inviato da hottar17
    ragazzi sarò deficiente ma la sintassi del c++ a me sembra molto + facile.unica cosa occhio ai controlli d'errore se trovi uno che come nome ti da 3.14e25 ( ossia un pi greco della madonna)

    Una donna per domarli, Una donna per trovarli,
    Una donna per ghermirli e nel buio incantenarli.
    (motto del partito "Donne al Potere")


    non so cos'altro scrivere nella firma...

  13. #13
    Utente
    Registrato il
    12-02
    Località
    Venezia
    Messaggi
    110

    Lampadina

    Per il significato di 'spaghetti code' fai una ricerca su Internet.
    Ho provato a riscrivere quello che hai postato tu (in c++, of course ) ).
    Non sono particolarmente soddisfatto , ma non ho molto tempo e lo posto lo stesso, vedi mai che qualcuno lo sistema...
    Codice:
    #include <iostream>
    #include <vector>
    #include <string>
    #include <sys\timeb.h>
    
    using namespace std;
    
    typedef pair<string, int> abilita_livello;
    
    struct personaggio {
    	string nome;
    	string specializzazione;
    	vector<abilita_livello> capacita;
    	int pv;
    	int bonus;
    	int intelligenza;
    	int forza;
    	int vitalita;
    
    	personaggio(string &n) {
    		nome = n;
    		specializzazione = "guerriero";
    		bonus = 0;
    	}
    	void stampa_caratteristiche(void);
    };
    
    void personaggio::stampa_caratteristiche(void)
    {
    	cout << "\tnome personaggio...: " << nome
                 << "\n\tspecializzazione...: " << specializzazione
                 << "\n\tpunti vita.........: " << pv
                 << "\n\tbonus ai danni.....: " << bonus << endl;
    	cout << "\tScrivere e leggere: ";
    	if (intelligenza < 3)
    		cout << "poco capace" << endl;
    	else if (intelligenza < 5)
    		cout << "abbastanza bene" << endl;
    	else
    		cout << "molto bene" << endl;
    	cout << "\tforza..............: " << forza
                 << "\n\tvitalita'..........: " << vitalita
                 << "\n\tintelligenza.......: " << intelligenza << endl;
    	if (capacita.size()) {
    		cout << "\n\tAbilita':";
    		for (size_t i = 0; i < capacita.size(); ++i)
    			cout << "\n\t\t" << capacita[i].first << " (" << capacita[i].second << ")";
    		cout << endl;
    	}
    }
    	     
    struct {
    	char *nome;
    	bool scelta;
    	char *commento;
    } abilita[] = {  {"combattere", false, "obbligatoria per ogni guerriero che si rispetti"},
    	         {"osservare e intuire", false, "necessaria per scorgere oggetti interessanti"},
    	         {"parare con lo scudo", false, "indovina..."},
    	         {"colpo forte", false, "colpo che infligge piu' danni del normale"},
    	         {"resistere al dolore", false, "per limitare i danni quando colpito"},
    	         {"medicina", false, "permette di curarsi di 1D6, se il tiro riesce"},
    	         {"arte delle parolacce", false, "^_^"},
    	         {"gioco d'azzardo", false, "^_^"},
    	         {"furto / spionaggio", false, "secondo te?"},
    	         {"palla di fuoco", false, "per lanciarne una devi pagare 1 punto vita"}
    	      };
    
    int dado(int limite)
    {
    	static bool inizializzato = false;
    
    	if (!inizializzato) {
    		struct timeb tmp;
    
    		ftime(&tmp);
    		srand(tmp.millitm);	
    		inizializzato = true;
    	}
    	return ((rand() % limite) + 1);
    }
    
    #include <windows.h>
    
    HANDLE Console;
    
    void cls(HANDLE hConsole)
    {
    	COORD coordScreen = {0, 0};
    	DWORD charsWritten, ConSize;
    	CONSOLE_SCREEN_BUFFER_INFO csbi; 
    	
    	GetConsoleScreenBufferInfo(hConsole, &csbi);
    	ConSize = csbi.dwSize.X * csbi.dwSize.Y;
    	FillConsoleOutputCharacter(hConsole, static_cast<TCHAR>(' '), ConSize, 
    	     	                   coordScreen, &charsWritten);
    	GetConsoleScreenBufferInfo(hConsole, &csbi );
    	FillConsoleOutputAttribute(hConsole, csbi.wAttributes, ConSize, 
    	     	                   coordScreen, &charsWritten);
    	SetConsoleCursorPosition(hConsole, coordScreen);
    }
    
    #include <conio.h>
    
    void premi_un_tasto(void)
    {
    	cout << "\n\t<premi un tasto per continuare>" << flush;
    	_getch();
    	cls(Console);
    }
    
    void CreaEroe() // funzione di creazione del personaggio
    {
    	cout << "\n\t=========================\n"
                 << "\tCREAZIONE DEL PERSONAGGIO\n"
    	     << "\t=========================\n\n"
    	     << "\tPrima di cominciare devi crearti il personaggio.\n"
    	     << "\tLe caratteristiche del personaggio sono tre:\n\n"
    	     << "\t\t FORZA\n"
    	     << "\t\t VITALITA'\n"
    	     << "\t\t INTELLIGENZA\n"
    	     << "\n\tDai un nome al tuo eroe: " << flush;
    	string nome;
    	cin >> nome;
    	personaggio eroe(nome);
    	// tiro x determinare la forza 
    	cls(Console);
    	eroe.forza = dado(6);
    	cout << "\n\tTiro dado per determinare la FORZA: " <<  eroe.forza << endl;
    	switch (eroe.forza) {
    		case 6:
    			cout << "\tBonus +2 al danno inflitto con armi da corpo a corpo.\n";
    			eroe.bonus = 2; break;
    		case 5:
    			cout << "\tBonus +1 al danno inflitto con armi da corpo a corpo.\n";
    			eroe.bonus = 1; break;
    		case 4: case 3:
    			cout << "\tNessun bonus alla forza.\n"; break;
    		case 2: case 1:
    			cout << "\tChe schifo!\n"; break;
    	}
    	premi_un_tasto();
    	// tiro x determinare la vitalità 
    	eroe.vitalita = dado(6);
    	cout << "\n\tTiro dado per determinare la VITALITA': " << eroe.vitalita << endl; 
    	eroe.pv = eroe.vitalita + 10;
    	cout << "\n\t10 + " << eroe.vitalita << " = " << eroe.pv << endl;
    	cout << "\n\tI punti vita sono i danni che il tuo personaggio puo'\n"
    	     << "\tsubire prima di morire. Se subisci danni puoi recupe-\n"
                 << "\trare punti vita utilizzando delle pozioni di cura.\n" << endl;
    	// tiro x determinare l'intelligenza
    	premi_un_tasto();
    	eroe.intelligenza = dado(6);
    	cout <<	"\n\tTiro per determinare l'INTELLIGENZA: " << eroe.intelligenza << endl
                 << "\n\tL'intelligenza ti permette di usare alcune delle abilita'\n"
                 << "\tche vedrai tra poco. Piu' il valore e' alto, piu' abili-\n"
                 << "\tta' potrai scegliere.\n" << endl;
    	// riepilogo caratteristiche
    	premi_un_tasto();
    	cout << "\n\t====================================="
    	     << "\n\tRIEPILOGO PERSONAGGIO - - - PARTE 1/2"
                 << "\n\t=====================================\n" << endl;
    	eroe.stampa_caratteristiche();
    	cout << "\n\t=====================================" << endl;
    	premi_un_tasto();
    	// abilità
    	cout << "\n\tSCELTA ABILITA'\n" << endl;
    	int limite = (eroe.intelligenza < 5) ? 9 : 10;
    	for (int i = 0; i < limite; ++i)
    		cout << "\t " << (i+1) << ": " << abilita[i].nome
    		     << " (" << abilita[i].commento << ")" << endl;
    	cout << endl;
    	// scelta abilità
    	int rimaste = eroe.intelligenza;
    	do {
    		cout << "\tPuoi scegliere " 
    		     << ((rimaste == eroe.intelligenza) ? "al massimo " : "ancora ")
    		     << rimaste << " abilita'" << endl;
    		int num;
    		do {
    			cout << "\tInserisci un numero da 1 a " << limite << ": " << flush;
    			cin >> num;
    		} while (!(num > 0 && num <= limite));
    		num--; // l'indice comincia da 0
    		if (!abilita[num].scelta) { // se non gia' selezionata
    			abilita[num].scelta = true;
    			cout << "\tScelta abilita\' \'" << abilita[num].nome << "\'"<< endl;
    			eroe.capacita.push_back(make_pair(abilita[num].nome, 0));
    			rimaste--;
    		}
    	} while (rimaste > 0);
    	// assegna punti ad abilità
    	cls(Console);
    	cout << "\n\tHai scelto le seguenti abilita':" << endl;
    	for (size_t i = 0; i < eroe.capacita.size(); ++i)
    		cout << "\t\t" << eroe.capacita[i].first << endl;
    	cout << "\n\tAdesso devi scegliere quanti punti dare ad ogni abilita' che"
                 << "\n\thai scelto. I punti totali sono dati dalla somma dei valori "
                 << "\n\tdelle tue caratteristiche."
                 << "\n\tAd ogni abilita' puoi dare al minimo un punto e al massimo"
                 << "\n\tcinque. Questi punti servono ad indicare quanto il tuo per-"
                 << "\n\tsonaggio e' capace di usare una certa abilita'."
                 << "\n\tTutte le abilita' che non hai selezionato hanno zero punti."
    	     << endl;
    	premi_un_tasto();
    	int totale = eroe.intelligenza + eroe.forza + eroe.vitalita;
    	for (size_t i = 0; i < eroe.capacita.size(); ++i) {
    			int punti_restanti = (totale > 5) ? 5 : totale;
    
    			cout << "\n\t-> " << eroe.capacita[i].first
    			     << "\n\thai " << totale << " punti da distribuire.\n"
    			     << "\tQuanti ne dai a " << eroe.capacita[i].first << "?" << endl
    			     << "\tInserisci qui un numero da 1 a "
    			     << punti_restanti << ": " << flush;
    			int quanti;
    			do {
    				cin >> quanti;
    			} while (!(quanti > 0 && quanti <= punti_restanti));
    			eroe.capacita[i].second = quanti;
    			totale -= quanti;
    			if (totale == 0)
    				break;
    	}
    	cout << "\n\tCREAZIONE PERSONAGGIO COMPLETATA!!!\n" << endl;
    	premi_un_tasto();
    	// riepilogo finale personaggio
    	cout << "\n\t====================================="
    	     << "\n\tRIEPILOGO PERSONAGGIO - - - PARTE 2/2"
                 << "\n\t=====================================\n" << endl;
    	eroe.stampa_caratteristiche();
    	cout << "\n\t=====================================" << endl;
    }
    
    int main(void)
    {
    	Console = GetStdHandle(STD_OUTPUT_HANDLE);
    	CreaEroe();
    }
    man is your friend

  14. #14
    Utente L'avatar di hottar17
    Registrato il
    10-03
    Località
    Trient
    Messaggi
    55
    va che bellino che è in c++

    usando le classi poi verrebbe spettacolo

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •