Come creare un turtle graphic

di il
1 risposte

Come creare un turtle graphic

Salve sto studiando programmazione in c da un libro e ho studiato fino ad adesso tutti i comandi di selezione iterazione ed i vettori; ora come esercizio mi ha dato questo compito:
immaginate una tartaruga meccanica,che girovaga in una stanza sotto il controllo di un programma C.La tartaruga ha una penna in una delle due posizioni ,alzata o abbassata.La tartaruga traccia linee man man che si muove con la penna abbasata;utilizzate una matrice 50x50 e azzeratela.leggete i comandi da un vettore che li contenga.in ogni momento ,mantenere traccia della posizione corrente della tartaruga e dello stato(alzata o abbassata)della penna.supponete sempre che la tartaruga cominci dalla posizione 0,0 e con la penna alzata,l'insieme dei comandi per la tartaruga sono:
1 alza la penna;
2 abbassa la penna;
3 gira a destra;
4 gira a sinistra;
5,10 vai in avanti di 10 spazi(o un numero diverso da 10)
6 visualizza la matrice 50x50
9 fine dei data(valore sentinella)

la domanda è come faccio a simulare la tartaruga sopra il piano 50X50?
e anche qualche consiglio che non so proprio come cominciare

1 Risposte

  • Re: Come creare un turtle graphic

    In rete ho trovato questo
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 10//qui dipende da quanto vuoi la matrice... la mia è 10x10 se cambi max cambi 
                          //la              dimensione
    void stampa_mat(int [][MAX]);
    
    int main(){
    	int Mat[MAX][MAX],mov,n=0;
    	static int i,j;
    
    	//carico con tutti numero "1"
    	for(i=0;i<=MAX-1;i++){
    		for(j=0;j<=MAX-1;j++){
    			Mat[i][j]=1;
    		}
    	}
    	printf("Turtle Game!\n");
    
    	//do in input il movimento della tartaruga:
    	i=j=n;
    	while(mov!=EOF){
    		printf("\n 1.Avanti \n 2. sali \n 3. scendi \n 4.avanti di 10 posizioni scrivendo\n 5.indietro\n \n -1 termina \n>>");
    		scanf("%d",&mov);
    				switch(mov){
    					case 1:
    						j++;
    						Mat[i][j]=0;
    						printf("\n%d %d\n",i,j);
    					break;
    					case 2:
    						i--;
    						Mat[i][j]=2;
    					break;
    					case 3:
    						i++;
    						Mat[i][j]=2;
    					break;
    					case 4:
    						n=j;
    						for(j=n;j<=(n+10);j++){
    							Mat[i][j]=0;
    						}
    					break;
    					case 5:
    						j--;
    						Mat[i][j]=0;
    					break;
    						
    				}
    			stampa_mat(Mat);
    		}
    	return 0;
    }
    
    void stampa_mat(int Mat[][MAX]){
    	int i,j;
    	for(i=0;i<=MAX-1;i++){
    		for(j=0;j<=MAX-1;j++){
    			if(Mat[i][j]==0){
    				printf(" _ ");
    			}else if(Mat[i][j]==2){
    				printf(" | ");
    			}
    			else{
    				printf(" * ");
    				}
    	}
    	printf("\n");
      }
      printf("\n");
      
    }
    sapete dirmi come faccio a sostituire lo switch con un array dei comandi??
Devi accedere o registrarti per scrivere nel forum
1 risposte