|
TUhjnbcbe
- 新手上路
- 1
- 12
- 2020-03-27
|
1#
t
T
发表于 2025-07-21 09:43
|只看楼主
北京治疗白癜风最好的医院 http://www.pfzhiliao.com/今天让我们来绘制积木吧 绘制的方式很特别噢,要充分理解! 设置积木的模板 44.TEMPLATEWIDTH=5 45.TEMPLATEHEIGHT=5 46. 47.S_SHAPE_TEMPLATE=[[....., 48......, 49...OO., 50..OO.., 51......], 52.[....., 53...O.., 54...OO., 55....O., 56......]] 57. 58.Z_SHAPE_TEMPLATE=[[....., 59......, 60..OO.., 61...OO., 62......], 63.[....., 64...O.., 65..OO.., 66..O..., 67......]] 68. 69.I_SHAPE_TEMPLATE=[[..O.., 70...O.., 71...O.., 72...O.., 73......], 74.[....., 75......, 76.OOOO., 77......, 78......]] 79. 80.O_SHAPE_TEMPLATE=[[....., 81......, 82..OO.., 83..OO.., 84......]] 85. 86.J_SHAPE_TEMPLATE=[[....., 87..O..., 88..OOO., 89......, 90......], 91.[....., 92...OO., 93...O.., 94...O.., 95......], 96.[....., 97......, 98..OOO., 99....O., ......], .[....., ...O.., ...O.., ..OO.., ......]] . .L_SHAPE_TEMPLATE=[[....., ....O., ..OOO., ......, ......], .[....., ...O.., ...O.., ...OO., ......], .[....., ......, ..OOO., ..O..., ......], .[....., ..OO.., ...O.., ...O.., ......]] . .T_SHAPE_TEMPLATE=[[....., ...O.., ..OOO., ......, ......], .[....., ...O.., ...OO., ...O.., ......], .[....., ......, ..OOO., ...O.., ......], .[....., ...O.., ..OO.., ...O.., ......]] 我们的程序需要知道积木的形状是如何塑造的,包括积木所有旋转的可能性。为此,我们要建立字符串的列表。字符串的内部列表会呈现单一的旋转,像这样: [....., ....., ..OO., .OO.., .....] 将编写代码的其余部分,以便它解释一个如上所述的字符串列表,为了表示哪里有空白用点表示和方块用O表示: 分割多行的“代码行” 你可以看到该列表分布在编辑器中的许多行中。这是完全有效的Python,因为Python解释器意识到列表未完成,直到看到]关闭方括号。缩进并不重要,因为Python知道您在列表中间的新的模块中不会有不同的缩进。以下代码正常工作: spam=[hello,3.14,world,42,10,fuzz] eggs=[hello,3.14, world ,42, 10,fuzz] 显然,如果我们将所有的项目放进列表,或者在列表中放进像垃圾邮件一样只有一行项目,egg列表的代码会读起来津津有味. 通常,在文件编辑器中将多行代码分割成每一小行将需要在行尾添加一个\字符。\告诉Python,“这段代码延续到下一行”。这个斜线最初是在滑动拼图中的isValidMove()模块中出现) 我们将会通过创建字符串列表来建立“template”形状数据结构,之后通过变量储存如S_SHAPE_TEMPLATE。len(S_SHAPE_TEMPLATE)能表示S形状的积木有多少旋转方向的可能性。S_SHAPE_TEMPLATE[0]表示S形状第一种旋转可能性。第47至行将为每个形状创建“template”数据结构。 想象一下,每个可能的积木放在一个小型的5x5的底板中,积木会通过在底板上填满方块来呈现形状。 S_SHAPE_TEMPLATE[0][2][2]==O S_SHAPE_TEMPLATE[0][2][3]==O S_SHAPE_TEMPLATE[0][3][1]==O S_SHAPE_TEMPLATE[0][3][2]==O 如果我们将形状放在纸上,你会看见如下的图片: 我们如何将诸如四格拼图中的积木作为Python值的代码输入(如字符串和列表)。TEMPLATEWIDTH和TEMPLATEHEIGHT常量简单设置每个形状旋转所需多少行和多少列。(模型基本上是5*5) .SHAPES={S:S_SHAPE_TEMPLATE, .Z _SHAPE_TEMPLATE, .J:J_SHAPE_TEMPLATE, .L _SHAPE_TEMPLATE, .I:I_SHAPE_TEMPLATE, .O:O_SHAPE_TEMPLATE, .T _SHAPE_TEMPLATE} 形状的变量像是一本字典里面储藏着所有不同的模型。因为每个模板都具有单个形状所有可能的旋转方式,这就意味着形状变量包含所有可能的形状的所有可能的旋转。 这将是包含我们游戏中所有形状数据的数据结构。 (未完待续)
|