Iniciar juego de arqueros en el bosque

Arqueros en el bosque con C – Programación de juego

Hoy te mostraré la solución a un ejercicio propuesto en C que trata sobre hacer el juego de Arqueros en el bosque.

El juego consiste de un bosque representado mediante una cuadrícula, como el que se presenta a continuación (la vista es aérea):

Cuadrícula de bosque para arqueros - Juego programado en C

Cuadrícula de bosque para arqueros – Juego programado en C

Donde X representa un árbol. El objetivo del juego consiste en que 2 jugadores (arqueros) ingresan al bosque por extremos opuestos (J1 en 9-A y J2 en 1-I) y cada uno debe de intentar eliminar al otro.

Para ello en cada turno un arquero podrá elegir entre moverse un lugar o disparar un flechazo. Los flechazos se mueven en línea recta, una distancia máxima de 5 metros (asuma cada celda 1 metro).

Por otro lado un jugador no puede moverse a una celda donde hay un árbol y las flechas no pueden traspasarlos. Al recibir un flechazo el jugador pierde el round, las partidas se componen de 3 round y las gana el que gane 2 de ellos.

Veamos entonces cómo hacer este juego en ANSI C, C, C 99 o como le quieras llamar. Obviamente es compatible con C++.

(más…)

Radio y circunferencia de círculo con C

Radio y circunferencia en C

En este post de programación en C vamos a resolver un ejercicio muy simple. Se trata de calcular el radio y la circunferencia de un círculo.

Lo único que vamos a hacer será leer el diámetro (recuerda que este valor puede venir de cualquier lugar, por ejemplo, entrada del usuario), aplicar las fórmulas e imprimir los resultados.

Por cierto, no olvides que vamos a necesitar PI para calcular la circunferencia y radio en C.

(más…)

Tres en línea (tic tac toe) programado en C - Desarrollo del juego

Tres en línea en C – Programación de juego

En este post de programación en C te mostraré el código fuente para el juego conocido como tres en línea, tres en raya, tic tac toe, gatitos, etcétera.

Tres en línea (tic tac toe) programado en C - Desarrollo del juego

Tres en línea (tic tac toe) programado en C – Desarrollo del juego

He programado el juego en C estándar así que se puede compilar en varios sistemas operativos, y también se puede compilar con un compilador de C++.

El juego de tres en línea que he desarrollado en C soporta el modo jugador contra jugador, jugador contra CPU (con una pequeña inteligencia artificial) y CPU contra CPU. A lo largo del post te explicaré el código y cómo es que funciona cada parte del programa.

Por cierto, en este caso el juego se desarrolla en la consola pero se le puede agregar una interfaz usando alguna librería como Allegro.

(más…)

C - Leer números separados por coma usando scanf

C – Escanear números separados por coma

En este post sobre C y scanf te enseñaré cómo leer dos números separados por coma. Es decir, solicitar al usuario que ingrese dos números separados por coma y escanearlos por separado usando scanf.

Por ejemplo, que el usuario digite 12,34 y que nosotros leamos los dos números 12 y 34 por separado.

Lo único que vamos a usar será scanf; función presente en stdio.h.

(más…)

Extraer cuerpo de archivo HTML usando ANSI C - Trabajo con cadenas

C – Extraer contenido de archivo HTML

En este post de programación en C te enseñaré cómo obtener el texto (ignorando etiquetas) que se encuentra dentro de las etiquetas <body> de un archivo HTML.

Vamos a extraer lo que hay en el cuerpo de la página, pero además vamos a obtener solo el texto, ignorando todas las etiquetas que existan. Por poner un ejemplo, si la página es:

El programa en ANSI C debe extraer el contenido y además ignorar las etiquetas, produciendo la siguiente salida:

Veamos cómo resolver este ejercicio propuesto en C, ya que en otro lenguaje con soporte nativo de expresiones regulares sería fácil, pero aquí no lo es tanto.

(más…)

Ejercicio de cadenas en ANSI C

C – Ejercicio con cadenas

Hoy vamos a resolver un ejercicio propuesto en C. Se trata del trabajo con cadenas, vamos a solicitar dos cadenas y a partir de ellas hacer determinadas cosas. El problema dice así:

Escribir un programa que solicite dos cadenas que puede contener espacios, el programa deberá:

  • Decir qué cadena es mayor y cuál es menor alfabéticamente
  • Generar una nueva cadena que será la primera cadena leída, con las vocales convertidas a MAYÚSCULAS
  • Generar una nueva cadena que será la segunda cadena leída, con las consonantes convertidas a MAYÚSCULAS
  • Generar una nueva cadena concatenando las dos que ya fueron convertidas
  • Generar una nueva cadena que contenga la cadena concatenada invertida

Al finalizar el programa, este deberá:

  • Imprimir las dos cadenas originales
  • Imprimir las dos cadenas con las conversiones
  • Imprimir la cadena concatenada
  • Imprimir la cadena concatenada invertida

Veamos cómo resolver este problema usando ANSI C.

(más…)

Conversión de decimal con parte fraccionaria en C

C – Convertir decimal con parte fraccionaria

En este post de programación en ANSI C te mostraré 3 conversiones entre bases numéricas: de decimal a binario, a octal y a hexadecimal. La diferencia con mis otros posts es que en este caso vamos a convertir también la parte fraccionaria, decimal o como le llames a lo que va después del punto decimal.

Entonces vamos a convertir entre binario y decimal con punto decimal, además de convertir a octal, hexadecimal y a todas las otras bases.

Así que al final, con el código que te mostraré, podrás convertir números en base 10 con parte fraccionaria a cualquier base. Por ejemplo, convertir 3722.24 base 10 a E8A.3D70 base 16.

Te repito que la principal diferencia es que ahora este conversor en C soporta conversiones con punto decimal, cosa que me habían solicitado varios usuarios en mis otros posts.

(más…)

Intercalar mayúscula y minúscula en C - Programación

C – Convertir a minúscula y mayúscula intercalado

En este post de programación en C, también conocido como ANSI C vamos a ver cómo intercalar las letras de una cadena para convertir una en mayúscula, la siguiente en minúscula, y así hasta terminar.

Básicamente vamos a convertir un carácter a minúscula, el segundo a mayúscula y así sucesivamente. Esto es convertir la cadena de manera intercalada.

Por ejemplo, convertir parzibyte a PaRzIbYtE.

(más…)

Árbol binario en C con nodo de tipo cadena

C – Árbol binario de cadenas

En este post te mostraré cómo implementar la estructura de datos de árbol binario en ANSI C en donde el dato de cada nodo o rama será una cadena.

Te enseñaré cómo agregar un struct de nodo de árbol cuyo dato es char*, elegir si el nodo va a la izquierda o derecha (comparando cadenas) , recorrer el árbol en preorden, inorden y postorden y también hacer una búsqueda en el mismo.

Me estoy basando en el tutorial de árboles binarios en C que presenté anteriormente, solo que en aquel entonces fue con un tipo de dato entero, ahora lo haré con strings.

Nota: nodo y rama serán usados como sinónimos a lo largo de este post.

(más…)

Concatenar char y string en C

Concatenar char y string en C

En este post sobre C te mostraré cómo concatenar un carácter y una cadena, es decir, agregar un tipo de dato char a un tipo de dato char* que no es otra cosa más que un arreglo de caracteres, ya que en C no existen las strings como tal.

Explicado con pocas palabras te enseñaré como agregar un char como 'a' a una cadena como "Hol".

Aunque en otros lenguajes esto no tiene ninguna complejidad, en ANSI C hay que escribir un poco más de código.

(más…)

Raíz cuadrada sin sqrt en lenguaje C - Método de Newton

C – Raíz cuadrada sin sqrt: Método de Newton

En este blog ya hemos visto cómo calcular la raíz cuadrada de un número usando el lenguaje de programación C y la función sqrt, pero hoy veremos cómo obtener la raíz cuadrada sin usar sqrt.

Para calcular la raíz cuadrada de un número en C sin sqrt vamos a aplicar el Método de Newton en donde nos vamos a ir aproximando a la raíz cuadrada del número.

Como siempre, aquí te explicaré cómo aplicar el método, más no el método en sí, pues para ello puedes consultar otros sitios.

(más…)

Valor absoluto en C

Valor absoluto en C

En este post de programación en C te enseñaré a calcular el valor absoluto de un número.

El valor absoluto es la distancia que existe entre dos puntos de una recta, y esta distancia siempre será positiva.

Explicado con otras palabras y sin ser matemático, el valor absoluto es convertir un número a su representación positiva en caso de que éste sea negativo.

Anteriormente te enseñé cómo convertir un número negativo a positivo en C en donde vimos funciones nativas, pero en este post te enseñaré cómo hacer una función propia.

(más…)