[C] Problema gioco della macchina

di il
8 risposte

[C] Problema gioco della macchina

Salve ragazzi, sono da poco entrato nell'ambito informatico e nonostante io mi sia messo d'impegno nello studio sto trovando difficoltà nel creare questo programma che servirà da consegna per il mio esame scritto che si terrà il 15 febbraio!
Il programma in questione è :


Sono riuscito bene o male ad avere un quadro generale su come muovermi!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

/* Definisco i valori costanti */
#define MAX_PASSI 100
#define righe 8
#define colonne 7

void inserisce_ostacolo(char campo_da_gioco[8][7])
{
	int vcol = 1 + rand() % (colonne-2);

	campo_da_gioco[1][vcol] = 'X';
}

int main ()
{
	srand(time(NULL));

    int i,j;

	char campo_da_gioco [8][7]= {{'*','*','*','*','*','*','*'},
                              {'*', '\0', '\0', '\0', '\0', '\0','*'},
                              {'*', '\0', '\0', '\0', '\0', '\0','*'},
                              {'*', '\0', '\0', '\0', '\0', '\0','*'},
                              {'*', '\0', '\0', '\0', '\0', '\0','*'},
                              {'*', '\0', '\0', '\0', '\0', '\0','*'},
                              {'*', '\0', '\0', 'C',  '\0', '\0','*'},
                              {'*','*','*','*','*','*','*'}};

    inserisce_ostacolo(campo_da_gioco);

	for (i=0;i<righe;i++)
	{
		printf ("\n");

		for (j=0;j<colonne;j++)
		{
			printf ("%3c",campo_da_gioco[i][j]);
		}
	}


	return 0;
}
Arrivato a questo punto però dovrei fare in modo che la macchina si muovi a destra e a sinistra e a fare in modo che la riga 1 (con l'oggetto X spawnato in modo random) scenda nella 2 riga e che la riga 1 venga cancellata e venga aggiornata nuovamente con un altro oggetto X spawnato in modo random!
Spero di essere stato abbastanza chiaro e vi ringrazio in anticipo per l'aiuto!

8 Risposte

  • Re: [C] Problema gioco della macchina

    Non so se su C si può fare, ma in C++ ho usato system("cls") per resettare la console. Fai una funzione che stampa un array 2D e la metti in un ciclo, alla fine del ciclo metti system("cls") e aggiorni l'array cancellando il valore della riga 1 e portandolo alla 2 e così via a ogni ripetizione del ciclo
  • Re: [C] Problema gioco della macchina

    Innanzitutto grazie per la risposta!
    Potresti copiarmi il codice se è possibile? Ho capito il concetto ma mi è meno chiara l'esecuzione.
  • Re: [C] Problema gioco della macchina

    Prova tu a scrivere il codice ... altrimenti non riesci a capire nulla per l'esame ...

    Dopo si corregge ...
  • Re: [C] Problema gioco della macchina

    Fai queste funzioni
    Qui dichiari l'array, se lo fai globale non devi metterlo come argomento nella funzione
    void aggiorna_array();
    All'interno ci metti dei cicli che scorrono l'array e se trovano un numero, o quello che vuoi, che rappresenti una di quelle cose da far cadere, lo resettano e lo spostano alla riga di sotto
    
    #define righe x
    #define colonne y
    int griglia[righe][colonne] //riempilo di zeri
    //fai finta che l'array è pieno di zeri, e le cose da far cadere sono rappresentate da un 1
    void aggiorna_array()
    {
      int oggetto=1;
      for(int i=0;i<righe;i++)
        for(int j=0;j<colonne;j++) //scorre tutto l'array
          if(griglia[i][j]==oggetto) //se è un oggetto da spostare
          {
            griglia[i][j]=0; //lo svuota
            griglia[i+righe][j]=oggetto;
            //lo sposta alla riga di sotto
          }
    }
    
    Credo che dovrebbe fare così per aggiornare l'array. Poi questa funzione la metti in un ciclo, e all'interno devi metterci pure la funzione che randomizza la colonna dell'oggetto nuovo da "spawnare" e il system("cls"). Poi ovviamenta la funzione per muovere la macchina e la cosa che la sposta automaticamente (che sinceramente non ho capito)
  • Re: [C] Problema gioco della macchina

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    /* Definisco i valori costanti */
    #define MAX_PASSI 100
    #define righe 8
    #define colonne 7
    
    /*Funzione per lo spawn random degli ostacoli */
    void inserisce_ostacolo(char campo_da_gioco[8][7],int vcol)
    {
        vcol = 1 + rand() % (colonne-2);
    
    	campo_da_gioco[1][vcol] = 'X';
    }
    
    /*Funzione per lo scorrimento degli ostacoli*/
    void scorrimento_ostacolo (char campo_da_gioco[8][7],char riga1[8][7],int vcol,int i, int j)
    {
        riga1[8][7]= campo_da_gioco[1][vcol];
        riga1[8][7]= campo_da_gioco[2][vcol];
        do{
    	for (i=0;i<righe;i++)
    	{
    		printf ("\n");
    
    		for (j=0;j<colonne;j++)
    		{
    			printf ("%3c",campo_da_gioco[2][vcol]);}
    	}
        while (riga1[8][7]=campo_da_gioco[2][vcol]);
        system("cls");}
    }
    
    
    int main ()
    {
    	srand(time(NULL));
    
        char riga1[8][7];
        int vcol;
    
        int i,j;
    
    	char campo_da_gioco [8][7]= {{'*','*','*','*','*','*','*'},
                                  {'*', '\0', '\0', '\0', '\0', '\0','*'},
                                  {'*', '\0', '\0', '\0', '\0', '\0','*'},
                                  {'*', '\0', '\0', '\0', '\0', '\0','*'},
                                  {'*', '\0', '\0', '\0', '\0', '\0','*'},
                                  {'*', '\0', '\0', '\0', '\0', '\0','*'},
                                  {'*', '\0', '\0', 'C',  '\0', '\0','*'},
                                  {'*','*','*','*','*','*','*'}};
    
        inserisce_ostacolo(campo_da_gioco,vcol);
    
    	for (i=0;i<righe;i++)
    	{
    		printf ("\n");
    
    		for (j=0;j<colonne;j++)
    		{
    			printf ("%3c",campo_da_gioco[i][j]);
    		}
    	}
    
    scorrimento_ostacolo (campo_da_gioco[8][7],riga1[8][7],vcol,i,j);
    
    	return 0;
    }
    
    mi da un errore dopo il system cls alla parentesi graffa e non so se cosi può risultare giusto il codice.. (l'ho richiamato nella funzione main più sotto prima del return 0).
  • Re: [C] Problema gioco della macchina

    Io farei una funzione per fa muovere gli ostacoli, ma senza stampare niente. Poi una che stampa, da richiamare subito dipo quella che li muove, poi una che muove la macchina automaticamente e una che la fa muovere alla persona che gioca. Poi l'array è molto più chiaro se lo fai di int, e non di char, o almeno io ci capisco meglio se sono numeri perché si leggono meglio. Poi quando lo stampi metti che se è uno 0, stampa vuoto, se è, 1 stampa l'oggetto, sennò la macchina
  • Re: [C] Problema gioco della macchina

    Purtroppo avendo stampato tutto in caratteri penso che mi risulti più difficile ora come ora farlo in interi. In ogni caso adesso sono sceso, appena torno provo a seguire il codice che mi hai scritto!
    La mia idea è uguale alla tua, il problema è che farlo mi risulta un po' più difficile in quanto faccio programmazione con il linguaggio c da 3 mesi!
  • Re: [C] Problema gioco della macchina

    Thread chiuso per crossposting su Masterdrive.
Devi accedere o registrarti per scrivere nel forum
8 risposte