<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Me comentaron en las birras posteriores a la charla que enviase a la
lista lo que comentamos de:<br>
<br>
<b><a href="https://www.checkio.org/">checkio.org</a></b> Prácticas
de programación en python "gamificadas"<br>
En esta web te proponen una serie de ejercicios y te dan puntos por:<br>
<ul>
<li>Resolver el ejercicio. Para ello has de pasar los test (No es
TDD pero te va acostumbrando la mente).<br>
</li>
<li>Publicar tu implementación de la solución.</li>
<li>Revisar y valorar el código de otros. Practicando el "peer
review" comentando las mejoras posibles y valorando (+1/-1).</li>
</ul>
<p>Cuando resuelves el ejercicio tienes acceso a todas las
soluciones publicadas, las más valoradas suelen ser bastante
interesantes.<br>
Las valoraciones positivas que recibas (<a
href="https://www.checkio.org/blog/guido-van-rossums-code-review-1/">quizás
de Guido van Rossum</a>) también añaden puntos. (Los comentarios
también se valoran).<br>
</p>
Si quieres empezar a acostumbrar tus dedos a python, pero tu entorno
laboral no es python-friendly es una buena opción.<br>
<br>
<b><a href="https://empireofcode.com/">empireofcode.com</a></b> La
misma empresa de checkio.org ha sacado una beta de un juego de
estrategia con desafíos de programación. Detalles del juego:<br>
<ul>
<li>Por ahora solo funciona en chrome/chromium.</li>
<li>Estrategia estilo Age of empires, warcraft, ... pero por ahora
solo tiene la pantalla de donde está tu base (la de los enemigos
es igual).</li>
<li>Tus unidades se pueden mejorar de la forma tradicional
(gastando los recursos recolectados) o mediante la resolución de
puzzles.</li>
<li>Al escoger tienes que escoger el bando de Python (o de
javascript), pero ya no lo puedes cambiar después. En el futuro
tienen planeado batallas entre los bandos.</li>
<li>Cuando atacas otra base el comportamiento de tus tropas está
programado en python. Usando los objetos del juego. Código por
defecto de una unidad de asalto:<br>
</li>
</ul>
<div style="" class="markdown-here-wrapper"
data-md-url="Thunderbird">
<pre style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;font-size: 1em; line-height: 1.2em;margin: 1.2em 0px;"><code style="font-size: 0.85em; font-family: Consolas,Inconsolata,Courier,monospace;margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap; border: 1px solid rgb(234, 234, 234); background-color: rgb(248, 248, 248); border-radius: 3px; display: inline;white-space: pre; overflow: auto; border-radius: 3px; border: 1px solid rgb(204, 204, 204); padding: 0.5em 0.7em; display: block ! important;display: block; overflow-x: auto; padding: 0.5em; color: rgb(51, 51, 51); background: rgb(248, 248, 248) none repeat scroll 0% 0%;" class="hljs language-python"><span style="color: rgb(51, 51, 51); font-weight: bold;" class="hljs-keyword">from</span> battle <span style="color: rgb(51, 51, 51); font-weight: bold;" class="hljs-keyword">import</span> commander
unit_client = commander.Client()
<span class="hljs-function"><span style="color: rgb(51, 51, 51); font-weight: bold;" class="hljs-keyword">def</span> <span style="color: rgb(153, 0, 0); font-weight: bold;" class="hljs-title">attack_nearest</span><span class="hljs-params">(data=None, *args, **kwargs)</span>:</span>
nearest_enemy = unit_client.ask_nearest_enemy()
unit_client.do_attack(nearest_enemy[<span style="color: rgb(221, 17, 68);" class="hljs-string">"id"</span>])
unit_client.when_item_destroyed(nearest_enemy[<span style="color: rgb(221, 17, 68);" class="hljs-string">"id"</span>], attack_nearest)
attack_nearest()
</code></pre>
<div
title="MDH:fn5+IHB5dGhvbjxicj5mcm9tIGJhdHRsZSBpbXBvcnQgY29tbWFuZGVyPGJyPnVuaXRfY2xpZW50ID0gY29tbWFuZGVyLkNsaWVudCgpPGJyPjxicj5kZWYgYXR0YWNrX25lYXJlc3QoZGF0YT1Ob25l
LCAqYXJncywgKiprd2FyZ3MpOjxicj7CoMKgwqAgbmVhcmVzdF9lbmVteSA9IHVuaXRfY2xpZW50
LmFza19uZWFyZXN0X2VuZW15KCk8YnI+wqDCoMKgIHVuaXRfY2xpZW50LmRvX2F0dGFjayhuZWFy
ZXN0X2VuZW15WyJpZCJdKTxicj7CoMKgwqAgdW5pdF9jbGllbnQud2hlbl9pdGVtX2Rlc3Ryb3ll
ZChuZWFyZXN0X2VuZW15WyJpZCJdLCBhdHRhY2tfbmVhcmVzdCk8YnI+PGJyPmF0dGFja19uZWFy
ZXN0KCk8YnI+fn5+"
style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0;"></div>
</div>
<br>
<br>
Supe de su existencia mediante <a
href="http://podcastinit.podbean.com/e/episode-18-liza-avramenko-on-checkio-and-empire-of-code/">un
episodio de podcast.__init__</a>.<br>
<br>
Si alguien se vicia con ello que avise ;)<br>
<br>
<br>
</body>
</html>