Oppure

Loading
18/04/20 22:20
Carlo
Goblin e' piu orientato, io invece non ho cambiato quello che hai postato.
Ho usato le mie limitate conoscenze di C, per creare un labirinto usando i tasti w, a, s, d.
Parte con la S, e con x si può aggiungere la A :rotfl::k:

Cosa non mi piace: il goto, i 4 if invece di switch e il do while, che genera un loop che consuma risorse inutilmente.

#include <iostream>
#include <string>
#include <conio.h>


using namespace std;

int main(int argc, char* argv[])
{
	const int righe = 20;
	const int cols = 20;
	char input_utente = NULL;
	
	char matrice[righe][cols];

	for (int i = 0; i < righe; i++)
	{
		for (size_t j = 0; j < cols; j++)
		{
			matrice[j][i] = '#';	
		}
	}
	matrice[0][1] = 'S';
	matrice[1][1] = ' ';
	int X = 1;
	int Y = 1;

vai:

	system("cls");
	for (int i = 0; i < righe; i++)
	{
		for (size_t j = 0; j < cols; j++)
		{
			cout << matrice[j][i] << " ";
		}
		cout << endl;
	}
	
	do // lettura della tastiera con _getch()
	{
		 input_utente = _getch();
	} while(input_utente == NULL);

	// navigazione, se vai fuori schema
	// non c'è nessun controllo
	if (input_utente == 'a') Y--;
	if (input_utente == 'd') Y++;
	if (input_utente == 'w') X--;
	if (input_utente == 's') X++;
	// con x viene aggiunta una A
	// altrimenti uno spazio
	if (input_utente == 'x')
		matrice[Y][X] = 'A';
	else
		matrice[Y][X] = ' ';
	
	goto vai;

	return 0;
	
}
Ultima modifica effettuata da Carlo 18/04/20 23:58
in programmazione tutto è permesso
18/04/20 23:34
Goblin
Carlo, stiamo parlando 2 linguaggi simili ma profondalmente diversi, di cui le mie conoscenze risalgono ai tempi dell'uni, dunque i dinosauri ancora calpestavano questa terra, direi di aspettare il nostro amico "Scarsoinformatico", per sapere se:
1) ha capito le tue modifiche al sorgente (punto fondamentale)
2) se deve scrivere in C o in C++ (la logica cambia)
3) seguire passo passo la traccia data, anche se, come dice AldoBaldo, è un italiano un po' ....

In fondo, in tutti i casi x me, personalmente, è una bella sfida, fosse Object Pascal avrei qualche idea un po' contorta, ho letto un po' di roba su vari algoritmi di creazione di labirinti e credo che siano pattern ormai affermati ed è inutile cercare di reinventare la ruota (ecco adesso arriva AldoBaldo :om::om::om::D:D:D ) :D
G.
Ultima modifica effettuata da Goblin 18/04/20 23:36
Ibis redibis non morieris in bello
18/04/20 23:41
Carlo
Certo, ma in questo caso non si chiede di creare o risolvere un labirinto in automatico, ogni partecipante crea il labirinto usando la tastiera.
Poi lo percorre sempre usando la tastiera, per cui il programma non deve fare nulla di logico.
Se il professore ha assegnato questo esercizio, significa che ha trattato gli argomenti utili alla risoluzione, e la classe va veramente a due velocita', ma molto diverse.
Il labirinto e' nella matrice basta controllare se nelle coordinate raggiunte c'e' "#" (non si puo' andare), " " (ok), "A" (arrivato)
Ultima modifica effettuata da Carlo 18/04/20 23:46
in programmazione tutto è permesso
19/04/20 6:34
Secondo me resta il fatto che un compito fatto da altri e' diseducativo.

Una cosa e' un piccolo suggerimento, un'altra fare tutto un compito. Con quattro linee buttate li' non si puo' pensare, ripeto, che la verifica la facciano altri.

La storia della classe non e' rilevante, chi viene promosso e bocciato a scuola e' sempre esistito e bisognerebbe imparare, per prima cosa, a prendersi le proprie responsabilita' senza cercare furbe scorciatoie. E comunque questo raccontatelo al professore che state tentando di prendere in giro.

Del resto un professore capisce al volo con qualche domanda che quel compito non l'avete fatto voi.

In altri forum questo tipo di thread sarebbe stato subito chiuso, ma questo ormai non e' piu' moderato.
Ultima modifica effettuata da 19/04/20 7:11
19/04/20 8:31
Carlo
Postato originariamente da nessuno:

Secondo me resta il fatto che un compito fatto da altri e' diseducativo.

Una cosa e' un piccolo suggerimento, un'altra fare tutto un compito. Con quattro linee buttate li' non si puo' pensare, ripeto, che la verifica la facciano altri.


Sono d'accordo, infatti non ho "fatto" il compito, ho dato un input...
Se Scarsoinformatico riuscirà ad eseguire il prossimo passo: percorrere il labirinto creato, significa che ha capito, e se ha capito, ad una domanda del professore risponderà a tono.
Se non ha capito non riuscirà a svolgere la verifica.

Invece ritengo che Scarsoinformatico ha gia' trovato la pappa fatta in un altro Forum, visto che non si è più fatto sentire. :yup:
Ultima modifica effettuata da Carlo 19/04/20 8:33
in programmazione tutto è permesso
19/04/20 9:25
Non mi riferivo in particolare al codice suggerito da alcuni di voi (a lui serve TUTTO il compito svolto), ma al fatto che non è intervenuto nessuno a chiudere il thread evidentemente contro il regolamento.
19/04/20 16:26
Scarsoinformatico
Ringrazio tutti e mi scuso di aver preteso troppo.
aaa
20/04/20 7:48
AldoBaldo
Al di là del discorso compito, non compito, verifica e non verifica... leggo e rileggo la traccia ma non trovo alcuna indicazione sul modo in cui vengono impostati i punti d'inizio e fine del labirinto. A caso? (sarebbe una soluzione, ma non c'è scritto). Chiedendo le coordinate dei due punti tramite console? (anche questa sarebbe una soluzione, ma non c'è scritto). In quale altro modo? Ci fosse un dispositivo di puntamento, tipo mouse, si potrebbe partire da un punto di click, ma il dispositivo di puntamento non è previsto. Per la "chiusura" del labirinto da parte del giocatore che lo imposta sarebbe anche sufficiente definire un tasto di "stop", ma non ne vedo menzione nella traccia.

Altra cosa: quali sono le condizioni di errore? ("quando si sbaglia e bisogna tornare indietro";); si sbaglia quando ci si trova in un vicolo cieco, ovvero non è ammesso tornare sui propri passi? Si sbaglia se si va a "sbattere" contro un muro? In quei casi che succede? Si riporta al punto di partenza il giocatore che deve risolvere, ripristinando il labirinto originale, o altro? Non è specificato.

Proporrò in un secondo momento le altre perplessità che ho nell'interpretare la "traccia di Nostradamus".
Ultima modifica effettuata da AldoBaldo 20/04/20 7:50
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.