﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-英雄哪里出来-随笔分类-Pygame</title><link>http://www.cppblog.com/menjitianya/category/16624.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 25 Jun 2011 14:57:20 GMT</lastBuildDate><pubDate>Sat, 25 Jun 2011 14:57:20 GMT</pubDate><ttl>60</ttl><item><title>pygame 游戏 英雄梦II【资料片】1  利剑无痕[v1.00]</title><link>http://www.cppblog.com/menjitianya/archive/2011/06/24/149391.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Fri, 24 Jun 2011 08:18:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/06/24/149391.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/149391.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/06/24/149391.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/149391.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/149391.html</trackback:ping><description><![CDATA[<p>【开发信息】<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本游戏是采用Python的Pygame包开发而成，游戏的模式是射击类型，同时添加了RPG游戏特有的情节模式。<br /><br />【版本信息】<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v1.00<br /><br />【游戏简介】</p>
<p>&nbsp;&nbsp;&nbsp; 游戏的主要操作是键盘，但是在确认的时候也可以采用鼠标，鼠标还可以进行人物菜单栏<br />的Tip的查看，主角主要有生命、魔法、灵魂、攻击力、防御力、速度等几项属性。<br />&nbsp;&nbsp;&nbsp; 生命值&nbsp;&nbsp;&nbsp; 传说中的血，中国古代角色扮演游戏里大多将它称为&#8220;精&#8221;。<br />&nbsp;&nbsp;&nbsp; 查克拉&nbsp;&nbsp;&nbsp; 中国古代游戏中所谓的内力，小时候智力卡游戏中的MP，决定你进行攻击时候同时释放的武器数目。<br />&nbsp;&nbsp;&nbsp; 灵魂&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 每次生命值达到负值的时候可以通过释放一个灵魂来将血补满。&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 攻击力&nbsp;&nbsp;&nbsp; 主角自身攻击力和当前武器攻击力的总和，影响对敌人的伤害值。<br />&nbsp;&nbsp;&nbsp; 防御力&nbsp;&nbsp;&nbsp; 主角的自身防御，影响主角受到攻击时的伤害值。<br />&nbsp;&nbsp;&nbsp; 速度&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 决定主角的移动速度和闪避率。<br />&nbsp;&nbsp;&nbsp; 必杀技&nbsp;&nbsp;&nbsp; 可以作用于整个游戏世界的无敌必杀技，可以理解为&#8220;大招&#8221;。<br />&nbsp;&nbsp;&nbsp; 得分&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 每打到敌人一次可记一分，打死敌人记三分。当得分积满2000的时候可以换赎一个灵魂。<br /><br />【游戏操作】<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;方向键&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;控制人物行走<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;左Ctrl键&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 发射子弹 + 确认操作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 空格键&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;释放大招（必杀技）<br /><br />【几点说明】<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本游戏部分资源取自网络，部分由作者原创，所以请勿将其用于商业用途，否则后果自负。<br /><br />【试玩链接】<br /><a href="http://code.google.com/p/sguzty/downloads/list">http://code.google.com/p/sguzty/downloads/list</a><br /><br /><span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="line-height: 21px; font-family: Tahoma, Verdana, STHeiTi, simsun, sans-serif; color: rgb(51,51,51); font-size: 14px" class="Apple-style-span"> </p>
<p style="padding-bottom: 0px; margin: 0px 0px 0.8em; padding-left: 0px; padding-right: 0px; padding-top: 0px">【联系作者】</p>
<p style="padding-bottom: 0px; margin: 0px 0px 0.8em; padding-left: 0px; padding-right: 0px; padding-top: 0px">博客:www.cppblog.com/menjitianya</p>
<p style="padding-bottom: 0px; margin: 0px 0px 0.8em; padding-left: 0px; padding-right: 0px; padding-top: 0px">&nbsp;邮箱:menjitianya2007@163.com</p>
<p style="padding-bottom: 0px; margin: 0px 0px 0.8em; padding-left: 0px; padding-right: 0px; padding-top: 0px">&nbsp;QQ:277055227 &nbsp;周天涯 （英雄哪里出来）</p>
<p></span></span><br />【部分截图】<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/menjitianya/0.png" width="640" longdesc="" height="480" /><br /><br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/menjitianya/1.png" width="640" longdesc="" height="480" /><br /><br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/menjitianya/3.png" width="640" longdesc="" height="480" /><br /><br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/menjitianya/6.png" width="640" longdesc="" height="480" /><br /><br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/menjitianya/7.png" width="640" longdesc="" height="480" /><br /><br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/menjitianya/5.png" width="640" longdesc="" height="480" /><br /><br /><br /><br /></p><img src ="http://www.cppblog.com/menjitianya/aggbug/149391.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-06-24 16:18 <a href="http://www.cppblog.com/menjitianya/archive/2011/06/24/149391.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pygame游戏开发 之五</title><link>http://www.cppblog.com/menjitianya/archive/2011/05/01/145462.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 01 May 2011 08:40:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/05/01/145462.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/145462.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/05/01/145462.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/145462.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/145462.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Pygame游戏开发之五小试牛刀大部分游戏都会对图像文件进行加密，这样你就很难看到它的图片信息，游戏就更加添加了神秘感。有加密自然有解密，所谓山外青山楼外楼，再高的加密手段都可以被破解，加密只是提高技术门槛，让一部分人看不到你的图片资源。在进行加密之前，让我们首先把文件的结构组织一下，用文件夹来管理各类文件。root/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/05/01/145462.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/145462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-05-01 16:40 <a href="http://www.cppblog.com/menjitianya/archive/2011/05/01/145462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pygame游戏开发 之四</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/28/145179.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Wed, 27 Apr 2011 18:19:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/28/145179.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/145179.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/28/145179.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/145179.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/145179.html</trackback:ping><description><![CDATA[<p style="TEXT-ALIGN: center; LINE-HEIGHT: 150%; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=center><strong style="mso-bidi-font-weight: normal"><span style="LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; FONT-SIZE: 16pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体" lang=EN-US>Pygame</span></strong><strong style="mso-bidi-font-weight: normal"><span style="LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; FONT-SIZE: 16pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">游戏开发之四</span></strong><span style="LINE-HEIGHT: 150%; FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: center; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=center><strong style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 16pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初学乍练</span></strong><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 16pt" lang=EN-US><o:p></o:p></span></strong></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Pygame</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中除了</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Group</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Sprite</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的容器类，还有一些继承自</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Group</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的容器类，它们分别是</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderUpdates</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>OrderedUpdates</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>LayeredUpdates</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>LayeredDirty</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite.RenderUpdates</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">继承自</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite.Group</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，它相对于</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Group</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的不同点就是重写了</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Group</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>draw</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数，原型是：</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderUpdates.draw(surface) : return Rect_list</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">它将所有它包含的</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Sprites</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">绘制到</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>surface</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上，和</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Group.draw</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一样。但是这个函数返回了一系列的屏幕上发生改变的矩形列表，这个矩形列表应该被传递到</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.display.update</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中去。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite.OrderedUpdates</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">继承自</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite.RenderUpdates</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，它绘制</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Sprite</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候是以</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Sprite</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">被添加时的顺序来绘制的。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite. LayeredUpdates</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">绘制的方式和</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite.OrderedUpdates</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类似，只是它引入了图层的概念。你可以通过</span><span lang=EN-US>'default_layer'</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设置默认图层，或者一个整数来表示图层。如果添加的</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Sprite</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自己有一个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>layer</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的图层属性那么就是用这个，否则在添加</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Sprite</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候，在</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite. LayeredUpdates(*sprites, **kwarges)</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>**kwarges</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">参数中对</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>layer</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性进行设置，如果两者都没有设置，那么系统将采用默认图层。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite. LayeredDirty</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">继承自</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite.LayeredUpdates</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，它是</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>DirtySprites</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的专用容器类，继承了</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Group</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的所有操作。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">因为我们需要用到</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>DirtySprite</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，所以之前我们用到的所有</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Group</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类都替换成</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>LayeredDirty</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，而且为了便于扩展，我们将</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>LayeredDirty</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">再封装一层，以便添加新的成员函数。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>class gameManager(pygame.sprite.LayeredDirty) :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>def __init__(self, selfdata) :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pygame.sprite.LayeredDirty.__init__(self)<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>def keyevent(self, keypressed) :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for son in self.sprites() :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>son.keyevent(keypressed)<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义一个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>gameManager</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类，它继承了</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.sprite.LayeredDirty</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，并且添加一个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>keyevent</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的成员函数，用于对键盘事件进行处理，它的操作很简单，调用它容器里的元素的</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>keyevent</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数，它容器里的元素有可能是另一个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>gameManager</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、或者是一个单纯的</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderObject</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。如果是</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>gameManager</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的话就会进行递归调用，直到是</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderObject</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，所以我们还要给</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderObject</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义一个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>keyevent</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数，像这样：</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>class RenderObject(pygame.sprite.DirtySprite) :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&#8230; &#8230;<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>def keyevent(self, keypressed) :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>pass<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们把</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>keyevent</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">定义在基类</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderObject</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，并且用</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pass</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示它什么都不做，然后等着子类去实现它。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>class Player(RenderObject) :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&#8230; &#8230;<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>def keyevent(self, keypressed) :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>left_or_right = keypressed[K_RIGHT] - keypressed[K_LEFT]<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>up_or_down<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>= keypressed[K_DOWN] - keypressed[K_UP]<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>self.move(left_or_right, up_or_down)<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Player</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderObject</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的一个子类，我们可以用以上的语句实现</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Player</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的行走，</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>keypressed</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其实是</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>pygame.key.get_pressed()</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，用于获取当前键盘的某个键是否按下的映射表。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接下来我们用之前的模块来写一个游戏的背景，利用图</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>4-1</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的资源拼接出图</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>4-2</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的图像，并且让它在屏幕</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Y</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">轴方向进行滚屏操作。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: center; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=center><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/menjitianya/smallwater.png" width=256 height=256><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: center; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=center><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">图</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US> 4-1<o:p></o:p></span></p>
<p style="TEXT-ALIGN: center; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=center><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/menjitianya/water.jpg" width=358 height=480><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-ALIGN: center; MARGIN: 0cm 0cm 0pt" class=MsoNormal align=center><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">图</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US> 4-2<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">首先要明确的一点就是图片的四个方向必须是可拼接的，也就是说用</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>9</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">张相同的图片拼成一个九宫格，用肉眼是分辨不出它们是九张图片的，看到的是一个完整的图像。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们定义一个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderBack</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类：</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>class RenderBack(RenderObject) :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>def __init__(self, selfdata) :<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>RenderObject.__init__(self, selfdata)<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>do_init()<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21.75pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>def update(self) :<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21.75pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>RenderObject.update(self)<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>do_update()<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">首先确定做这么一个背景需要用到的数据，背景的宽高是肯定要的，而且要求它在</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Y</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方向做滚屏操作，所以这个背景的实际的高肯定要比屏幕上显示高还要长（我们假设他是图</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>4-1</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">图片高的整数倍），那么我们用一个四元组</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>(x, y, z, w)</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来表示需要知道的数据：</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>x : </span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">背景图资源在</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>images[]</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的索引号</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>y : </span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生成图的宽</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>z : </span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生成图的高</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>w: </span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生成图在竖直方向的原图图块的数量</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个四元组是作为</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>selfdata</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">被传到</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>__init__</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数中进行初始化的，并且可以在配置文件中修改它的值。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">因为最后的图像要进行</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Y</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方向的滚屏操作，所以我们还需要定义一个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Y</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方向的偏移量，以便每次绘制的时候进行偏移操作。这样初始化就可以这么写：</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.image<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>= pygame.Surface( (int(selfdata[1]), int(selfdata[2])) )<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.rect<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>= self.image.get_rect()<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.source_rect <span style="mso-spacerun: yes">&nbsp;&nbsp;</span>= self.image.get_rect()<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.backlen<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>= int(selfdata[3]) <o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.backimage<span style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span>= RenderObject( [ selfdata[0] ] )<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.top_offset<span style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;</span>= self.backimage.image.get_height() * self.backlen - self.rect.height<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里需要注意的是，</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>LayeredDirty</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在对</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>DirtySprite</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行绘制的时候总是对</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>sprite.image</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的内容进行绘制的，所以在</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderBack</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">里我们需要额外定义一个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>backimage</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来对原图进行缓存，然后通过循环将它</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>blit</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">到</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>image</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上。这样</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderBack</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的拥有者才能找到</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>image</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将它绘制出来。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对于</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>update</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数，每一帧我们需要更新</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.top_offset</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Y</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方向的偏移量，并且根据它更新</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>image</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">图像。具体实现如下：</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>def update(self) :<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>RenderObject.update(self)<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>xstep = self.backimage.image.get_width()<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>ystep = self.backimage.image.get_height()<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.top_offset -= 3<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>y_offset = self.top_offset % ystep<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>for x in range(0, self.rect.width + xstep, xstep) :<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.image.blit( self.backimage.image, (x, 0), ((0, y_offset), (xstep, ystep - y_offset) ) )<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>for y in range(ystep - y_offset, self.rect.height + ystep, ystep) :<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>for x in range(0, self.rect.width + xstep, xstep) :<o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt 42pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.image.blit( self.backimage.image, (x, y), ((0,0), (xstep, ystep) ) )<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p>&nbsp;</o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>(xstep, ystep)</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是原图的尺寸，每一帧我们对</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.top_offset</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进行自减操作（效果就是让最后的图像有一种向上延伸的感觉，也就是滚屏的效果）。</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后我们分</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>x</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方向和</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>y</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方向进行讨论，因为</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>x</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方向没有滚屏操作，所以只要用现有的图片填充整个宽度即可，比如原图是</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>W=100</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个像素，需要填充的背景是</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>D=250</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个像素，那么水平方向至少需要用到</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>[ (D + W &#8211; 1) / W ] = 3</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">张原图（</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>[x]</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示比</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>x</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">小的最大整数，即取下整）。对于竖直方向，因为有滚屏操作，所以有两部分组成：第一排（从原图的</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>y</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方向某个位置粘贴过来的）以及非第一排（总是粘贴原图）。将</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>self.top_offset </span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US> ystep </span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">取模，得到的是需要绘制图像的最上方在原图的偏移量，通过它可以绘制第一排，然后再调用两层</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>for</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">循环绘制后面几排。这样随着时间的推移，一个</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US>Y</span><span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方向的滚屏效果就出来了。（未完待续）</span><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p></o:p></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt" lang=EN-US><o:p>&nbsp;</o:p></span></p>
<img src ="http://www.cppblog.com/menjitianya/aggbug/145179.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-28 02:19 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/28/145179.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pygame游戏开发 之三</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/26/145013.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Mon, 25 Apr 2011 17:07:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/26/145013.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/145013.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/26/145013.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/145013.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/145013.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Pygame游戏开发之三初出茅庐&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pygame中除了Sprite，还有一个DirtySprite，它是由Sprite派生出来的绘制效率更高的精灵，较之Sprite多了以下几个属性：dirty =&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果设为1，则进行...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/26/145013.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/145013.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-26 01:07 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/26/145013.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pygame游戏开发 之二</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/24/144913.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 24 Apr 2011 11:55:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/24/144913.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/144913.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/24/144913.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/144913.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/144913.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Pygame游戏开发之二初窥门径游戏中需要用到很多对象，比如人物、野怪、建筑物、UI控件等等，他们的行为不尽相同，但是总有那么些共同点，如果将所有的东西都封装成各自的类难免会写上很多重复的代码，因为两个对象如果具有相同的行为（比如人物和野怪都可以行走）如果写两个move()函数，以后改起来就要修改两个地方，不容易维护而且扩展很麻烦，但是人物和野怪又有其它不相同的行为，比如技能之类的不同...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/24/144913.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/144913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-24 19:55 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/24/144913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pygame游戏开发 之一</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/23/144866.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sat, 23 Apr 2011 12:39:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/23/144866.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/144866.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/23/144866.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/144866.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/144866.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Pygame游戏开发之一初涉红尘&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本人是个游戏爱好者，同样是个游戏开发爱好者，最近开始学习Pygame，Pygame是 跨平台的 Python模块（包括Win32、Unix、Mac、Android等等），主要包含图像和声音，专为电子游戏设计。所有需要的游戏功能和理念都完全简化为游戏逻辑本身，这样就大大提高了开发效率。...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/23/144866.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/144866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-23 20:39 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/23/144866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>