15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

será passado a step_cell como resultado da expressão yield from.

Depois dessa preparação toda, podemos finalmente definir a lógica simples do

Jogo da Vida de Conway. Há apenas três regras.

def game_logic(state, neighbors):

if state == ALIVE:

if neighbors < 2:

return EMPTY # Morre: poucos vizinhos

elif neighbors > 3:

return EMPTY # Morre: vizinhos demais

else:

if neighbors == 3:

return ALIVE # Regenera (volta das tumbas)

return state

Podemos alimentar a corrotina step_cell com dados falsos para testá-la.

it = step_cell(10, 5)

q0 = next(it) # Obtém localização inicial

print('Me: ', q0)

q1 = it.send(ALIVE) # Envia o estado, obtém query do primeiro vizinho

print('Q1: ', q1)

# ...

t1 = it.send(EMPTY) # Envia para q8, obtém a decisão do jogo

print('Outcome: ', t1)

>>>

Me: Query(y=10, x=5)

Q1: Query(y=11, x=5)

...

Outcome: Transition(y=10, x=5, state='-')

O objetivo do jogo é executar esta lógica em uma grade completa de células e

em lockstep. Para isso, podemos montar uma composição da corrotina step_cell

para criar a corrotina simulate. Esta avança sobre a grade de células e produz

resultados de step_cell ciclicamente, inúmeras vezes. Depois de varrer todas as

coordenadas da grade, produz um objeto TICK, indicando que a geração atual de

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!