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>
下面是templates/you_diad.html的代码:<h1>You Died!</h1>
<p>Looks like you bit the dust.</p><p><a href="/">Play Again</a></p>
然后你需要做下面这些事情:
- 运行tests/app_tests.py测试你的游戏,由于session的存在你可能只要点击几下游戏,但是基本的测试还是要做的。运行游戏前先删除sessions文件夹。运行python bin/app.py,测试你的游戏吧。
最后的练习你是不是觉得一下接收了很多信息?对的,我希望你在学习技能的时候能够自己修改一些东西。完成这个练习后,我将给你最后一个你要自己完成的练习。你会发现你的初始版本比较烂,你的任务就是完善你的游戏:
- 修复所有的Bug。改进你的自动化测试,让它能够测试所有东西,包括浏览器能测试的。让你的HTML看起来更漂亮。研究一下登陆系统,让用户能登陆,并且记录他们的高分。完善你的游戏地图,做得更大更全。给用户一个帮助系统,让用户知道在房间里能干什么添加其他你能想到的东东。创建多个地图,让用户可以选择哪个地图游戏。最后,使用48和49章的知识改进输入系统。你已经有了大部分代码,只要和游戏引擎合并就好。