Autor: Victor Manuel Martinez Moreno 1522026 Jueves M1
Introducción
Introducción
Esta tarea es sobre "El juego de la vida de John
Conway" en el que hay que programar una matriz de NxN y darle valores de
de 0 y 1 donde tendremos que tomar un valor de la matriz y examinar los valores
que se encuentran alrededor de dicho valor y con unas condiciones podremos
determinar si el valor cambia a 0 o 1.
Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (void) //inicio del programa
{
int Matriz[100][100],I,J,suma,Matriz_2[100][100],N,M;
char opcion[2];
printf("Cuantas filas quieres para la Matriz?\n"); // Se introduzen la cantidad de filas para la matriz
scanf("%d",&N);
printf("Cuantas columnas quieres para la Matriz? \n"); // Se introduzen la cantidad de columnas para la matriz
scanf("%d",&M);
srand(time(NULL)); //funcion para insertar valores random en la matriz
for(I=0;I<N;I++)
{
for(J=0;J<M;J++)
{
Matriz[I][J]=rand() % 2;
}
}
printf("El resultado de la matriz 1 es \n\n"); //imprecion de la matriz generada con valores random
for(I=0;I<N;I++){ //inicio de la imprecion de matriz
for(J=0;J<M;J++) {
if(Matriz[I][J]== 1){
printf("* ");
} else {
printf(" ");
}
}
printf("\n\n");
}
printf("\n");
do{ //inicio del ciclo para imprimir iteraiones
for(I=0;I<N;I++) {
for(J=0;J<M;J++) {
suma=0;
if(I==0 && J==0){ //esquina superior izquierda
if(Matriz[I][J+1] == 1) suma++;
if(Matriz[I+1][J] == 1) suma++;
if(Matriz[I+1][J+1] == 1) suma++;
}else{
if(I==0 && J==M ){ //esquina superior derecha
if(Matriz[I-1][J] == 1) suma++;
if(Matriz[I-1][J-1] == 1) suma++;
if(Matriz[I][J-1] == 1) suma++;
}else{
if(I==N && J==0){ //esquina inferiro izquierda
if(Matriz[I-1][J] == 1) suma++;
if(Matriz[I-1][J+1] == 1) suma++;
if(Matriz[I][J+1] == 1) suma++;
}
else{
if(I==N && J==M){ //esquina inferiro derecha
if(Matriz[I-1][J-1] == 1) suma++;
if(Matriz[I-1][J] == 1) suma++;
if(Matriz[I][J-1] == 1) suma++;
}
else{
if(I==0){ //orilla superior
if(Matriz[I][J-1] == 1) suma++;
if(Matriz[I][J+1] == 1) suma++;
if(Matriz[I+1][J-1] == 1) suma++;
if(Matriz[I+1][J] == 1) suma++;
if(Matriz[I+1][J+1] == 1) suma++;
}
else{
if(I==N){ // orilla inferior
if(Matriz[I-1][J-1] == 1) suma++;
if(Matriz[I-1][J] == 1) suma++;
if(Matriz[I-1][J+1] == 1) suma++;
if(Matriz[I][J-1] == 1) suma++;
if(Matriz[I][J+1] == 1) suma++;
}
else{
if(J==0){ // orilla izquierda
if(Matriz[I-1][J] == 1) suma++;
if(Matriz[I-1][J+1] == 1) suma++;
if(Matriz[I][J+1] == 1) suma++;
if(Matriz[I+1][J] == 1) suma++;
if(Matriz[I+1][J+1] == 1) suma++;
}
else{
if(J==M){ // orilla derecha
if(Matriz[I-1][J-1] == 1) suma++;
if(Matriz[I-1][J] == 1) suma++;
if(Matriz[I][J-1] == 1) suma++;
if(Matriz[I+1][J-1] == 1) suma++;
if(Matriz[I+1][J] == 1) suma++;
}
else{
//centro
if(Matriz[I-1][J-1] == 1) suma++;
if(Matriz[I-1][J] == 1) suma++;
if(Matriz[I-1][J+1] == 1) suma++;
if(Matriz[I][J-1] == 1) suma++;
if(Matriz[I][J+1] == 1) suma++;
if(Matriz[I+1][J-1] == 1) suma++;
if(Matriz[I+1][J] == 1) suma++;
if(Matriz[I+1][J+1] == 1) suma++;
}
}
}
}
}
}
}
}
switch(Matriz[I][J]){
case 1:
switch(suma){
case 2:
Matriz_2[I][J] = 1;
break;
case 3:
Matriz_2[I][J] = 1;
break;
default:
Matriz_2[I][J] = 0;
}
break;
case 0:
switch(suma){
case 3:
Matriz_2[I][J] = 1;
break;
default:
Matriz_2[I][J] = 0;
}
break;
}
}
}
printf("El resultado de la matriz es \n\n");
for(I=0;I<N;I++){ //impresion de iteracion
for(J=0;J<M;J++){
if(Matriz_2[I][J]== 1){
printf("* ");
}
else{
printf(" ");
}
}
printf("\n\n");
}
printf("\n");
for(I=0;I<N;I++)
{
for(J=0;J<M;J++)
{
Matriz[I][J]=Matriz_2[I][J];
}
}
printf("¿Desea probar otra vez? si(Y)/no(N) \n"); //fin del ciclo para imprimir otra interacion
scanf("%s",&opcion);
}while(!strcmp(opcion,"Y") || !strcmp(opcion,"y"));
return 0;
}
Capturas de pantalla:
Conclusión:
Al programar este juego pude poner a prueba mi lógica y así
también poder mejorarla; fue un reto el programarlo, al principio me costo
entender la lógica pero después de leer en varios sitios web pude comprenderla,
donde batalle mas fue en la logica de las condiciones para examinar los valores
que se encontraban al rededor pero con varias pruebas pude logarlo y
también tenia planeado hacerlo en Python
pero como apenas estoy empezando a aprender a programar en ese lenguaje y por
falta de tiempo decidí hacerlo en C ya que se me facilita mas, así que pude
reforzar mis conocimientos en C.



