首页 >> 技术 >> 程序员奶爸选修课——带娃一起写游戏

程序员奶爸选修课——带娃一起写游戏

2025-08-03 12:16:00

)

self.t.right(90)

self.t.end_fill()

update()

drawCenteredBox 是 穿越时空类 Maze 的再加员法则,self 指的就是穿越时空类本身,可以暂时性将其理解为函数调用 self.t 是一个 Turtle 模块实例,可以理解再加版描画 up 法则对此摇动墨水 goto 法则的发挥作用是漂移到自行决定的所在位置,这里所需漂移到自行决定所在位置的左下角,所以各自等于了 0.5(这里来作了极坐标倍数再生,后面不会有明确指单单) color 对此设粉红色,两个给定分别是笔的粉红色和填入粉红色 setheading 对此让墨水朝上,即将墨水紧贴 90 度 down 对此落下墨水,意思是随后的漂移相当于素描 begin_fill 对此准备填入,也就是它不会把从呼叫起到呼叫 end_fill 为止所素描的区域来作填入 然后是循环系统四次,用来素描每条,循环系统内,每次向前(墨水紧贴)素描一个各单位,右侧转 90 度,这样就素描好了一个每条 end_fill 即为填入近期素描的每条 update 对此造就新一下插左图区域

到底这个处理过程,是不是和男孩加工素描差不多!

那时候遍历整个穿越时空矩阵,不断呼叫 drawCenteredBox 就可以素描单单穿越时空了:

真实感

标识符如下:

def drawMaze(self):

for y in range(self.rowsInMaze):

for x in range(self.columnsInMaze):

if self.mazelist[y][x] == 1:

self.drawCenteredBox(x + self.xTranslate, -y + self.yTranslate, 'tan')

rowsInMaze、columnsInMaze 对此穿越时空矩阵的行和列 tan 为沙丘迷彩色[2]的粉红色名称 丢下过穿越时空

穿越时空素描好了,如何丢下过单单呢?

可以可先问问男孩,让他打算打算办法。

构建思南路也很恰当,就是超一个一段距离丢下,如果是墙壁,就换一个一段距离,如果不是墙壁,就继续丢下回头,如此往复……

但是,这里可以和男孩来作个先于,比如穿越时空不大的时候,记不住丢下回哪些南路怎么办?

聚焦了一条南路,丢下大意,返回后,不记得丢下回哪些南路,这是非常凶险的事情,如果只不过法则可以也许丢下回的南路,就好了。

这里我给弟弟讲了一下忒修斯大战牛头怪[3]的古希腊神话传问道,借鉴他打算单单好的法则。

如何用标识符构建呢,只要在穿越时空矩阵种,标示单单一下丢下回的南路就可以了:

PART_OF_PATH = 0

OBSTACLE = 1

TRIED = 3

DEAD_END = 4

def search(maze, startRow, startColumn): # 从自行决定的点开始抓取

if maze[startRow][startColumn] == OBSTACLE:

return False

if maze[startRow][startColumn] == TRIED:

return False

if maze.isExit(startRow, startColumn):

maze.updatePosition(startRow, startColumn, PART_OF_PATH)

return True

maze.updatePosition(startRow, startColumn, TRIED)

found = search(maze, startRow-1, startColumn) or

search(maze, startRow, startColumn-1) or

search(maze, startRow+1, startColumn) or

search(maze, startRow, startColumn+1)

if found:

maze.updatePosition(startRow, startColumn, PART_OF_PATH)

else:

maze.updatePosition(startRow, startColumn, DEAD_END)

return found

因为用到了正则表达式方式将,所以标识符比较引言,我们来到底:

PART_OF_PATH、OBSTACLE、TRIED、DEAD_END 是四个函数调用,分别对此穿越时空矩阵中都的通南路,墙壁,聚焦过的南路和死南路 search 法则用于聚焦穿越时空,接受一个穿越时空对象,和起始所在位置 然后到底自行决定的所在位置是否为墙壁、或者是丢下回的,以及是否是单单口处 然后继续聚焦,讲自行决定的所在位置标示单单为已丢下回 接下来朝四个一段距离聚焦,分别是像北端、向东、向南、向东 每个一段距离的聚焦都是正则表达式的呼叫 search 法则 如果聚焦的结果是找单单了单单口处,就将近期的所在位置标示单单为定线,否则标示单单为死南路

这里还所需到底 updatePosition 法则的构建:

def updatePosition(self, row, col, val=None):

if val:

self.mazelist[row][col] = val

self.moveTurtle(col, row)

if val == PART_OF_PATH:

color = 'green'

elif val == OBSTACLE:

color = 'red'

elif val == TRIED:

color = 'black'

elif val == DEAD_END:

color = 'red'

else:

color = None

if color:

self.dropBreadcrumb(color)

def moveTurtle(self, x, y):

self.t.up()

self.t.setheading(self.t.towards(x+self.xTranslate, -y+self.yTranslate))

self.t.goto(x+self.xTranslate, -y+self.yTranslate)

def dropBreadcrumb(self, color):

self.t.dot(color)

updatePosition 法则本身不十分复杂,首可先对穿越时空矩阵来作标示单单,然后将墨水漂移到自行决定的点,此后问道明标示单单的倍数,在自行决定的点上描画点 漂移的法则是 moveTurtle,首可先摇动墨水,然后将墨水转向将要漂移过去的点 Turtle 的 towards 法则不会量化一个墨水近期点到自行决定点二者之间的一个夹角,发挥作用是让墨水转向要漂移过去的点,其中都 xTranslate 和 yTranslate 是在极矢量中都左图层点的偏移量(后面不会有明确指单单) Turtle 的 dot 法则发挥作用是素描一个点

看一下真实感:

丢下过穿越时空

造就大的同样

当男孩看到自己来作的穿越时空,被小蜈蚣丢下过来时,别提有多开心了。

不过,没多久,他就打算要造就十分复杂的穿越时空,有多条分支的穿越时空。

看来有加工的方式将有点困难,而且枯燥。所需让应用程序自动生再加穿越时空。

本来打算大干一场,马上打算到早先 豆豆 写到的一篇关于穿越时空书评[4],找来一看,刚好有穿越时空生再加借鉴式,太好了。

关于如何动态生再加穿越时空,请单单席 豆豆的书评,其中都有简要明确指单单

统计分析标识符此后,将其中都的穿越时空类植入过来,生再加的结果二者之间导入到笔者写到的穿越时空类中都,将穿越时空规模设为 100 X 100,震撼了:

巨型穿越时空

看着小蜈蚣在巨大的穿越时空中都蹒跚,还只不过莫名的伤心~

有了有了穿越时空生再加用以,就很多玩意的了:

如何让蜈蚣造就快的找单单单单南路 如何让蜈蚣随机单单那时候穿越时空中都 如何动态设穿越时空的单单入口 ……

对这些关键问题,我们一再来作了构建,男孩在整个处理过程中都,积极参与,好像因为好的打算法而手舞足蹈,不亦乐乎……

感兴趣的读者可以仍要标签,获得源代码,研究一下新技术,期许与你互动。

关于极矢量设

前面留了几个坑,是关于 Turtle 极矢量的,这里统一来作下明确指单单。

第一个关键问题,极坐标各单位

默认情况下,Turtle 的极坐标各单位是一个左图层,如果要可视揭示的华,所需量化单单来我们用到的单元相当于多少个左图层,然后每次量化极坐标时都得考虑到这个倍数,当想像区域变为时还得调整这个最大倍数,非常麻烦,而且容易单单错。

所以 Turtle 缺少了一个设我们自己极坐标各单位的法则 setworldcoordinates,它接受四个给定,分别是极矢量中都,左下角的点 x极坐标,y极坐标,和 右上角的 x极坐标、y极坐标。

如果将左下角设为 (-5, -5),右上角设为 (5, 5),那么 Turtle 就不会将极坐标原点设在摄像头中都心,并将摄像头分割再加 10 X 10 的方块,每个块的周长,相当于一个极坐标各单位,也就是问道,当我们问道将墨水漂移到 (3, 4) 这个极坐标点时,Turtle 就不会从摄像头中都心右侧漂移三个各单位,再向上漂移4个各单位。

这样就非常方便使用了,无论摄像头尺寸如何,左图层尺寸如何,Turtle 上不会按照我们的指令,来作单单合理的响应。

另一个关键问题是 两个偏移量 xTranslate和 yTranslate

分别是这样量化赢取的:

self.xTranslate = -columnsInMaze/2

self.yTranslate = rowsInMaze/2

存在的意义就是从行和列倍数中都,再生为 Turtle 极矢量的倍数,比如再一对此法中都,(0, 0) 点,在我们变换后的 10 X 10 的极矢量中都,对应的极坐标点是 (-5, 5)。

因为我们URL样本时用再一对此法比较方便使用,但在极矢量中都,以原点为基准对此比较方便使用。

总结

好了,关于 Turtle 构建的穿越时空就参考到这里,只是恰当明确指单单了构建思南路,和男孩的互动,标识符构建中都还要所需看来和关键问题,限于份量,没展开,乐意的读者可以下载源代码,自己跑跑试试,也许还要造就玩意的打算法,爱戴在评论去互动。

我们学习标识符不仅可以用来解决关键问题,收尾管理工作,造就多的时候还可以用了娱乐和陪男孩,在这个处理过程中都,获得男孩的不仅仅是陪,还要处理关键问题的方式将,以及生活的一贯。

南京肛肠治疗哪家好
成都看白癜风去哪看
广东肿瘤正规的医院
重庆妇科医院哪家最好
昆明妇科检查哪家医院好
小儿口臭
皮肤癌
支气管炎咳嗽
性病科
空调病or新冠?分不清楚!医生建议:出现这些症状别慌,先检测!

上一篇: 明日上市!诚达药业预计2021年项下同比下降13.14%-15.04%

下一篇: 马斯克再谈死亡:大多数人寿命应在10到20年比较大

相关阅读
当年的宫外四美今何在?万年不红的终翻红,身价40亿的只剩2000块

伊始在应天不光有“应天四少”,还有占有黑暗着重的“应天四美”。所谓“冰雪薇汁,非常富翁”,这四位男星大家也说不太清她们到底啥来头,只是真的超级富翁超级有着重,可以说是“白富美之前的顶级白富美”!

2025-08-23 00:16:00
12月20日万邦德涨停分析:中药,阿尔茨海默病,生物技术概念热股

万杰森涨停收盘,收盘价11.63元。该股于9点44分涨停,1次打开涨停,截止收盘封单银行贷款为2983.83万元,分之二其纸钞市值1.08%。银行贷款流往数据库方面,中午后援银行贷

2025-08-23 00:16:00
寒假怎么过?教育部建议家长:人生如长跑,一帆风顺忌冲刺

江汉线下·雷电新闻报导1年末7日讯下秋季将至,如何让父母亲离开了身心健康积极、充实愉快的星期日呢?毫无疑问,各位教师和小同事都有不少打算。亦同,教育厅发布《下秋季致全国中小教师小同事 的一封信》

2025-08-23 00:16:00
港股异动 | 华音国际控股(00989)近三日升超30% 在售楼盘初定年末实现交房

华音国际性大股东00989长时间拉升,午盘时段去年约6%。近三日,成交量显著放量,总共去年约31%。截至新闻报导,华音国际性大股东涨5.97%,刊0.71港元,成交额0.13亿港元。据年刊

2025-08-23 00:16:00
罗马尼亚一男童滑雪时遭棕熊追逐 围观游客大喊提醒

1翌年23日,在摩尔多瓦普雷代隆德一个滑雪胜地,一名滑雪者遭到一只熊的疯狂追逐。片段表明,坐下过山车上的游客时所看到了这只熊,他们呐喊着警醒被追逐的男子,可以呼唤他们对滑雪者大叫:“跟着,跟着!

2025-08-23 00:16:00