⇤ ← Revisão 1e 2003-12-20 00:08:40 →
Tamanho: 8429
* ruda - Ruda Sumé Tente de Moura - Sócio da [http://www.haxent.com.br Haxent]
''A explicação do problema está no fim da conversa abaixo. Deixa eu explicar aqui para ser mais fácil de acompanhar. O problema é detectar a condição de vitória de um jogo que é jogado em um tabuleiro 4x4 com 16 peças, cada uma com quatro propriedades (alta/baixa, azul/amarela, furada/normal, redonda/triangular) [[http://www.zorked.net/woodbox-bruder-rad.jpg|[peças]]] [[http://www.zorked.net/quadro-working.jpg|[tabuleiro]]]. O jogo acaba quando um jogador monta uma quadra com pelo menos uma característica igual: todas altas, todas baixas, todas azuis, etc. As peças são representadas por tuplas com quatro valores 0/1: (0, 0, 0, 0), (0, 0, 0, 1), etc. A idéia é detectar se uma linha do jogo (portanto, uma tupla de peças) preencheu a condição de fim de jogo. Isso deve ser feito em uma unica expressão com estilo funcional, e de forma genérica - ou seja, que valesse para um jogo com NxN casas e peças com N propriedades. -- Guilherme''
<bruder> https://haxent.dyndns.org/~bruder/quadro-working.jpg <bruder> http://www.zorked.net/quadro-working.jpg
''Faltou apenas verificar o caso dos atributos serem todos zero: [x for x in zip(*line) if sum(x) == len(x) or sum(x) == 0]. Problema menor, certamente porque eu não expliquei com clareza. sum() só existe em Python 2.3, mas sum(x) é equivalente a reduce(lambda a,b: a+b, x) -- Guilherme''
''Ok, eu resolvi aprender direito isso tudo e escrevi o artigo PythonFuncional. -- Rudá''
''O problema de performance a que me referi no texto acima era realmente causado pela excessiva alocação de memória para inúmeras imagens 800x600 32 bits (24 bits de cor e 8bits de alpha channel). Mudando tudo p/ imagens pequenas consegui um bom ganho de performance. Vou anunciar/publicar o jogo aqui como exemplo de uso da pygame assim que matar uns bugs óbvios -- Bruder''