int main(int argc, char *argv[]){ int socket_fd; if(argc < 3){ fprintf(stderr, "%s <ip> <puerto>\n", argv[0]); return EXIT_FAILURE; } initscr(); raw(); keypad(stdscr, TRUE); noecho(); start_color(); comprobacion(); conexion(&socket_fd, argv[1], atoi(argv[2])); esperar_jugadores(socket_fd); bucle_juego(socket_fd); close(socket_fd); endwin(); return EXIT_SUCCESS; }
//funcion que se encarga de llamar a todas las funciones para poder jugar void partida(){ char matriz[FILAS][COLUMNAS], info[FILAS][COLUMNAS]; char respuesta, opcion, respuesta_anterior; int vidas, pos_usuario[USUARIO], pos_maquina[ENEMIGOS][2], nivel, puntuacion, cocos_anterior, asteriscos, turnos; bool asterisco_comido; /*---------------------------------------------------------------------------------------------*/ /*Englobar en una funcion*/ do{ //iniciamos la partida char dibujo_enemigo[ENEMIGOS] = {'M', 'M', 'M', 'M'}; asteriscos = 4; asterisco_comido = false; turnos = 0; vidas = 3; respuesta = 'j'; respuesta_anterior = 'a'; nivel = 1; puntuacion = 0; cocos_anterior = MCOCOS; cargar_mapa(matriz, info); inicializar_matriz(matriz, pos_usuario, pos_maquina, info, dibujo_enemigo); refrescar(matriz, info, vidas, nivel, puntuacion); while(respuesta != 'q' && vidas > 0){ respuesta = movimiento(respuesta_anterior); respuesta_anterior = respuesta; mover_jugador(respuesta, info, pos_usuario, matriz); comprobar_asteriscos(&asteriscos, info, dibujo_enemigo, &turnos, &asterisco_comido); comprobacion(matriz, info, pos_usuario, pos_maquina, vidas, nivel, puntuacion, dibujo_enemigo, asterisco_comido, &vidas); recuento_puntuacion(info, &cocos_anterior, &puntuacion); mover_maquina(matriz, pos_maquina, pos_usuario, dibujo_enemigo, asterisco_comido); comprobacion(matriz, info, pos_usuario, pos_maquina, vidas, nivel, puntuacion, dibujo_enemigo, asterisco_comido, &vidas); /*----------------------------------------------------------------*/ /*Ponerlo como funcion*/ if(comprobar_fin_nivel(info) == 1){ cargar_mapa(matriz, info); inicializar_matriz(matriz, pos_usuario, pos_maquina, info, dibujo_enemigo); nivel ++; cocos_anterior = MCOCOS; asterisco_comido = false; turnos = 0; asteriscos = 4; } /*---------------------------------------------------------------*/ refrescar(matriz, info, vidas, nivel, puntuacion); if(turnos > 0 ) turnos --; else{ for(int i=0; i<ENEMIGOS; i++) dibujo_enemigo[i] = 'M'; asterisco_comido = false; } } if(vidas == 0){ guardar_puntuacion(puntuacion); printw("\n\t\t\tGame Over\n"); } printw("¿Quieres jugar de nuevo? s/n\n"); refresh(); scanf(" %c", &opcion); }while(opcion != 'n'); /*--------------------------------------------------------------------------------------------------------*/ //exit (EXIT_SUCCESS); }//fin partida
int main(int argc, char *argv[]) { int sockfd, n, num, count, i; struct sockaddr_in dirserv; struct hostent *server; char buffer[256], archivo[70]; char *pal_archivo; FILE *fd; size_t len; size_t read; proveedor ** datos; /* "datos" es un arreglo de estructuras de tipo proveedor, inicializado * dinámicamente más adelante */ /* Se comprueban los argumentos pasados */ comprobacion(argc, argv); *pal_archivo = NULL; count = 0; /* Se obtiene del usuario el archivo con la informacion de los * proveedores y se guarda en "archivo" */ strcpy(archivo, argv[5]); /* Se obtiene el numero de proveedores a contactar */ num = numlineas(archivo); /* Se inicializa el arreglo de estructuras de tipo proveedor, * comprobando si se produjo un error al alocar memoria */ datos = (proveedor **) malloc(num * sizeof(proveedor *)); if (datos == NULL) { printf("Error al alocar memoria, intente mas tarde\n"); exit(1); } for(i = 0; i < num; i++){ datos[i] = (proveedor *) malloc(sizeof(proveedor)); if (datos[i] == NULL) { printf("Error al alocar memoria, intente mas tarde\n"); exit(1); } } i = 0; /* Se abre el archivo con la informacion de los proveedores para * conectarse a ellos */ fd = fopen(archivo, "r"); if (fd == NULL) { printf("No se pudo abrir el archivo %s\n", archivo); exit(1); } /* Se lee el archivo y se extraen los datos a traves de los * delimitadores de campo */ read = getdelim(&pal_archivo, &len, '&', fd); /* Se elimina el & y se guarda el nombre del proveedor en la * estructura */ if (pal_archivo[strlen(pal_archivo)-1] == '&') pal_archivo[strlen(pal_archivo)-1] = '\0'; // !! Meter el nombre del proveedor en la estructura !! strcpy(datos[i].nombre, pal_archivo); printf("Nombre del proveedor: %s\n", datos[i].nombre); while((read = getdelim(&pal_archivo,&len,'&',fd))!= -1) { if (pal_archivo[strlen(pal_archivo)-1] == '&') pal_archivo[strlen(pal_archivo)-1] = '\0'; if (pal_archivo[strlen(pal_archivo)-1] == ' ') pal_archivo[strlen(pal_archivo)-1] = '\0'; if (pal_archivo[strlen(pal_archivo)-1] == '\n') pal_archivo[strlen(pal_archivo)-1] = '\0'; memmove(pal_archivo, pal_archivo+1, strlen(pal_archivo)); if (count == 0) { strcpy( printf("%s3\n",pal_archivo); } free(pal_archivo); // Se crea el socket sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { printf("ERROR opening socket"); exit(1); } server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,"ERROR, no such host\n"); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; // bcopy(*src, *dst, size) bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); //serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(portno); if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) { error("ERROR connecting"); }