Ho apportato dei cambiamenti mi aiutate a risolvere i nuovi problemi?
eccovi il codice:
Gioco.h
#define LATO 40
#define MAX_PASSI 100
#define LATOMAX 20
//dichiaro le funzioni utilizzate nel programma
void creazione_campo(char **,int,int,int );
void crea_spazio(char **,int,int);
void credits();
void rules();
Gioco_function.cpp
#include "Gioco.h"
#include <stdio.h>
#include <stdlib.h>
//Semplice function per la stampa di una matrice che rappresenta "lo spazio" dove l'astronave si muove
void creazione_campo(char **spazio, int dim1, int dim2, int vite) // passo la copia della matrice in quanto qui visualizzo la posizione dei vari elementi
{
register int i,j;
printf("\n");
for (i=0; i<dim1; i++)
{
for (j=0; j<dim2; j++)
{
if (spazio[i][j]=='*' || spazio[i][j]=='O' || spazio[i][j]=='X' || spazio[i][j]=='V')
{
printf("%c ",&spazio[i][j]);
}
else
{
printf(" ");
}
}
printf("\n");
}
}
// Le funzioni che seguono sono delle semplici void per la stampa di informazioni sul gioco e su come si gioca
void credits()
{
printf(" -------------------------------\n");
printf("| BENVENUTO NEL GIOCO CAR SPEED |\n");
printf(" -------------------------------\n\n");
}
void rules()
{
printf("*******************\n");
printf("* REGOLE DI GIOCO *\n");
printf("*******************\n\n");
printf("* Il gioco consiste nel far muovere l'auto (indentificata da: V )\n");
printf("* e farla arrivare alla fine del percorso (ovvero dopo 100 passi)\n");
printf("* evitanto gli ostacoli presenti! Se invece l'auto colpisce un ostacolo\n");
printf("* finisce la partita!\n\n");
printf(" *************\n");
printf(" * MOVIMENTI *\n");
printf(" *************\n\n");
printf("E' possibile muovere l'auto solo nelle direzioni destra -> e sinistra <-: \n\n");
printf("A per far muovere l'auto a sinistra\n\n");
printf("D per far muovere l'auto a destra!\n\n");
}
Gioco_main
#include <stdio.h>
#include <stdlib.h>
#include "Gioco.h"
#include <time.h>
int main()
{
int riga, colonna,vite=1,na_1,na_2, passi=0,logical=1,i,j;
register char direzione;
int dim1,dim2;
do
{
printf("Inserisci la lunghezza del campo di gioco (min %d):\t",LATOMAX);
scanf("%d",&dim1);
printf("Inserisci la larghezza del campo da gioco ( min %d):\t",LATOMAX);
scanf("%d",&dim2);
}
while(dim1 <= LATOMAX && dim2 <= LATOMAX);
char spazio[dim1][dim2];
char *sp=&spazio[0][0];
crea_spazio(&sp,dim1,dim2); // creo il campo di gioco
system("cls");
credits();
system("pause");
system("cls");
rules();
printf("\n");
system("pause");
system("cls");
Start:
srand(time(NULL));
riga=37;
do
{
colonna=2+rand()%37;
}
while (spazio[riga][colonna]=='B');
spazio[riga][colonna]='V';
na_1=1+rand()%8;
na_2=1+rand()%28;
spazio[na_1][na_2]='X';
while (logical==1)
{
if((passi == MAX_PASSI)&&(vite == 1)) // Controllo se i passi sono ugali a quelli programmati da fare prima di superare il gioco tenedo conto dello stato della vita
{
printf("\a\n\t----------------------------------------------------\n");
printf(" !!! PLAYER WIN THE GAME !!! \n");
printf("\n\t----------------------------------------------------\n");
logical = 0;
system("PAUSE");
}
//Controllo sul numero delle vite e dei passi. Se pari a zero e i passi sono minori di quelli programmati la partita termina
if((passi <= MAX_PASSI)&&(vite==0))
{
printf("La tua auto e' distrutta!\n\n");
logical=0;
}//Controllo sul numero delle vite. Se pari a zero la partita termina
system("cls");
j=1+rand()%28;
spazio[1][j]='O';
creazione_campo(&sp,dim1,dim2,vite); // chiamo la funzione per la creazione degli ostacoli
fflush(stdin);
direzione=getchar();
//Switch-case che determina il movimento della navicella nel campo dei meteoriti. All'interno di ogni case ci sono dei controlli
switch (direzione)
{
case 'a':
case 'A':
passi+=1;
spazio[riga][colonna]=' ';
colonna--;
if (spazio[riga][colonna]=='*')
{
printf("Non puoi spostarti in questa direzione!\n");
system("pause");
colonna++;
}
if (spazio[riga][colonna]=='O')
{
printf("Hai colpito un ostacolo! Hai perso!\n");
vite--;
system("pause");
}
spazio[riga][colonna]='V';
break;
case 'd':
case 'D':
passi+=1;
spazio[riga][colonna]=' ';
colonna++;
if (spazio[riga][colonna]=='*')
{
printf("Non puoi spostarti in questa direzione!\n");
colonna--;
system("pause");
}
if (spazio[riga][colonna]=='O')
{
printf("Hai colpito un ostacolo! Hai perso!\n");
vite--;
system("pause");
}
spazio[riga][colonna]='V';
break;
default:
passi+=1;
spazio[riga][colonna]=' ';
if (spazio[riga][colonna]=='O')
{
printf("Hai colpito un ostacolo! Hai perso!\n");
vite--;
system("pause");
}
spazio[riga][colonna]='V';
}
//Questa porzione di codice ha il compito di generare degli ostacoli che si sposteranno lungo il percorso ad ogni iterazione
for(i=38; i>=0; i--)
{
for(j=28; j>=0; j--)
{
if(spazio[i][j]=='O')
{
if(i!=38 && spazio[i+1][j]!='X')
{
spazio[i][j]=' ';
if (spazio[i+1][j]=='V' && vite!=0)
{
printf("BOOM!! Hai colpito un ostacolo che ha danneggiato l'auto! Hai perso!\n");
printf("--------------------------------------------------------------------\n\n\n");
vite--;
system("pause");
}
else
{
spazio[i+1][j]='O';
}
}
else
{
spazio[i][j]=' ';
}
}
}
}
}
system("cls");
return 0;
}
Crea_spazio.cpp
#include <stdio.h>
#include <stdlib.h>
#include "Gioco.h"
void crea_spazio(char **spazio,int dim1,int dim2)
{
int i,j;
for(i=0; i <dim1; i++)
{
for(j=0; j<dim2; j++)
{
if(i==0 || i==dim1-1) spazio[i][j]="*"; //riga 13
if(j==0 || j=dim2-1 ) spazio[i][j]="*";
}
}
}
Lista errori in crea_spazio.cpp
riga 13 [Error] invalid conversion from 'const char*' to 'char' [-fpermissive]
riga 14 [Error] lvalue required as left operand of assignment
riga 14 [Error] invalid conversion from 'const char*' to 'char' [-fpermissive]