Oppure

Loading
03/02/14 16:44
pila ricaricabile
sto scrivendo un prototipo di programma, lo faccio partire e non mi segna nessun errore, si apre la finestra console, scelgo la modalità tiro al Bersaglio gioco la partita e ritorno al mio menu, scelgo nuovamente la modalità 2 e mi va in crash tutto.
Siccome il compilatore (Visual studio 2013 professional ) non mi dà nessun errore ma solo un warning, credo che l'errore sia nel fatto che la variabile segreta sia piena anche se lo dubito in quanto nella modalità multi giocatore non succede nulla di anomalo.
posto di seguito il codice (Attenzione è un prototipo):
#include "stdafx.h"

int main(void) {
	int car1 = 133;
	int comando;
	char segreta[20], l, vispar[40];
	char patch[20][20];
	int i, k, giusto, ncarat, nerr = 0, nind = 0;
	int gamemode, level, e, vittorie = 0, sconfitte = 0;

	printf("Benvenuto in questo gioco:\n"
		"premi invio per continuare...\n");
	getchar();
	do {
		system("CLS");
		printf("              !!MENU!!                \n");
		printf("Modalit%c multigiocatore            <1>\n", car1);
		printf("Modalit%c tiro al bersaglio         <2>\n", car1);
		printf("Gioca la partita con un amico      <1>\n");
		printf("Gioca i livelli                    <1>\n");
		printf("Vai al negozio                     <3>\n");
		printf("");
		scanf("%d", &comando);
		getchar();
		switch (comando)
		{
		case 1:
			system("CLS");
			printf("Giocatore 1!!!\n");
			printf("Inserisci la parola segreta (e conferma premendo invio):\n");
			gets(segreta);
			ncarat = strlen(segreta);
			for (i = 0; i <= ncarat; i++) {
				if (i < ncarat) {
					vispar[i] = '-';
				}
				else {
					vispar[i] = 'sto scrivendo un prototipo di programma, lo faccio partire e non mi segna nessun errore, si apre la finestra console, scelgo la modalità tiro al Bersaglio gioco la partita e ritorno al mio menu, scelgo nuovamente la modalità 2  e mi va in crash tutto.

Siccome il compilatore (Visual studio 2013 professional ) non mi dà nessun errore ma solo un warning, credo che l'errore sia nel fatto che la variabile segreta sia piena anche se lo dubito in quanto nella modalità multi giocatore non succede nulla di anomalo.
posto di seguito il codice (Attenzione è un prototipo):
#include "stdafx.h"

int main(void) {
	int car1 = 133;
	int comando;
	char segreta[20], l, vispar[40];
	char patch[20][20];
	int i, k, giusto, ncarat, nerr = 0, nind = 0;
	int gamemode, level, e, vittorie = 0, sconfitte = 0;

	printf("Benvenuto in questo gioco:\n"
		"premi invio per continuare...\n");
	getchar();
	do {
		system("CLS");
		printf("              !!MENU!!                \n");
		printf("Modalit%c multigiocatore            <1>\n", car1);
		printf("Modalit%c tiro al bersaglio         <2>\n", car1);
		printf("Gioca la partita con un amico      <1>\n");
		printf("Gioca i livelli                    <1>\n");
		printf("Vai al negozio                     <3>\n");
		printf("");
		scanf("%d", &comando);
		getchar();
		switch (comando)
		{
		case 1:
			system("CLS");
			printf("Giocatore 1!!!\n");
			printf("Inserisci la parola segreta (e conferma premendo invio):\n");
			gets(segreta);
			ncarat = strlen(segreta);
			for (i = 0; i <= ncarat; i++) {
				if (i < ncarat) {
					vispar[i] = '-';
				}
				else {
					vispar[i] = '{parsed_message}';
				}
			}
			system("CLS");
			for (k = 0; nerr != 10 && nind < ncarat; k++) {
				printf("Digita la lettera: ");
				scanf("%c", &l);
				giusto = 0;
				for (i = 0; segreta[i] != '{parsed_message}'; i++) {
					if (segreta[i] == l) {
						vispar[i] = l;
						giusto = 1;
						nind++;
					}
				}
				printf("%s\n", vispar);
				if (giusto == 0) {
					nerr++;
				}
				printf("numero errori %d\n", nerr);
				getchar();
			}
			if (nerr == 10) {
				system("CLS");
				printf("Hai perso!!!!");
				printf("\n\nla parola era: %s", segreta);
				sconfitte = 1;
			}
			if (nind == ncarat) {
				system("CLS");
				printf("\nHai vinto!!!!");
			}
			getchar();
			break;
		case 2:
			printf("estrazione della parola in corso.....");
			char parole[200][20];
			strcpy(parole[0], "carabinieri");
			strcpy(parole[1], "polizia");
			strcpy(parole[2], "vigiledelfuoco");
			//continuare;
			srand(time(NULL));
			e = rand() % 3;
			strcpy(segreta, parole[e]);
			ncarat = strlen(segreta);
			for (i = 0; i <= ncarat; i++) {
				if (i < ncarat) {
					vispar[i] = '-';
				}
				else {
					vispar[i] = '{parsed_message}';
				}
			}
			system("CLS");
			for (k = 0; nerr != 10 && nind < ncarat; k++) {
				printf("Digita la lettera: ");
				scanf("%c", &l);
				giusto = 0;
				for (i = 0; segreta[i] != '{parsed_message}'; i++) {
					if (segreta[i] == l) {
						vispar[i] = l;
						giusto = 1;
						nind++;
					}
				}
				printf("%s\n", vispar);
				if (giusto == 0) {
					nerr++;
				}
				printf("numero errori %d\n", nerr);
				getchar();
			}
			if (nerr == 10) {
				system("CLS");
				printf("Hai perso!!!!");
				printf("\n\nla parola era: %s", segreta);
				sconfitte = 1;
			}
			if (nind == ncarat) {
				system("CLS");
				printf("\nHai vinto!!!!");
			}
			getchar();
			getchar();
			break;
		default:
			break;
		}
	} while (comando != 0);
	getchar();
	return 0;
}

Il warning scrive questo:
l'impiccato.cpp(83): warning C4244: 'argomento': conversione da 'time_t' a 'unsigned int'. Possibile perdita di dati.
chiedo gentilmente il vostro aiuto al fine di capire dove ho sbagliato.
codice sorgente scaricabile.'; } } system("CLS"); for (k = 0; nerr != 10 && nind < ncarat; k++) { printf("Digita la lettera: "); scanf("%c", &l); giusto = 0; for (i = 0; segreta[i] != 'sto scrivendo un prototipo di programma, lo faccio partire e non mi segna nessun errore, si apre la finestra console, scelgo la modalità tiro al Bersaglio gioco la partita e ritorno al mio menu, scelgo nuovamente la modalità 2 e mi va in crash tutto.
Siccome il compilatore (Visual studio 2013 professional ) non mi dà nessun errore ma solo un warning, credo che l'errore sia nel fatto che la variabile segreta sia piena anche se lo dubito in quanto nella modalità multi giocatore non succede nulla di anomalo.
posto di seguito il codice (Attenzione è un prototipo):
#include "stdafx.h"

int main(void) {
	int car1 = 133;
	int comando;
	char segreta[20], l, vispar[40];
	char patch[20][20];
	int i, k, giusto, ncarat, nerr = 0, nind = 0;
	int gamemode, level, e, vittorie = 0, sconfitte = 0;

	printf("Benvenuto in questo gioco:\n"
		"premi invio per continuare...\n");
	getchar();
	do {
		system("CLS");
		printf("              !!MENU!!                \n");
		printf("Modalit%c multigiocatore            <1>\n", car1);
		printf("Modalit%c tiro al bersaglio         <2>\n", car1);
		printf("Gioca la partita con un amico      <1>\n");
		printf("Gioca i livelli                    <1>\n");
		printf("Vai al negozio                     <3>\n");
		printf("");
		scanf("%d", &comando);
		getchar();
		switch (comando)
		{
		case 1:
			system("CLS");
			printf("Giocatore 1!!!\n");
			printf("Inserisci la parola segreta (e conferma premendo invio):\n");
			gets(segreta);
			ncarat = strlen(segreta);
			for (i = 0; i <= ncarat; i++) {
				if (i < ncarat) {
					vispar[i] = '-';
				}
				else {
					vispar[i] = '{parsed_message}';
				}
			}
			system("CLS");
			for (k = 0; nerr != 10 && nind < ncarat; k++) {
				printf("Digita la lettera: ");
				scanf("%c", &l);
				giusto = 0;
				for (i = 0; segreta[i] != '{parsed_message}'; i++) {
					if (segreta[i] == l) {
						vispar[i] = l;
						giusto = 1;
						nind++;
					}
				}
				printf("%s\n", vispar);
				if (giusto == 0) {
					nerr++;
				}
				printf("numero errori %d\n", nerr);
				getchar();
			}
			if (nerr == 10) {
				system("CLS");
				printf("Hai perso!!!!");
				printf("\n\nla parola era: %s", segreta);
				sconfitte = 1;
			}
			if (nind == ncarat) {
				system("CLS");
				printf("\nHai vinto!!!!");
			}
			getchar();
			break;
		case 2:
			printf("estrazione della parola in corso.....");
			char parole[200][20];
			strcpy(parole[0], "carabinieri");
			strcpy(parole[1], "polizia");
			strcpy(parole[2], "vigiledelfuoco");
			//continuare;
			srand(time(NULL));
			e = rand() % 3;
			strcpy(segreta, parole[e]);
			ncarat = strlen(segreta);
			for (i = 0; i <= ncarat; i++) {
				if (i < ncarat) {
					vispar[i] = '-';
				}
				else {
					vispar[i] = '{parsed_message}';
				}
			}
			system("CLS");
			for (k = 0; nerr != 10 && nind < ncarat; k++) {
				printf("Digita la lettera: ");
				scanf("%c", &l);
				giusto = 0;
				for (i = 0; segreta[i] != '{parsed_message}'; i++) {
					if (segreta[i] == l) {
						vispar[i] = l;
						giusto = 1;
						nind++;
					}
				}
				printf("%s\n", vispar);
				if (giusto == 0) {
					nerr++;
				}
				printf("numero errori %d\n", nerr);
				getchar();
			}
			if (nerr == 10) {
				system("CLS");
				printf("Hai perso!!!!");
				printf("\n\nla parola era: %s", segreta);
				sconfitte = 1;
			}
			if (nind == ncarat) {
				system("CLS");
				printf("\nHai vinto!!!!");
			}
			getchar();
			getchar();
			break;
		default:
			break;
		}
	} while (comando != 0);
	getchar();
	return 0;
}

Il warning scrive questo:
l'impiccato.cpp(83): warning C4244: 'argomento': conversione da 'time_t' a 'unsigned int'. Possibile perdita di dati.
chiedo gentilmente il vostro aiuto al fine di capire dove ho sbagliato.
codice sorgente scaricabile.'; i++) { if (segreta[i] == l) { vispar[i] = l; giusto = 1; nind++; } } printf("%s\n", vispar); if (giusto == 0) { nerr++; } printf("numero errori %d\n", nerr); getchar(); } if (nerr == 10) { system("CLS"); printf("Hai perso!!!!"); printf("\n\nla parola era: %s", segreta); sconfitte = 1; } if (nind == ncarat) { system("CLS"); printf("\nHai vinto!!!!"); } getchar(); break; case 2: printf("estrazione della parola in corso....."); char parole[200][20]; strcpy(parole[0], "carabinieri"); strcpy(parole[1], "polizia"); strcpy(parole[2], "vigiledelfuoco"); //continuare; srand(time(NULL)); e = rand() % 3; strcpy(segreta, parole[e]); ncarat = strlen(segreta); for (i = 0; i <= ncarat; i++) { if (i < ncarat) { vispar[i] = '-'; } else { vispar[i] = 'sto scrivendo un prototipo di programma, lo faccio partire e non mi segna nessun errore, si apre la finestra console, scelgo la modalità tiro al Bersaglio gioco la partita e ritorno al mio menu, scelgo nuovamente la modalità 2 e mi va in crash tutto.
Siccome il compilatore (Visual studio 2013 professional ) non mi dà nessun errore ma solo un warning, credo che l'errore sia nel fatto che la variabile segreta sia piena anche se lo dubito in quanto nella modalità multi giocatore non succede nulla di anomalo.
posto di seguito il codice (Attenzione è un prototipo):
#include "stdafx.h"

int main(void) {
	int car1 = 133;
	int comando;
	char segreta[20], l, vispar[40];
	char patch[20][20];
	int i, k, giusto, ncarat, nerr = 0, nind = 0;
	int gamemode, level, e, vittorie = 0, sconfitte = 0;

	printf("Benvenuto in questo gioco:\n"
		"premi invio per continuare...\n");
	getchar();
	do {
		system("CLS");
		printf("              !!MENU!!                \n");
		printf("Modalit%c multigiocatore            <1>\n", car1);
		printf("Modalit%c tiro al bersaglio         <2>\n", car1);
		printf("Gioca la partita con un amico      <1>\n");
		printf("Gioca i livelli                    <1>\n");
		printf("Vai al negozio                     <3>\n");
		printf("");
		scanf("%d", &comando);
		getchar();
		switch (comando)
		{
		case 1:
			system("CLS");
			printf("Giocatore 1!!!\n");
			printf("Inserisci la parola segreta (e conferma premendo invio):\n");
			gets(segreta);
			ncarat = strlen(segreta);
			for (i = 0; i <= ncarat; i++) {
				if (i < ncarat) {
					vispar[i] = '-';
				}
				else {
					vispar[i] = '{parsed_message}';
				}
			}
			system("CLS");
			for (k = 0; nerr != 10 && nind < ncarat; k++) {
				printf("Digita la lettera: ");
				scanf("%c", &l);
				giusto = 0;
				for (i = 0; segreta[i] != '{parsed_message}'; i++) {
					if (segreta[i] == l) {
						vispar[i] = l;
						giusto = 1;
						nind++;
					}
				}
				printf("%s\n", vispar);
				if (giusto == 0) {
					nerr++;
				}
				printf("numero errori %d\n", nerr);
				getchar();
			}
			if (nerr == 10) {
				system("CLS");
				printf("Hai perso!!!!");
				printf("\n\nla parola era: %s", segreta);
				sconfitte = 1;
			}
			if (nind == ncarat) {
				system("CLS");
				printf("\nHai vinto!!!!");
			}
			getchar();
			break;
		case 2:
			printf("estrazione della parola in corso.....");
			char parole[200][20];
			strcpy(parole[0], "carabinieri");
			strcpy(parole[1], "polizia");
			strcpy(parole[2], "vigiledelfuoco");
			//continuare;
			srand(time(NULL));
			e = rand() % 3;
			strcpy(segreta, parole[e]);
			ncarat = strlen(segreta);
			for (i = 0; i <= ncarat; i++) {
				if (i < ncarat) {
					vispar[i] = '-';
				}
				else {
					vispar[i] = '{parsed_message}';
				}
			}
			system("CLS");
			for (k = 0; nerr != 10 && nind < ncarat; k++) {
				printf("Digita la lettera: ");
				scanf("%c", &l);
				giusto = 0;
				for (i = 0; segreta[i] != '{parsed_message}'; i++) {
					if (segreta[i] == l) {
						vispar[i] = l;
						giusto = 1;
						nind++;
					}
				}
				printf("%s\n", vispar);
				if (giusto == 0) {
					nerr++;
				}
				printf("numero errori %d\n", nerr);
				getchar();
			}
			if (nerr == 10) {
				system("CLS");
				printf("Hai perso!!!!");
				printf("\n\nla parola era: %s", segreta);
				sconfitte = 1;
			}
			if (nind == ncarat) {
				system("CLS");
				printf("\nHai vinto!!!!");
			}
			getchar();
			getchar();
			break;
		default:
			break;
		}
	} while (comando != 0);
	getchar();
	return 0;
}

Il warning scrive questo:
l'impiccato.cpp(83): warning C4244: 'argomento': conversione da 'time_t' a 'unsigned int'. Possibile perdita di dati.
chiedo gentilmente il vostro aiuto al fine di capire dove ho sbagliato.
codice sorgente scaricabile.'; } } system("CLS"); for (k = 0; nerr != 10 && nind < ncarat; k++) { printf("Digita la lettera: "); scanf("%c", &l); giusto = 0; for (i = 0; segreta[i] != 'sto scrivendo un prototipo di programma, lo faccio partire e non mi segna nessun errore, si apre la finestra console, scelgo la modalità tiro al Bersaglio gioco la partita e ritorno al mio menu, scelgo nuovamente la modalità 2 e mi va in crash tutto.
Siccome il compilatore (Visual studio 2013 professional ) non mi dà nessun errore ma solo un warning, credo che l'errore sia nel fatto che la variabile segreta sia piena anche se lo dubito in quanto nella modalità multi giocatore non succede nulla di anomalo.
posto di seguito il codice (Attenzione è un prototipo):
#include "stdafx.h"

int main(void) {
	int car1 = 133;
	int comando;
	char segreta[20], l, vispar[40];
	char patch[20][20];
	int i, k, giusto, ncarat, nerr = 0, nind = 0;
	int gamemode, level, e, vittorie = 0, sconfitte = 0;

	printf("Benvenuto in questo gioco:\n"
		"premi invio per continuare...\n");
	getchar();
	do {
		system("CLS");
		printf("              !!MENU!!                \n");
		printf("Modalit%c multigiocatore            <1>\n", car1);
		printf("Modalit%c tiro al bersaglio         <2>\n", car1);
		printf("Gioca la partita con un amico      <1>\n");
		printf("Gioca i livelli                    <1>\n");
		printf("Vai al negozio                     <3>\n");
		printf("");
		scanf("%d", &comando);
		getchar();
		switch (comando)
		{
		case 1:
			system("CLS");
			printf("Giocatore 1!!!\n");
			printf("Inserisci la parola segreta (e conferma premendo invio):\n");
			gets(segreta);
			ncarat = strlen(segreta);
			for (i = 0; i <= ncarat; i++) {
				if (i < ncarat) {
					vispar[i] = '-';
				}
				else {
					vispar[i] = '{parsed_message}';
				}
			}
			system("CLS");
			for (k = 0; nerr != 10 && nind < ncarat; k++) {
				printf("Digita la lettera: ");
				scanf("%c", &l);
				giusto = 0;
				for (i = 0; segreta[i] != '{parsed_message}'; i++) {
					if (segreta[i] == l) {
						vispar[i] = l;
						giusto = 1;
						nind++;
					}
				}
				printf("%s\n", vispar);
				if (giusto == 0) {
					nerr++;
				}
				printf("numero errori %d\n", nerr);
				getchar();
			}
			if (nerr == 10) {
				system("CLS");
				printf("Hai perso!!!!");
				printf("\n\nla parola era: %s", segreta);
				sconfitte = 1;
			}
			if (nind == ncarat) {
				system("CLS");
				printf("\nHai vinto!!!!");
			}
			getchar();
			break;
		case 2:
			printf("estrazione della parola in corso.....");
			char parole[200][20];
			strcpy(parole[0], "carabinieri");
			strcpy(parole[1], "polizia");
			strcpy(parole[2], "vigiledelfuoco");
			//continuare;
			srand(time(NULL));
			e = rand() % 3;
			strcpy(segreta, parole[e]);
			ncarat = strlen(segreta);
			for (i = 0; i <= ncarat; i++) {
				if (i < ncarat) {
					vispar[i] = '-';
				}
				else {
					vispar[i] = '{parsed_message}';
				}
			}
			system("CLS");
			for (k = 0; nerr != 10 && nind < ncarat; k++) {
				printf("Digita la lettera: ");
				scanf("%c", &l);
				giusto = 0;
				for (i = 0; segreta[i] != '{parsed_message}'; i++) {
					if (segreta[i] == l) {
						vispar[i] = l;
						giusto = 1;
						nind++;
					}
				}
				printf("%s\n", vispar);
				if (giusto == 0) {
					nerr++;
				}
				printf("numero errori %d\n", nerr);
				getchar();
			}
			if (nerr == 10) {
				system("CLS");
				printf("Hai perso!!!!");
				printf("\n\nla parola era: %s", segreta);
				sconfitte = 1;
			}
			if (nind == ncarat) {
				system("CLS");
				printf("\nHai vinto!!!!");
			}
			getchar();
			getchar();
			break;
		default:
			break;
		}
	} while (comando != 0);
	getchar();
	return 0;
}

Il warning scrive questo:
l'impiccato.cpp(83): warning C4244: 'argomento': conversione da 'time_t' a 'unsigned int'. Possibile perdita di dati.
chiedo gentilmente il vostro aiuto al fine di capire dove ho sbagliato.
codice sorgente scaricabile.'; i++) { if (segreta[i] == l) { vispar[i] = l; giusto = 1; nind++; } } printf("%s\n", vispar); if (giusto == 0) { nerr++; } printf("numero errori %d\n", nerr); getchar(); } if (nerr == 10) { system("CLS"); printf("Hai perso!!!!"); printf("\n\nla parola era: %s", segreta); sconfitte = 1; } if (nind == ncarat) { system("CLS"); printf("\nHai vinto!!!!"); } getchar(); getchar(); break; default: break; } } while (comando != 0); getchar(); return 0; }

Il warning scrive questo:
l'impiccato.cpp(83): warning C4244: 'argomento': conversione da 'time_t' a 'unsigned int'. Possibile perdita di dati.
chiedo gentilmente il vostro aiuto al fine di capire dove ho sbagliato.
codice sorgente scaricabile.
aaa
03/02/14 18:01
nessuno
Quel warning non è importante ... puoi ignorarlo e il programma funziona comunque.

Se vuoi, puoi anche correggere con

srand((unsigned int)(time(NULL)));
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
03/02/14 19:29
TheDarkJuster
Quel codice fa schifo, perchè c' è un metodo solo che fa 342656234512512354123412 cose? Cosa vuoi che possa capire una persona che non lo ha scritto? Senza nemmeno 1 commento? Posso vedere che è semplice, ma una cosa così mi disgusta al pensiero di leggerla...... Sul serio se provi a mettere ordine (spezzetti un altri metodi) è anche possobile che trovi da solo l' errore. Comunque ad occhio direi che il problema potrebbe essere un mancato nerr = 0 o di qualche altra variabile..... prova a controllare bene......
Ultima modifica effettuata da TheDarkJuster 03/02/14 19:33
aaa
03/02/14 20:36
nessuno
Non ha detto che c'è un errore ma solo quel warning, evidentemente nella srand
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
03/02/14 20:38
TheDarkJuster
"si apre la finestra console, scelgo la modalità tiro al Bersaglio gioco la partita e ritorno al mio menu, scelgo nuovamente la modalità 2 e mi va in crash tutto. " evidentemente c' è una variabile che deve essere riportata a 0, l' unico motivo valido per cui il programma dovrebbe crashare è questo.....
aaa
04/02/14 8:49
pila ricaricabile
esattamente quello che avevo immaginato ma applicato alla variabile segreta, invece è proprio nerr, nind, che sono da inizializzare.
grazie mille fra una o due settimane metterò il gioco sul mio sito.
ho comunque inserito altri commenti (:k:per il suggerimnto)
aaa
04/02/14 20:08
TheDarkJuster
Ottimo, ma ti prego, da ora in avanti cura l' aspetto del codice e la sua "suddivisione" perchè devi capire che chi non lo ha scritto potrebbe avere difficoltà enormi a capire, soprattutto con sorgenti un po' più complessi.
aaa