[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á.