-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Innitial commit to push all the game files.
- Loading branch information
Showing
20 changed files
with
1,086 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// Este fichero se le da al alumno | ||
#include <time.h> // time() | ||
#include <stdlib.h> // rand(), srand() | ||
#include <stdio.h> // printf() | ||
#include "azar.h" | ||
|
||
/* | ||
* inicializar_azar() se tiene que ejecutar una vez al principio del main | ||
* para inicializar la generación de números aleatorios | ||
*/ | ||
//void inicializar_azar() { | ||
/* | ||
* Para que la sequencia de numeros aleatorios sea igual en cada | ||
* ejecucion usad el srand (0) en lugar del srand(time). | ||
*/ | ||
//srand(0); | ||
// srand( (unsigned)time( NULL ) ); | ||
//} | ||
|
||
/* | ||
* numero_al_azar(max) devuelve un número entero al azar entre 0 y max-1 | ||
*/ | ||
int numero_al_azar(int max) { | ||
srand(time(NULL)); | ||
return ( rand() % max); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
// Este fichero se le da al alumno | ||
#ifndef AZAR_H | ||
#define AZAR_H | ||
|
||
void inicializar_azar(); | ||
int numero_al_azar(int max); | ||
|
||
#endif /* AZAR_H */ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
// Este fichero se le da al alumno | ||
#include <time.h> | ||
#include "duerme.h" | ||
|
||
#define UN_RATO_SEGUNDOS 1 // 1 segundo | ||
#define UN_RATO_NANOSEGUNDOS 500000000 // 0.5 segundos | ||
|
||
/* | ||
* Hace que la ejecucion del programa se detenga durante | ||
* el numero de segundos que se le pasa por parametro | ||
*/ | ||
void duerme_n_segundos(long segundos) { | ||
struct timespec tim, tim2; | ||
tim.tv_sec = segundos; | ||
tim.tv_nsec = 0; | ||
|
||
nanosleep(&tim , &tim2); | ||
} | ||
|
||
/* | ||
* Hace que la ejecucion del programa se detenga durante | ||
* el numero de nanosegundos que se le pasa por parametro | ||
*/ | ||
void duerme_n_nanosegundos(long nanosegundos) { | ||
struct timespec tim, tim2; | ||
tim.tv_sec = 0; | ||
tim.tv_nsec = nanosegundos; | ||
|
||
nanosleep(&tim , &tim2); | ||
} | ||
|
||
/* | ||
* Hace que la ejecucion del programa se detenga durante | ||
* un numero de segundos predeterminado | ||
*/ | ||
void duerme_un_rato() { | ||
duerme_n_segundos(UN_RATO_SEGUNDOS); | ||
} | ||
|
||
/* | ||
* Hace que la ejecucion del programa se detenga durante | ||
* un numero de nanosegundos predeterminado | ||
*/ | ||
void duerme_un_nano_rato() { | ||
duerme_n_nanosegundos(UN_RATO_NANOSEGUNDOS); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
// Este fichero se le da al alumno | ||
#ifndef DUERME_H | ||
#define DUERME_H | ||
|
||
void duerme_n_segundos(long segundos); | ||
void duerme_n_nanosegundos(long nanosegundos); | ||
void duerme_un_rato(); | ||
void duerme_un_nano_rato(); | ||
|
||
#endif /* DUERME_H */ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
#include <stdio.h> | ||
typedef struct{ | ||
int num1, num2; | ||
}t_ficha; | ||
|
||
void inicializar_ficha (t_ficha *ficha, int i, int j); | ||
void imprimir_ficha (t_ficha f, int visible); | ||
void girar_ficha (t_ficha *ficha); | ||
int doble(); | ||
|
||
void imprimir_ficha(t_ficha ficha, int visible){ | ||
|
||
printf("%d:%d|", ficha.num1, ficha.num2); | ||
} | ||
|
||
void girar_ficha(t_ficha *ficha){ // num1 es canvia per num2 i al contrari | ||
int aux, i; | ||
|
||
aux=ficha->num1; | ||
ficha->num1=ficha->num2; | ||
ficha->num2=aux; | ||
|
||
} | ||
|
||
int doble() | ||
{ t_ficha ficha[28]; | ||
int i; | ||
|
||
if(ficha[i].num1==ficha[i].num2) //Si es un doble num1=num2 | ||
return(1); | ||
else return(0); | ||
} | ||
|
||
void inicializar_ficha (t_ficha *ficha, int i, int j) { | ||
ficha->num2=j; | ||
ficha->num1=i; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#ifndef FICHA_H | ||
#define FICHA_H | ||
|
||
#define FALSE 0 | ||
#define TRUE 1 | ||
|
||
#define NUM_FICHAS_DOMINO 28 | ||
|
||
typedef struct{ | ||
int num1, num2; | ||
}t_ficha; | ||
|
||
void inicializar_ficha(t_ficha *p_f, int a, int b); | ||
void girar_ficha(t_ficha *p_f); | ||
void imprimir_ficha(t_ficha f, int visible); | ||
|
||
#endif // FICHA_H | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
#include "ficha.h" | ||
#include <stdio.h> | ||
|
||
#define MIN_JUGADORES 2 | ||
#define MAX_JUGADORES 4 | ||
|
||
#define T_HUMANO 1 | ||
#define T_ROBOT 2 | ||
|
||
#define TRUE 1 | ||
#define FALSE 0 | ||
|
||
typedef struct | ||
{ | ||
int n_fichas; | ||
t_ficha f[NUM_FICHAS_DOMINO]; // Fichas que tiene | ||
int tipo; | ||
int peso; | ||
} t_jugador; | ||
|
||
typedef struct | ||
{ | ||
int n_jugadores; | ||
int un_humano; // TRUE or FALSE | ||
int turno; | ||
t_jugador j[MAX_JUGADORES]; // Fichas que tiene y otras cosas | ||
} t_jugadores; | ||
|
||
void imprimir_jugador(t_jugador j, int visible); | ||
void imprimir_jugadores(t_jugadores js, int visible); | ||
void que_jugador_tiene_doble_mas_alto(t_jugadores js, int *p_nj, int *p_nf); | ||
void pasar_turno(t_jugadores *p_js); | ||
void imprimir_turno(t_jugadores _js); | ||
|
||
void imprimir_jugador(t_jugador j, int visible) | ||
{ | ||
int i; | ||
t_ficha f; | ||
|
||
if (j.tipo == T_ROBOT) | ||
{ // Robot | ||
if (visible == FALSE) | ||
{ // Omnisciencia apagada | ||
for (i = 0; i < j.n_fichas; i++) | ||
{ | ||
printf("?:?|"); | ||
} | ||
} | ||
else | ||
{ // Omnisciencia encendida | ||
for (i = 0; i < j.n_fichas; i++) | ||
{ | ||
printf("%d:%d|", j.f[i].num1, j.f[i].num2); | ||
} | ||
} | ||
} | ||
else | ||
{ // Humano | ||
for (i = 0; i < j.n_fichas; i++) | ||
{ | ||
printf("%d:%d|", j.f[i].num1, j.f[i].num2); | ||
} | ||
} | ||
} | ||
void imprimir_jugadores(t_jugadores js, int visible) | ||
{ | ||
int i; | ||
for (i = 0; i < js.n_jugadores; i++) | ||
{ //Ejecuta el codigo para cada jugador | ||
printf("J%d ", i); | ||
imprimir_jugador(js.j[i], visible); | ||
if (js.j[i].tipo == T_ROBOT) | ||
{ //Robot | ||
printf("Robot\n"); | ||
} | ||
else | ||
{ //Humano | ||
printf("Humano\n"); | ||
} | ||
} | ||
} | ||
void que_jugador_tiene_doble_mas_alto(t_jugadores js, int *p_nj, int *p_nf) | ||
{ | ||
int i, j, max = 0, encontrado = 0; | ||
|
||
for (i = 0; i < js.n_jugadores; i++) | ||
{ //Comprueba que jugador tiene el doble mas alto | ||
for (j = 0; j < js.j[i].n_fichas; j++) | ||
{ | ||
if (js.j[i].f[j].num1 == js.j[i].f[j].num2 && js.j[i].f[j].num1 > max) | ||
{ | ||
max = js.j[i].f[j].num1; | ||
*p_nj = i; | ||
*p_nf = j; | ||
encontrado = 1; | ||
} | ||
} | ||
} | ||
if (encontrado == 0) | ||
{ | ||
*p_nj = 0; | ||
*p_nf = 0; | ||
} | ||
} | ||
void pasar_turno(t_jugadores *p_js) | ||
{ | ||
p_js->turno = ((p_js->turno) + 1) % (p_js->n_jugadores); // Suma 1 al turno a menos que sea máximo, entonces vuelve al inicial (0) | ||
} | ||
void imprimir_turno(t_jugadores js) | ||
{ | ||
printf("Turno: %d\n", js.turno); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
#ifndef JUGADOR_H | ||
#define JUGADOR_H | ||
|
||
#include "ficha.h" | ||
|
||
#define MIN_JUGADORES 2 | ||
#define MAX_JUGADORES 4 | ||
|
||
#define T_HUMANO 1 | ||
#define T_ROBOT 2 | ||
|
||
typedef struct { | ||
int n_fichas; | ||
t_ficha f[NUM_FICHAS_DOMINO]; // Fichas que tiene | ||
int tipo; | ||
int peso; | ||
} t_jugador; | ||
|
||
typedef struct { | ||
int n_jugadores; | ||
int un_humano; // TRUE or FALSE | ||
int turno; | ||
t_jugador j[MAX_JUGADORES]; // Fichas que tiene y otras cosas | ||
} t_jugadores; | ||
|
||
void imprimir_jugador(t_jugador j, int visible); | ||
void imprimir_jugadores(t_jugadores js, int visible); | ||
void que_jugador_tiene_doble_mas_alto(t_jugadores js, int *p_nj, int *p_nf); | ||
void pasar_turno(t_jugadores *p_js); | ||
void imprimir_turno(t_jugadores _js); | ||
|
||
#endif // JUGADOR_H | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#include "partida.h" | ||
//incloure totes les llibreries | ||
|
||
#define TRUE 1 | ||
#define FALSE 0 | ||
|
||
int main(){ | ||
int acabado; | ||
t_partida partida; | ||
inicializar_partida(&partida); | ||
realizar_jugada(&partida); | ||
acabado=FALSE; // Inicialitzem "acabado" a 0 perque la partida comença i ha d'entrar al while | ||
while(acabado==FALSE) // Entra sempre que es pugui seguint jugar | ||
{ | ||
imprimir_estado_partida(partida); | ||
realizar_jugada(&partida); | ||
acabado=se_ha_acabado_la_partida(partida); | ||
} | ||
|
||
imprimir_estado_final_partida(partida); // Printf de la partida en la jugada final | ||
} |
Oops, something went wrong.