[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: O Jogo "Vida"



Desculpem a demora, mas com Testes de Seleção, listas, 1a Fase da OBM (Puxa,
vocês capricharam esse ano, hein?) e provas na escola fiquei sem tempo pra
LER as mensagens. Só há pouco tomei conhecimento desse jogo Vida e interessei-me
por fazer um programa (fácil, simples, mas ilustrativo) sobre a proposta
inicial de Conway.
O código-fonte em C vai abaixo. Ele funciona bem em MS-DOS. Para funcionar
em Linux precisa-se modificar um _getch() por
getchar() no loop, mas acho que não tem mais nenhuma incompatibilidade(espero).
Na verdade, fiz isso pois a saída fica mais "apresentável". Tomei a liberdade
de criar o tabuleiro com uma "margem" que é sempre zero pra facilitar o
loop for.
----------Início Código de Programação C-------------
#include <stdio.h>

int main()
{
int Tabuleiro[10][10];
int x, y, tot;

/* Inicializa o tabuleliro com zeros */

	for(x = 0; x < 10; x++)
		for(y = 0; y < 10; y++)
			Tabuleiro[x][y] = 0;

/* lê os dados do teclado até que seja dada a casa (0,0) */

	printf("Entre os dados:\n");
	scanf("%d %d", &x, &y);

	while (x != 0 && y != 0)
	{
		Tabuleiro[x][y] = 1;
		scanf("%d %d", &x, &y);
		getchar();
	}

/* imprime-se o tabuleiro inicial */

   printf("---------------\n");
   for(x = 1; x < 9; x++)
	{
		for(y = 1; y < 9; y++)
			printf("%d ", Tabuleiro[x][y]);
		printf("\n");
	}
	printf("---------------\n");

/*	o programa espera por 'c' para fazer outra iteração e
	qualquer outro comando (qualquer MESMO) sai do programa */

	while(_getch() == 99)
	{
	   for(x = 1; x < 9; x++)
	      for(y = 1; y < 9; y++)
	         {
		    tot = 0;
		    if(Tabuleiro[x-1][y-1] == 1) tot += 1;
		    if(Tabuleiro[x-1][y+0] == 1) tot += 1;
		    if(Tabuleiro[x-1][y+1] == 1) tot += 1;
		    if(Tabuleiro[x+0][y-1] == 1) tot += 1;
		    if(Tabuleiro[x+0][y+1] == 1) tot += 1;
		    if(Tabuleiro[x+1][y-1] == 1) tot += 1;
		    if(Tabuleiro[x+1][y+0] == 1) tot += 1;
		    if(Tabuleiro[x+1][y+1] == 1) tot += 1;

// Aplicação das "Leis de Conway"
		    if( tot == 3) Tabuleiro[x][y] = 1;
		    else if( tot == 2);
	            else Tabuleiro[x][y] = 0;
		}

// Mostra o tabuleiro na tela
		for(x = 1; x < 9; x++)
		{
		    for(y = 1; y < 9; y++)
			printf("%d ", Tabuleiro[x][y]);
		    printf("\n");				
		}
		printf("---------------\n");
	}

	return 0;
}


----------Fim do Código de Programação C-------------

A tempo: Quando põe-se uma peça em determinada posição (ou retira-se, tanto
faz)
[]'s, Bernardo

-- Mensagem original --

>Ola Hugo,
>
>Neste ultimo domingo eu fiz uma versao ( em C ) bem simples
>deste jogo, mas que permite aplicar QUAISQUER REGRAS ( de um
>certo tipo ) e nao so as de Conway. Falta compilar e tirar
>algum bug que possa existir. Vou divulgar os fontes aqui na
>lista. Pensando sobre o jogo, descobri tambem um fato
>interessante que vou falar.
>
>Um abraco
>Paulo Santa Rita
>2,1701,04062001



___________________________________________________________

http://www.zipmail.com.br O e-mail que vai aonde você está.