Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //LIBRERIAS
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include<string.h>
- //DIMENSIONES TABLERO
- #define FILAS 17
- #define COLUMNAS 17
- int menu(void); //Función principal
- //Funciones
- void jugar_ordenador(int tablero_partida);
- void inicializar_tablero(int tablero[FILAS][COLUMNAS]);
- void imprimir_matriz(int tablero[FILAS][COLUMNAS]);
- void manzana(int tablero[FILAS][COLUMNAS]);
- void seteo_serpiente1(int tablero[FILAS][COLUMNAS]);
- void seteo_serpiente2(int tablero[FILAS][COLUMNAS]);
- int selecciona_casilla(int tablero[FILAS][COLUMNAS], int fila, int columna);
- int comprobar_casilla1(int tablero [FILAS] [COLUMNAS], int fila, int columna);
- int comprobar_casilla2(int tablero [FILAS] [COLUMNAS], int fila, int columna);
- int jugar_contra_otro(void);
- void comprobacion(int tablero_partida);
- FILE *archivo; //Puntero
- int main(int argc, char* argv[]){
- srand(time(NULL));
- int tablero[FILAS][COLUMNAS];
- if ((argc != 2) && (argc !=3)){ //Comprobará si el número de argumentos introducidos es correcto
- printf("El número de argumentos introducidos es incorrecto\n");
- return -1;
- }
- else {
- archivo = fopen (argv[1], "w"); //Abrirá el fichero
- if(archivo == NULL){ //comprobará si el fichero se ha abierto satisfactoriamente
- printf("No se ha abierto el archivo\n");
- return -1;
- }
- else{
- menu();
- fclose(archivo); //Cierra el fichero
- return 0;
- }
- }
- }
- int menu(void){ //Menú con los 3 diferentes tipos de juego
- int juego = 0;
- int tablero_partida = 0;
- do{
- printf("BIENVENIDO A SNAKE REVOLUTION \n \n \n ");
- fprintf(archivo, "BIENVENIDO A SNAKE REVOLUTION \n \n \n ");
- printf("Pulse una opción: 1)Jugador vs ordenador 2)Jugador vs Jugador 3)Salir del Juego\n ");
- scanf("%d",&juego);
- switch(juego){ //Dependiendo del tipo de juego requerido
- case 1:
- printf("Ha elegido Jugador vs ordenador\n");
- fprintf(archivo, "Ha elegido Jugador vs ordenador\n");
- jugar_ordenador(tablero_partida);
- break;
- case 2:
- printf("Ha elegido Jugador vs Jugador\n");
- fprintf(archivo, "Ha elegido Jugador vs Jugador\n");
- jugar_contra_otro();
- break;
- case 3:
- printf("Saliendo...\n");
- fprintf(archivo, "Saliendo...\n");
- case 4:
- printf("Ha elegido comprobar casillas\n");
- comprobacion(tablero_partida);
- break;
- break;
- default:
- printf("ERROR\n");
- break;
- }
- }
- while (juego != 3);
- return juego;
- }
- void jugar_ordenador(int tablero_partida){ //Función que permitirá al usuario jugar contra el ordenador
- int fila1;
- int columna1;
- int acabar1 = 0;
- int coordenadas1 = 0;
- int tablero[FILAS][COLUMNAS];
- inicializar_tablero(tablero); //Se llamará a todas las funciones relevantes antes de imprimir la matriz
- seteo_serpiente1(tablero);
- manzana(tablero);
- do{ //Bucle que se repetirá hasta que se pierda el juego
- do{
- imprimir_matriz(tablero);
- printf("Indique a que coordenada desea mover la serpiente:\n Escriba primero la columna y luego la fila\n No tenga en cuenta los 1, empieze a contar desde los 0.\n");
- scanf("%d", &columna1);
- scanf("%d", &fila1);
- printf("Ha seleccionado moverse a la posición (%d, %d) \n",columna1,fila1);
- fprintf(archivo,"Ha seleccionado moverse a la posición %d %d \n",columna1,fila1);
- acabar1 = comprobar_casilla1(tablero, fila1, columna1);
- coordenadas1 = selecciona_casilla(tablero, fila1, columna1);
- }
- while(coordenadas1 != 1);
- if(acabar1 == 0){
- printf("El juego ha terminado\n");
- }
- }
- while ( acabar1 != 0);
- }
- int jugar_contra_otro(void){ //Funcion que permite a dos personas jugar a la vez(todavia está en desarrollo, nuestra idea era hacer 2 variables de cada,una para cada serpiente.
- int fila1;
- int columna1;
- int fila2;
- int columna2;
- int acabar1 = 0;
- int acabar2 = 0;
- int coordenadas1 = 0;
- int coordenadas2 = 0;
- int tablero[FILAS][COLUMNAS];
- inicializar_tablero(tablero);
- seteo_serpiente1(tablero);
- seteo_serpiente2(tablero);
- manzana(tablero);
- do{
- do{
- imprimir_matriz(tablero); //Imprimirá los seteos de las serpientes y demás y mas adelante el de la segunda serpiente
- printf("Indique a que coordenada desea mover la serpiente 1\n");
- scanf("%d", &columna1);
- scanf("%d", &fila1);
- printf("Ha seleccionado moverse a la posición (%d, %d) \n",columna1,fila1);
- fprintf(archivo,"Ha seleccionado moverse a la posición (%d, %d) \n",columna1,fila1);
- acabar1 = comprobar_casilla1(tablero, fila1, columna1);
- coordenadas1 = selecciona_casilla(tablero, fila1, columna1);
- imprimir_matriz(tablero); //Imprimirá el movimiento de la primera serpiente
- printf("Indique a que coordenada desea mover la serpiente 2\n");
- scanf("%d", &columna2);
- scanf("%d", &fila2);
- printf("Ha seleccionado moverse a la posición (%d, %d) \n",columna2,fila2);
- fprintf(archivo,"Ha seleccionado moverse a la posición (%d, %d) \n",columna2,fila2);
- acabar2 = comprobar_casilla2(tablero, fila2, columna2);
- coordenadas2 = selecciona_casilla(tablero, fila2, columna2);
- }
- while(coordenadas1 != 1);
- if((acabar1 == 0)||(acabar2 == 0)){
- printf("El juego ha terminado\n");
- }
- }
- while ( (acabar1 != 0)||(acabar2 != 0));
- }
- void inicializar_tablero(int tablero[FILAS][COLUMNAS]){ //Función que inicializará el tablero
- int i;
- int j;
- for (i=0;i<FILAS; i++){
- for (j=0; j<COLUMNAS; j++){
- if (i == 0 || i == FILAS-1){
- tablero [i][j] =1;
- }
- else if (j == 0 || j == COLUMNAS-1){
- tablero [i][j] =1;
- }
- else{
- tablero[i][j]=0;
- }
- }
- }
- }
- void imprimir_matriz (int tablero[FILAS][COLUMNAS]){ //Imprime la matriz que le pasan como argumento
- int i,j;
- printf("\n");
- for (i=0;i<FILAS;i++){
- for (j=0;j<COLUMNAS;j++){
- printf("%d ",tablero[i][j]);
- fprintf(archivo,"%d ",tablero[i][j]);
- }
- printf("\n");
- fprintf(archivo,"\n");
- }
- printf("\n\n\n");
- }
- void manzana (int tablero[FILAS][COLUMNAS]){ //Función que seteará una manzana al principio en un punto y luego será randomizada.
- int manz=9;
- int max=(FILAS-2);
- int min=1;
- int manx=0;
- int many=0;
- int fila = 8, columna = 8; //Seteará la manzana en el punto (8,8)
- if((fila == 8)&&(columna == 8)){
- tablero[8][13] = 9;
- }
- else{
- do{
- manx = rand() % (max - min + 1) + min; //Randomizador
- many = rand() % (max - min + 1) + min;
- }
- while(tablero[manx][many] !=0);
- if(tablero[manx][many] == 0){
- tablero[manx][many] = manz;
- }
- }
- }
- void seteo_serpiente1(int tablero[FILAS][COLUMNAS]){
- int i;
- int columna = 4;
- int fila = 8;
- tablero[fila][columna]=8;
- for(i = columna - 1; i > 1; i--) { //Bucle para que la serpiente salga en el medio y mirando hacia la derecha
- tablero[fila][i] = 5;
- }
- }
- void seteo_serpiente2(int tablero[FILAS][COLUMNAS]){
- int i;
- int columna = 12;
- int fila = 8;
- tablero[fila][columna]=7;
- for(i = columna + 1; i < 15; i++) { //Bucle para que la serpiente salga en el medio y mirando hacia la derecha
- tablero[fila][i] = 5;
- }
- }
- int selecciona_casilla(int tablero[FILAS][COLUMNAS], int fila, int columna){ /*Funcion que recibe como parámetros el tablero y las coordenadas a la que moveremos la serpiente
- y devolverá un 0 o 1 en función de la validez del movimiento*/
- int i; //Coordenadas x
- int j; //Coordenadas y
- int longitud = 0; //Longitud de la serpiente
- int cabezaX; //Coordenadas x de la cabeza
- int cabezaY; //Coordenadas y de la cabeza
- for(i = 0; i < FILAS; i++){ //Bucle para localizar la cabeza de la serpiente
- for(j = 0; j < COLUMNAS; j++){
- if (tablero[i][j] == 8){
- cabezaX = j;
- cabezaY = i;
- }
- if((tablero[i][j] == 8)||(tablero[i][j] == 5)){ //Recorrerá la matriz entera para saber la longitud de la serpiente en cada momento
- longitud = longitud + 1;
- }
- }
- }
- printf("Ahora mismo su puntuación es de %d puntos\n",longitud);
- fprintf(archivo,"Ahora mismo su puntuación es de %d puntos\n",longitud);
- if((fila == cabezaY) && (columna == cabezaX + 1 )){ //Movimiento a la DERECHA: la coordenada Y no cariará pero la x sumará 1
- if(tablero[fila][columna] == 9){ //La longitud sumará una casilla al comer la manzana
- longitud = longitud + 1;
- manzana(tablero);
- }
- tablero[fila][columna] = 8; //Impondrá un 8(cabeza) en la coordenada solicitada
- for(i = columna - 1; i > columna - longitud; i--){ //Al moverse la serpiente correctamente dejará tras ella un 0 que es un lugar vacío en el tablero
- tablero[fila][i] = 5;
- }
- tablero[fila][columna-longitud] = 0;
- return 1;
- }
- else if((fila == cabezaY + 1 ) && (columna == cabezaX )){ //Movimiento hacia ARRIBA
- }
- else if((fila == cabezaY -1 ) && (columna == cabezaX )){ //Movimiento hacia ABAJO
- tablero[fila][columna] = 8;
- }
- else if((fila == cabezaY ) && (columna == cabezaX -1 )){ //Movimiento hacia la IZQUIERDA
- if(tablero[fila][columna] == 9){ //La longitud sumará una casilla al comer la manzana
- longitud = longitud + 1;
- manzana(tablero); //Vuelve a llamar a la funcion manzana para que aparezca otra vez
- }
- tablero[fila][columna] = 8;
- for(i = columna + 1; i < columna + longitud; i++){
- tablero[fila][i] = 5;
- }
- tablero[fila][columna+longitud] = 0;
- return 1;
- }
- else{
- printf("Coordenadas inválidas\n"); //El usuarió introdujo coordenadas inválidas
- return 0;
- }
- }
- int comprobar_casilla1(int tablero [FILAS][COLUMNAS], int fila1, int columna1){ //Función que comprobará si la casilla a la que se mueve la serpiente 1 es válida
- if (tablero [fila1] [columna1] == 1){
- printf("Se ha chocado contra la pared\n");
- fprintf(archivo,"Se ha chocado contra la pared\n");
- return 0;
- }
- else if(tablero[fila1] [columna1] == 5){
- printf("Se ha comido la cola\n");
- fprintf(archivo,"Se ha comido la cola\n");
- return 0;
- }
- else{
- return 1;
- }
- }
- int comprobar_casilla2(int tablero [FILAS][COLUMNAS], int fila2, int columna2){ //Función que comprobará si la casilla a la que se mueve la serpiente 2 es válida
- if (tablero [fila2] [columna2] == 1){
- printf("Se ha chocado contra la pared\n");
- fprintf(archivo,"Se ha chocado contra la pared\n");
- return 0;
- }
- else if(tablero[fila2] [columna2] == 5){
- printf("Se ha comido la cola\n");
- fprintf(archivo,"Se ha comido la cola\n");
- return 0;
- }
- else{
- return 1;
- }
- }
- void comprobacion(int tablero_partida){
- int x1,x2,x3,x4,y1,y2,y3,y4;
- int tablero[FILAS][COLUMNAS];
- inicializar_tablero(tablero);
- seteo_serpiente1(tablero);
- manzana(tablero);
- imprimir_matriz(tablero);
- printf("Introduzca 4 puntos para decirle que hay\n");
- scanf("%d",&x1);
- scanf("%d",&y1);
- scanf("%d",&x2);
- scanf("%d",&y2);
- scanf("%d",&x3);
- scanf("%d",&y3);
- scanf("%d",&x4);
- scanf("%d",&y4);
- if(tablero[x1][y1]==8){
- printf("En la posición %d %d está la cabeza",x1,y1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement