Skip to content

Commit

Permalink
Push initial files
Browse files Browse the repository at this point in the history
Innitial commit to push all the game files.
  • Loading branch information
ItsShunya committed Nov 3, 2020
1 parent 1bdb355 commit 2cb3af5
Show file tree
Hide file tree
Showing 20 changed files with 1,086 additions and 0 deletions.
27 changes: 27 additions & 0 deletions azar.c
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);
}

9 changes: 9 additions & 0 deletions azar.h
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 */

47 changes: 47 additions & 0 deletions duerme.c
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);
}

11 changes: 11 additions & 0 deletions duerme.h
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 */

37 changes: 37 additions & 0 deletions ficha.c
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;
}
18 changes: 18 additions & 0 deletions ficha.h
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

112 changes: 112 additions & 0 deletions jugador.c
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);
}
33 changes: 33 additions & 0 deletions jugador.h
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

Binary file added main
Binary file not shown.
21 changes: 21 additions & 0 deletions main.c
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
}
Loading

0 comments on commit 2cb3af5

Please sign in to comment.