You are on page 1of 2

Atividade sobre Jogo da Vida

Luís Filipe Martins Barros


RA: 21000315
25/03/2019

1. Identifique em qual classe Java (ou quais classes) está a codificação que inicializa o Jogo da
Vida com a geração randômica de células vivas e mortas no grid (na tabela). Identifique em qual
trecho do código é feita esta implementação, e explique linha por linha do código-fonte.

O trecho do código que que inicializa a grade com células vivas ou mortas aleatoriamente está
na classe Automata.java. O trecho em que está esta codificação é este:

Neste trecho, os valores de i e j correspondem a posição de uma determinada célula na grade.


Podemos ver que i e j irão começar com o valor (0,0), correspondendo à célula superior
esquerda, e assumir todas as possíveis combinações de valores, até terminar na célula inferior
direita. Para cada valor do conjunto (i,j), um valor binário é atribuído de forma aleatória,
sendo que 0 corresponde a célula morta e 1 corresponde a célula viva.

2. Identifique em qual classe Java (ou quais classes) está a codificação que faz a passagem de uma
interação do autômato celular para outra interação. Identifique em qual trecho do código é feita a
passagem de uma interação para outra, e explique linha por linha do código-fonte. OBS: esta
passagem deve ter um comando de repetição, e este é o loop principal do Jogo da Vida.

A passagem de uma iteração para outra é feita por duas classes, Automata.java e
MainController.java. Na primeira, o trecho de interesse é este:
Neste trecho do código, a função evolve recebe a quantidade de vizinhos vivos de cada célula,
de forma sucessiva. Se a célula estiver viva, ou seja, com valor binário verdadeiro, ele
compara o número de vizinhos com as regras de sobrevivência e atualiza o valor futuro desta
célula em um clone da grade. Se a célula estiver morta, ou seja, com valor binário falso, ele
comprara o número de vizinhos com as regras de nascimento e atualiza o valor futuro desta
célula em um clone da grade. Por fim, a função atualiza todos os valores da grade com os
valores armazenados no clone (realiza a iteração).
Já na classe MainController.java, o trecho de interesse é este:

Este trecho é basicamente um loop infinito que chama a função evolve da classe
Automata.java e continuamente atualiza os valores da grade com os valores do clone criado.

3. Identifique em qual classe Java (ou quais classes) está a codificação com as regras para definir
quando uma célula irá morrer, quando uma célula irá sobreviver ou quando uma célula irá nascer.
Identifique em qual trecho do código é feita esta implementação, e explique linha por linha do
código-fonte.

As regras que definem a sobrevivência e nascimento das células está na classe


GamePreferences.java. As regras para quando as células vão morrer não são necessárias,
pois se ela não sobrevive e não nasce, evidentemente ela irá morrer ou permanecer morta.
Estas regras estão codificadas no seguinte trecho:

Este trecho mostra três Strings, uma com o nome do conjunto de regras, uma com o número
de vizinhos que permite a uma célula sobreviver e outra com o número de vizinhos que
permite que uma célula nasça. Por padrão, as regras do jogo são as primeiras das Strings, ou
seja, a do Jogo da Vida de Conway..

You might also like