codice:
#ifndef GAMELIB_H#define GAMELIB_H
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <unistd.h>
#include <math.h>
void gioca();
void crea_mappa();
void termina_gioco();
enum Tipo_pericolo{
nessun_pericolo,
trappola,
alieno
};
enum Stato_giocatore{
vulnerabile,
scudo_vita,
solo_vita,
solo_scudo
};
enum Tipo_oggetto{
nessun_oggetto,
medikit,
pozione,
materiale,
colpi_lanciarazzi
};
struct Giocatore {
enum Stato_giocatore stato;
int posizionex;
int posizioney;
unsigned short int zaino[4];
unsigned int short uccisioni_alieni;
};
struct Cella{
enum Tipo_pericolo pericolo;
enum Tipo_oggetto oggetto ;
};
#endif
codice:
#include "gamelib.h"
static struct Cella *scacchiera = NULL ;
static struct Giocatore Ciccio;
static struct Giocatore Ninja ;
int lato ;
void crea_scacchiera();
void stampa_scacchiera();
void termina_creazione();
void muovi();
void usa_oggetto();
static short int vittoriaNinja=0,vittoriaCiccio=0;
static unsigned int turni_passati=0;
short int mosse_a_disposizione=1;
static void turnoNinja();
static void turnoCiccio();
///la funzione termina_creazione permette di ritonrare al menu iniziale del gioco
void termina_creazione() {
printf("da fare\n" );
}
void termina_gioco(){
printf("Ecco le statistiche delle partite:" );
printf("Vittorie di Ninja : %d\n Vittorie di Ciccio: %d \n ",vittoriaNinja,vittoriaCiccio );
}
void crea_mappa(){
int opzione;
do {
printf("\t Premi '1' per CREARE LA SCACCHIERA \n" );
printf("\t \n" );
printf("\t Premi '2' per STAMPARE LA SCACCHIERA \n" );
printf("\t \n" );
printf("\t Premi '3' per TORNARE INDIETRO \n" );
scanf("%d", &opzione );
switch (opzione) {
case 1:
crea_scacchiera();
break;
case 2:
stampa_scacchiera();
break;
case 3:
termina_creazione();
break;
default:
printf("Opzione non valida..\n" );
break;
}
} while(opzione!=3);
}
void crea_scacchiera () {
time_t t ;
int mappa,i,j,righe,colonne,ness_per,alie,trapp,no_obj ,medik,pozio,mater,colpilancia;
srand((unsigned)time(&t));
printf("Immettere la lunghezza n di un lato della scacchiera: " );
scanf("%d", &lato );
mappa=lato*lato ;
righe=lato;
colonne=lato;
printf("Grandezza Mappa => %d (%dX%d)\n\n",mappa,lato,lato);
struct Cella* scacchiera=malloc(righe*colonne*sizeof(struct Cella));
//allocazione della matrice
/*
for ( i = 0; i < lato; ++i) {
for ( j= 0; j <lato; ++j) {
scacchiera[i*colonne+j].oggetto=rand()%3
scacchiera[i*righe+j].pericolo=3+rand()%5;
}
}
*/
printf("\t Ai fini della difficoltà del gioco dovrai inserire 3 probabilità la cui somma dovrà fare 100..... \n\n" );
do {
printf("\t Probabilità di trovare in una data cella una'TRAPPOLA':" );
scanf("%d", &trapp);
printf("\t Probabilità di trovare in una data cella un 'ALIENO' :" );
scanf("%d", &alie );
printf("\t Probabilità di trovare in una data cella 'NESSUN PERICOLO':");
scanf("%d", &ness_per );
if (ness_per +trapp+alie !=100) {
printf(" \n Ricorda la somma delle probabilità deve essere 100 \n " );
}
}
while( ness_per +trapp+alie !=100);
printf("\t \n Ora dovrai inserire 5 probabilità legate al ritrovamento o meno degli oggetti....." );
do {
printf("\n\n Probabilità di trovare in una data cella 'POZIONE':" );
scanf("%d", &pozio);
printf("\t Probabilità di trovare in una data cella un 'MEDIKIT' :" );
scanf("%d", &medik );
printf("\t Probabilità di trovare in una data cella 'MATERIALE':" );
scanf("%d", &mater);
printf("\t Probabilità di trovare in una data cella un 'COLPI LANCIARAZZI' :" );
scanf("%d", &colpilancia );
printf("\t Probabilità di trovare in una data cella 'NESSUN OGGETTO':" );
scanf("%d", &no_obj );
if (no_obj+pozio+medik+colpilancia+mater !=100) {
printf("Ricorda la somma delle probabilità deve essere 100" );
}
} while(no_obj+pozio+medik+colpilancia+mater !=100);
//inizializzo Tipo_pericolo
for ( i = 0; i < lato; i++) {
for ( j= 0; j <lato; j++) {
if (rand()%101<ness_per) {
scacchiera[i*lato+j].pericolo=nessun_pericolo;
} else if (ness_per<=rand()%101&&rand()%101<=ness_per+trapp) {
scacchiera[i*lato+j].pericolo=trappola;
} else if (rand()%101>ness_per+trapp)
scacchiera[i*lato+j].pericolo=alieno;
}
}
//inizializzo Tipo_oggetto
for ( i = 0; i < lato; i++) {
for ( j= 0; j <lato; j++) {
if (rand()%101<no_obj) {
scacchiera[i*lato+j].oggetto=nessun_oggetto;
} else if (no_obj<=rand()%101&&rand()%101<no_obj+medik) {
scacchiera[i*lato+j].oggetto=medikit;
} else if (no_obj+medik<=rand()%101&&rand()%101<no_obj+medik +pozio)
scacchiera[i*lato+j].oggetto=pozione;
else if (no_obj+trapp+pozio<=rand()%101&&rand()%101<no_obj +medik+pozio+mater)
scacchiera[i*lato+j].oggetto=materiale;
else if (no_obj+trapp+pozio+mater<=rand()%101&&rand()%101< no_obj+medik+pozio+mater+colpilancia)
scacchiera[i*lato+j].oggetto=colpi_lanciarazzi;
}
}
//prova stampa
int l, p ;
for ( l = 0; l < lato ; l++) {
for (p=0; p<lato ; p++) {
if ((scacchiera+l+p)->pericolo==nessun_pericolo) {
printf(" 1" );
} else if ((scacchiera+l*p)->pericolo==alieno) {
printf(" 2" );
} else if((scacchiera+l*p)->pericolo==trappola) {
printf(" 3" );
}///////////////////////////////////////////////////
if((scacchiera+l*p)->oggetto==nessun_oggetto) {
printf(" 4" );
} else if ((scacchiera+l*p)->oggetto==medikit) {
printf(" 5" );
} else if((scacchiera+l*p)->oggetto==pozione) {
printf(" 6" );
}
else if ((scacchiera+l*p)->oggetto==materiale) {
printf(" 7" );
} else if((scacchiera+l*p)->oggetto==colpi_lanciarazzi) {
printf(" 8" );
}
}
printf("\n" );
}
// struct cella * Ciccio = (scacchiera+ rand()%lato * rand()%lato) ;
//
/*
//static void gieson(struct Giocatore *player){
time_t t;
srand((unsigned) time(&t));
int apparizione = 1 + (rand() % 100);
} */
/*
Ninja.zaino[nessun_oggetto]=0;
Ciccio.zaino[nessun_oggetto]=0;
Ninja.zaino[medikit]=0;
Ciccio.zaino[medikit]=0;
Ninja.zaino[pozione]=0;
Ciccio.zaino[pozione]=0;
Ninja.zaino[materiale]=0;
Ciccio.zaino[materiale]=0;
Ninja.zaino[colpi_lanciarazzi]=0;
Ciccio.zaino[colpi_lanciarazzi]=0;
Ninja.stato=solo_vita;
Ciccio.stato=solo_vita;
*/
printf("\n\n\nOk......la mappa è stata creata\n\n\n");
}
void stampa_scacchiera(){
/* int i , j ;
for ( i = 0; i < lato ; i++) {
for (j=0; j<lato ; j++) {
if ((scacchiera+i+j)->pericolo==nessun_pericolo) {
printf(" [1," );
} else if ((scacchiera+i*j)->pericolo==alieno) {
printf(" [2," );
} else if((scacchiera+i*j)->pericolo==trappola) {
printf(" [3," );
}///////////////////////////////////////////////////
if((scacchiera+i*j)->oggetto==nessun_oggetto) {
printf(" 4] \t" );
} else if ((scacchiera+i*j)->oggetto==medikit) {
printf(" 5] \t" );
} else if((scacchiera+i*j)->oggetto==pozione) {
printf(" 6] \t" );
}
else if ((scacchiera+i*j)->oggetto==materiale) {
printf(" 7] \t" );
} else if((scacchiera+i*j)->oggetto==colpi_lanciarazzi) {
printf(" 8] \t" );
}
}
printf("\n" );
}
*/
int l, p ;
for ( l = 0; l < lato ; l++) {
for (p=0; p<lato ; p++) {
if ((scacchiera+l+p)->pericolo==nessun_pericolo) {
printf(" 1" );
} else if ((scacchiera+l*p)->pericolo==alieno) {
printf(" 2" );
} else if((scacchiera+l*p)->pericolo==trappola) {
printf(" 3" );
}///////////////////////////////////////////////////
if((scacchiera+l*p)->oggetto==nessun_oggetto) {
printf(" 4" );
} else if ((scacchiera+l*p)->oggetto==medikit) {
printf(" 5" );
} else if((scacchiera+l*p)->oggetto==pozione) {
printf(" 6" );
}
else if ((scacchiera+l*p)->oggetto==materiale) {
printf(" 7" );
} else if((scacchiera+l*p)->oggetto==colpi_lanciarazzi) {
printf(" 8" );
}
}
printf("\n" );
}
}
codice:
#include <stdlib.h>
#include <stdio.h>
#include "gamelib.h"
int main(){
int scegli;
do{
printf("Inserisci l'operazione da effettuare \n");
printf(" 1. Crea mappa.\n 2. Gioca. \n 3. termina gioco.\n");
printf("Attenzione, prima di giocare devi creare la mappa! \n " );
scanf("%d",&scegli);
if (scegli<1||scegli>3) {
printf("Hai inserito un valore non valido\n" );
}
switch(scegli){
case 1:
crea_mappa();
break;
case 2:
gioca();
break;
case 3:
termina_gioco();
break;
}
}while(scegli!=3);
}