programma gioco

toni1705

Nuovo Utente
98
9
Sto eseguendo un programma personale che utilizzerò per calcolare il totale dei diamanti acquisiti in una settimana
ora all'interno di questo gioco esiste un torneo
per ogni tot di vincita si sale di livello e si riceve una ricompensa diversa a seconda del titolo raggiunto
Esempio
mi sfidio con tizio e raggiungo il titolo di duke
ora posso riscuotere una ricompensa che è di 60 diamanti;
all'interno del programma vorrei che mi richiedesse il titolo acquisito
se scrivo nessuno ricevo 0 diamanti
e se scrivo guard deve aggiungere 15 al totale.
il fatto è che se scrivo guard il programma sballa.... e non fa il calcolo correttamente... come posso associare al fatto che se scrivo guardia venga aggiunto 15 al totale ??
C#:
#Include <stdio.h>
#include <string.h>
#define torneo 80
#define nemico 50
#define lunedi 300

int main()
{char nessuno,guard,knight,baron,viscount,count,marquis,duke,archduke,prince;
printf("quanto vale guard?\n%d\n",guard);
    printf("BENVENUTI NELLA CALCOLATRICE\n");
     char rango[15];
    int totale,nem,i,rmisterio,arena,diamanti,a,dailylog;
    /*  QUANTI DIAMANTI HAI?*/

    printf("\nquanti diamanti hai? ");
    scanf("%d",&diamanti);
    /* QUANTA VOLTE TI SFIDI CON EROE MISTERIOSO*/
    rmisterio=0;
    printf("\nquante volte combatterai contro il nemico?");
    scanf("%d",&nem);
    for (i=0;i<nem;i++)
        rmisterio=nemico*nem;
        printf("diamanti contro il nemico:%d\n",rmisterio);
        /* RICOMPENSA LUNEDI <3*/
        printf("\nhai ricevuto altri %d diamanti per il lunedi\n",lunedi);
        /* DAL LOGIN DEL GIORNO QUANTI NE HAI RICEVUTI?*/
        printf("\nquanti diamanti hai ricevuto dal login giornaliero? ");
         scanf("%d",&dailylog);
    if (dailylog>0 && dailylog<120)
        printf("hai ricevuto %d diamanti",dailylog);
    else
        printf("il massimo \x8A 120 in un mese");
        /* QUANTI SOLDI TI DA ARENA*/
     arena=80*7;
     printf("\n");
        printf("\ni dias settimanali per l'arena:%d\n",arena);
        /* SOLDI COMPRATI*/
        a=120*7;
        printf("\ni dias comprati sono:%d\n\n",a);
        /* IL TORNEOOOO KITEBBIV*/
            printf("\nche rango hai raggiungo nel torneo bs? ");
            scanf("%s",&rango);
              /* TOTALE*/
        totale=lunedi+dailylog+rmisterio+arena+a+diamanti+rango;
        system("cls");
        printf("\IL TOTALE\n\%d diamanti ",totale);
        printf("il rango vale:%s",rango);
}
 

Andretti60

Utente Èlite
6,440
5,091
Beh, per cominciare utilizzi delle variabili che non hai dichiarato e non ha inizializzato. Mentre dichiari variabili che non utilizzi.
Dichiari una variabile come un vettore di char, ma poi usi il suo indirizzo per leggerla da tastiera, poi la aggiungi a una serie di variabili di tipo intero. Sono stupito che riesci a compilare quel codice.
 

toni1705

Nuovo Utente
98
9
risolto :)
C:
#include <stdio.h>
#include <string.h>
#define torneo 80
#define nemico 50
#define lunedi 300


int main()
{
char nessuno,guard,knight,baron,viscount,count,marquis,duke,archduke,prince;
    printf("BENVENUTI NELLA CALCOLATRICE\n");
     char rango[15];
    int totale,nem,i,rmisterio,arena,diamanti,a,dailylog;

    /*  QUANTI DIAMANTI HAI?*/
    printf("\nquanti diamanti hai? ");
    scanf("%d",&diamanti);

    /* QUANTA VOLTE TI SFIDI CON EROE MISTERIOSO*/
    rmisterio=0;
    printf("\nquante volte combatterai contro il nemico?");
    scanf("%d",&nem);
    for (i=0;i<nem;i++)
        rmisterio=nemico*nem;
        printf("diamanti contro il nemico:%d\n",rmisterio);



        /* DAL LOGIN DEL GIORNO QUANTI NE HAI RICEVUTI?*/
        printf("\nquanti diamanti hai ricevuto dal login giornaliero? ");
         scanf("%d",&dailylog);
    if (dailylog>=0 && dailylog<120)
        printf("hai ricevuto %d diamanti",dailylog);
    else
        printf("il massimo \x8A 120 in un mese");

        /* QUANTI SOLDI TI DA ARENA*/
     arena=80*7;
     printf("\n");
        printf("\ni dias settimanali per l'arena:%d\n",arena);

           /* RICOMPENSA LUNEDI <3*/
        printf("\nhai ricevuto altri %d diamanti per il lunedi\n",lunedi);

        /* SOLDI COMPRATI*/
        a=120*7;
        printf("\ni dias comprati sono:%d\n\n",a);
        system("cls");
        /* IL TORNEOOOO KITEBBIV*/
printf("1)guard\n2)knight\n3)baron\n4)viscount");
printf("\n5)count\n6)marquis\n7)duke\n8)arcduke\n9)prince");
printf("\nnessuno se non vi \x8A alcun torneo\n");

            printf("\nche rango hai raggiungo nel torneo bs?\n");
            scanf("%s",&rango);
              /* TOTALE*/
        totale=lunedi+dailylog+rmisterio+arena+a+diamanti;
         if (strcmp(rango,"nessuno")==0)
            totale+=0;
         if (strcmp(rango,"guard")==0)
                totale=totale + 15;
            if (strcmp(rango,"knight")==0)
                totale=totale +25;
               if (strcmp(rango,"baron")==0)
                totale=totale +25;
                if (strcmp(rango,"viscount")==0)
                    totale+=40;
                  if (strcmp(rango,"count")==0)
                    totale+=50;
                     if (strcmp(rango,"marquis")==0)
                     totale+=50;
                   if (strcmp(rango,"duke")==0)
                    totale+=60;
                    if (strcmp(rango,"archduke")==0)
                        totale+=75;
                         if (strcmp(rango,"prince")==0)
                         totale+=90;
        system("cls");
        printf("\IL TOTALE\n\%d diamanti ",totale);

}
 

Andretti60

Utente Èlite
6,440
5,091
perche' forzi l'utente a scrivere il rango (con la possibilita' che commettano errori) quando mostri una lista con numeri? Io avrei infatti digitato il numero corrispondente, '2' invece che scrivere 'knight', per esempio). Perche' poi aggiungi lo stesso numero per ranghi diversi?

Ma a parte quello, la tua catena di "if" forza il programma a fare il confronto con tutti i ranghi, devi usare il construtto
C:
if ()
{
}
else if()
{
}
Mentre se invece fai digitare il numero corrispondente te la cavi con un piu' efficiente switch()
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!