python星星万花筒_少儿编程分享:码趣君教你用Python编写推星星游戏(完)
这是推星星游戏的最后一期了
希望每个学习了的同学都能制作出你自己的推星星游戏
记得巩固好知识噢~
Drawing the Map绘制地图
535. def drawMap(mapObj, gameStateObj, goals):
536. #将地图绘制为表层对象,包括角色和星星
537. #这个函数无需调用pygame.display.update()
538. #也不用再角落绘制关卡,步数文本。
539.
540. # 将是用来绘制方块在上面的单独的表层对象
541. # 所以将很容易在DISPLAYSURF表层对象中定位整张地图
542. # 首先,需要就地图的宽和长
543. mapSurfWidth = len(mapObj) * TILEWIDTH
544. mapSurfHeight = (len(mapObj[0]) - 1) * (TILEHEIGHT - TILEFLOORHEIGHT) + TILEHEIGHT
545. mapSurf = pygame.Surface((mapSurfWidth, mapSurfHeight))
546. mapSurf.fill(BGCOLOR) # 无填充色开始
drawMap()函数会将整张地图反馈至表层对象。
而地图的大小将从mapObj中计算得出。而在表层对象上绘制的所有东西将在545行创建。一开始,整个表层对象以背景色来绘制。
548. # 将方块精灵绘制在表层上
549. for x in range(len(mapObj)):
550. for y in range(len(mapObj[x])):
551. spaceRect = pygame.Rect((x * TILEWIDTH, y * (TILEHEIGHT - TILEFLOORHEIGHT), TILEWIDTH, TILEHEIGHT))
549和550的嵌套for循环将检索地图上所有XY坐标并绘制合适的方块图片在当前坐标上
552. if mapObj[x][y] in TILEMAPPING:
553. baseTile = TILEMAPPING[mapObj[x][y]]
554. elif mapObj[x][y] in OUTSIDEDECOMAPPING:
555. baseTile = TILEMAPPING[' ']
556.
557. # 首先绘制地基和墙
558. mapSurf.blit(baseTile, spaceRect)
559.
baseTile变量将设置为表层方块图片对象中将要绘制在当前XY坐标的方块坐标。如果单字符串储存在OUTSIDEDECOMAPPING字典里,那么TILEMAPPING就用得上了。
560. if mapObj[x][y] in OUTSIDEDECOMAPPING:
561. # D 在这个方块上绘制装饰
562. mapSurf.blit(OUTSIDEDECOMAPPING[mapObj[x][y]], spaceRect)
除此之外,如果方块列在OUTSIDEDECOMAPPING字典中,相对应的装饰图片将绘制在当前方块的顶部。
563. elif (x, y) in gameStateObj['stars']:
564. if (x, y) in goals:
565. # 星标方块和星星在同一方块上,首先绘制星标方块
566. mapSurf.blit(IMAGESDICT['covered goal'], spaceRect)
567. # T绘制星星
568. mapSurf.blit(IMAGESDICT['star'], spaceRect)
如果在地图上的某个XY坐标上应该有个星星,那么在568行上,这个星星就会在这个坐标上绘制。在完成绘制之前,代码将首先检查是否有星标方块在同一位置,如果有那么先绘制星标方块。
569. elif (x, y) in goals:
570. # 绘制星标方块
571. mapSurf.blit(IMAGESDICT['uncovered goal'], spaceRect)
如果地图上这个XY坐标有个星标方块,且没有被玩家或者星星覆盖,那么就将星标方块绘制在顶部。
573. # 最后绘制玩家角色
574. if (x, y) == gameStateObj['player']:
575. # currentimage是独特的玩家形象
576. #
577. #
578. mapSurf.blit(PLAYERIMAGES[currentImage], spaceRect)
579.
580. return mapSurf
最后,drawMap()函数将检查玩家是否在这个XY坐标上,如果是那么玩家的图片形象就在方块上绘制。而始于549和550行的580行是在嵌套循环之外,所以当表层对象返回时,整个地图将绘制完毕。
检查关卡是否完成
583. def isLevelFinished(levelObj, gameStateObj):
584. """反馈True如果所有星标方块被星星覆盖"""
585. for goal in levelObj['goals']:
586. if goal not in gameStateObj['stars']:
587. # 找到没有被星星覆盖的星标方块
588. return False
589. return True
isLevelFinished()函数建在所有星标方块被星星覆盖时反馈True。一些关卡将有超过星标方块的星星,所以检查星标方块是否被覆盖比检查星星是否比星标方块多更重要。
585行的for循环检查了所有在levelObj[‘GOALS’]里的星标方块坐标,和gameStateObj[‘stars’]里星星的坐标。当代码第一次找到一个没有星星覆盖的星标方块,函数将反馈False。如果每个都被星星覆盖,那么isLevelFinished()反馈True。
592. def terminate():
593. pygame.quit()
594. sys.exit()
terminate函数作用一如既往
597. if __name__ == '__main__':
598. main()
在定义了所有函数后,602行将调用main()函数并开始游戏。
恭喜你!完成游戏!
恭喜你又向游戏大师迈进了一步!
**注:文中代码的行数如中断,则默认该行为空
python星星万花筒_少儿编程分享:码趣君教你用Python编写推星星游戏(完)相关推荐
- 用python画小兔子_少儿编程分享:手把手教你用PYTHON编写兔獾大作战(一)
原标题:少儿编程分享:手把手教你用PYTHON编写兔獾大作战(一) 游戏制作 我们今天要制作的小游戏是Bunnies vs. Badgers (兔獾大作战).游戏中的兔子通过射箭抵御獾的进攻,从而保卫 ...
- 怎么用python做战斗机_少儿编程分享:手把手教你用Python编写战斗机游戏(四)
游戏分享:手把手教你用Python编写 战斗机游戏(四) 2018.1.25 飞机大战就到这里啦 你的飞机大战做出来了吗 加入图像 现在我们已经能够玩游戏了,但这个游戏丑确实有点丑.接下来,我们要把单 ...
- python俄罗斯方块代码34行_少儿编程分享:码趣君教你用Python编写俄罗斯方块(四)...
接下来要进入操作部分了 坚持才能获得最后的成就感噢 用移动变量处理用户输入 216. elif (event.key == K_LEFT or event.key == K_a): 217. movi ...
- python 儿童 游戏_少儿编程分享:手把手教你用Python编写战斗机游戏(完)
原标题:少儿编程分享:手把手教你用Python编写战斗机游戏(完) 加入图像 现在我们已经能够玩游戏了,但这个游戏丑确实有点丑 .接下来,我们要把单调的白色矩形换成好看的图片. 在前面的代码中,我们用 ...
- python图形设计编程_少儿编程分享:手把手教你用Python制作艺术图片
原标题:少儿编程分享:手把手教你用Python制作艺术图片 在前面的几篇文章中,我们分享了一些用PyGame制作小游戏的教程.我们今天的分享使用的仍然是PyGame,只不过这次不是写游戏啦-我们要用P ...
- 怎么用python编贪吃蛇_少儿编程分享:手把手教你用PYTHON编写贪吃蛇(二)
原标题:少儿编程分享:手把手教你用PYTHON编写贪吃蛇(二) 检测和判断 无论我们制作的简单或者复杂的游戏 这都是最关键的两个部分 事件处理循环 61. while True: # 游戏主循环 62 ...
- python兔子编程_少儿编程分享:手把手教你用PYTHON编写兔獾大作战(一)
游戏制作 我们今天要制作的小游戏是Bunnies vs. Badgers (兔獾大作战).游戏中的兔子通过射箭抵御獾的进攻,从而保卫自己的四个堡垒.这个游戏是和你们一样的同龄人制作的噢~为此我们也会更 ...
- python俄罗斯方块编程思路_少儿编程分享:手把手教你用Python编写俄罗斯方块(十)...
www.codingmarch.com 游戏分享:手把手教你用 Python 编写 俄罗斯方块(十) 2017.12.28 这是俄罗斯方块的最后一章了 经历了这么多游戏 编写了这么多代码 你的心中是否 ...
- python怎么编辑程序_少儿编程:Python系列24——字符串的替换和检索
#少儿编程# 因为会汉语拼音了,小po最近迷上打字,他经常会为我们家制作一张购物清单(其实就是他想吃的东西),如图1,然后把这张购物清单作为字符串赋值到一个变量里. 图1 这次他刚做完,就发觉奶豆和奶 ...
最新文章
- ant PageHeaderWrapper 返回上一页
- 第四代测序(纳米孔测序)有望全面代替边合成边测序吗?
- 杰奇linux伪静态,常用的13个.htaccess重写URL的伪静态规则
- CoreMail/pku的邮箱如何禁止某个后缀的所有邮箱
- 我人傻了,火狐坏了,重启系统删了重下都搞不好那种,点开只有弹窗(已解决)
- ajax 输入不为空,ajax POST响应为空
- 圈圈教你学USB第一章
- 二级c语言 文件题,二级C语言题库文件.doc
- swustoj水王C语言,swust西南科技大学OJ数据结构80题答案
- 511遇见易语言教程外形框和模仿进度条闪烁效果
- python socket编程详细教程_最基础的Python的socket编程入门教程
- bootstrap表格自动换行
- java 自由落体for语句_JAVA 自由落体和平抛无能运动
- h264和aac 封装成flv
- Antv X6 动态连线
- html软键盘挤压布局,软键盘挤压布局问题
- A Survey of Shape Feature Extraction Techniques中文翻译
- mate 10android o主题,华为Mate 10 Pro体验:这才是全面屏手机该有的样子
- nginx详细文档 – 安装配置,深入源码,模块编写,编译器参数,系统函数
- 小程序学习与实践(一)