Learn Python The Hard Way学习(52) - 开始你的web游戏
书已经接近尾声了。最后的练习对你是一个挑战。当你完成以后,你就是一个能力不错的 Python 初学者了。你还需要多读一些书,多写一些程序,不过你已经具备进一步学习的技能了。只是时间、动力、以及资源的问题了。
在这个练习中,我们不会去创建一个完整的游戏,但是是我们会为习题 43中的游戏创建一个引擎,让这个游戏能够在浏览器中运行起来。这会涉及到重构习题 43中的游戏,将习题 47中的架构混合进来,添加自动测试代码,最后创建一个可以运行游戏的 web 引擎。
这个练习很庞大。我预测你要花一周到一个月才能完成它。最好的方法每晚上完成一点,在进行下一步之前确认上一步有正确完成。
重构43课的游戏你已经在两个练习中修改了 gothonweb 项目,这节习题中你会再修改一次。这种修改的叫做“重构”,或者用我喜欢的讲法来说,叫“修补”。重构指的是清理旧代码或者为旧代码添加新功能的过程。你其实已经做过这样的事情了,只不过你不知道而已。这是写软件过程的第二个自然属性。
我们要做的是将习题 47中的房间地图和习题 43中的游戏归并到一起,创建一个新的游戏架构。包含相同的内容,只是结构变化了。
第一步是将 ex47/game.py 的内容复制到 gothonweb/map.py中,然后将 tests/ex47_tests.py 的内容复制到 tests/map_tests.py 中,然后再次运行 nosetests,确认他们还能正常工作。
复制完ex47的代码后,我们要把ex43的地图放进去,我简单的完成了框架,你需要完成整个map.py和map_tests.py文件。
首先,地图的基本结构是这样的:
$def with (room)<h1> $room.name </h1><pre>$room.description</pre>$if room.name == "death": <p><a href="/">Play Again?</a></p>$else: <p> <form action="/game" method="POST"> - <input type="text" name="action"> <input type="SUBMIT"> </form> </p>