编程语言应用

注册

 

发新话题 回复该主题

少儿编程分享码趣君教你用Python编写 [复制链接]

1#
北京治疗白癜风最好的医院 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}

形状的变量像是一本字典里面储藏着所有不同的模型。因为每个模板都具有单个形状所有可能的旋转方式,这就意味着形状变量包含所有可能的形状的所有可能的旋转。

这将是包含我们游戏中所有形状数据的数据结构。

(未完待续)

分享 转发
TOP
发新话题 回复该主题