少儿编程分享:手把手教你用Python编写推星星游戏(八)
- 格式:pdf
- 大小:182.01 KB
- 文档页数:4
python旋转的五角星代码Python旋转的五角星代码Python是一门常用于数据分析和科学计算的编程语言。
它可以用来开发各种类型的应用程序,包括Web应用程序、桌面应用程序和机器学习模型。
Python有着简单易学的语法和强大的功能,因此备受广大开发者的青睐。
在Python中,我们可以用turtle库来绘制图形。
这个库使得绘图变得简单易行。
我们可以用它绘制各种形状,如直线、圆、正方形等。
其中,旋转的五角星是一个很有趣的图形,下面我们就来介绍一下如何用Python绘制旋转的五角星。
首先,我们需要导入turtle模块。
这个模块提供了一系列的函数,可以用来控制画笔的移动和绘图。
导入模块的代码如下:```python import turtle ```接下来,我们要设置画面的大小和背景颜色。
我们使用turtle.setup()函数来设置画面的大小和位置,使用turtle.bgcolor()函数来设置背景颜色。
下面是代码:```python turtle.setup(800, 600)turtle.bgcolor('black') ```我们还需要设置画笔的颜色和线条粗细。
我们把画笔的颜色设置为white,线条粗细为3。
代码如下:```python turtle.color('white')turtle.pensize(3) ```现在,我们就可以开始绘制五角星了。
五角星是由五条线段组成的。
我们需要先画一条线段,接着旋转72度,再画第二条线段,以此类推,共画五条线段。
最后,我们把画笔移回到起始点,闭合图形。
```python angle = 72for i in range(5): turtle.forward(200) turtle.right(angle) turtle.goto(0, 0) ```上面的代码可以画出五角星,但是它并没有旋转。
我们需要对五角星进行旋转,使其能够动态地旋转起来。
python五角星的绘制代码Python五角星的绘制代码Python是一种高级编程语言,它可以用来编写各种类型的应用程序。
在Python中,我们可以使用各种库和模块来实现不同的功能。
其中一个很有趣的功能是绘制图形,这可以通过使用Python中的turtle 库来实现。
在本文中,我们将介绍如何使用turtle库来绘制五角星。
1. 安装turtle库在开始之前,我们需要先安装turtle库。
如果你已经安装了Python,则可以直接打开命令行并输入以下命令:```pythonpip install turtle```这将自动下载并安装所需的库文件。
2. 绘制五角星接下来,让我们看看如何使用turtle库来绘制五角星。
首先,我们需要导入turtle库:```pythonimport turtle```然后,我们需要创建一个画布,并设置画布大小和背景颜色:```pythoncanvas = turtle.Screen()canvas.setup(width=600, height=600)canvas.bgcolor("white")```接下来,我们需要创建一个画笔,并设置画笔颜色、粗细和速度:```pythonpen = turtle.Turtle()pen.color("red")pen.pensize(3)pen.speed(1)```现在,让我们开始绘制五角星。
首先,在屏幕上移动画笔到起始位置:```pythonpen.penup()pen.goto(-100, 0)pen.pendown()```然后,我们需要绘制五角星的五条线段。
每条线段的长度和角度都是相同的。
因此,我们可以使用一个循环来绘制它们:```pythonfor i in range(5):pen.forward(200)pen.right(144)```最后,我们需要隐藏画笔,并保持画布不关闭:```pythonpen.hideturtle()turtle.done()```完整代码如下:```pythonimport turtlecanvas = turtle.Screen()canvas.setup(width=600, height=600) canvas.bgcolor("white")pen = turtle.Turtle()pen.color("red")pen.pensize(3)pen.speed(1)pen.penup()pen.goto(-100, 0)pen.pendown()for i in range(5):pen.forward(200)pen.right(144)pen.hideturtle()turtle.done()```3. 修改五角星的颜色和大小如果你想要修改五角星的颜色和大小,可以通过以下方式实现。
Python turtle库是一个强大的绘图工具,它可以让我们用简单的代码绘制出各种美丽的图形。
其中,利用turtle库绘制浪漫星空图形是一项很受欢迎的编程挑战。
本文将通过以下内容介绍如何利用Python turtle库编写浪漫星空代码:一、Python turtle库简介Python turtle库是Python语言的标准库之一,它使用海龟绘图的方式进行图形绘制。
通过turtle库,我们可以利用简单的命令来绘制各种图形,包括直线、矩形、圆形等等。
turtle库还支持通过控制海龟的移动轨迹来实现更加复杂的图形绘制。
二、浪漫星空代码编写思路要实现浪漫星空代码,我们首先需要利用turtle库绘制出夜空的背景,然后通过随机生成的星星坐标来绘制星空,最后加入闪烁效果来增加浪漫感。
具体的编写步骤如下:1. 导入turtle库2. 设置画布背景色为黑色3. 隐藏海龟图标4. 设置星星的形状和颜色5. 随机生成星星坐标并绘制6. 添加闪烁效果7. 完成浪漫星空代码三、Python turtle浪漫星空代码示例下面是一个简单的浪漫星空代码示例,通过以下代码可以绘制出一个浪漫的星空背景:```pythonimport turtleimport random#设置画布背景色为黑色turtle.bgcolor("black")#隐藏海龟图标turtle.hideturtle()#设置星星的形状和颜色turtle.shape("circle")turtle.color("white")#随机生成星星坐标并绘制for _ in range(50):x = random.randint(-300, 300)y = random.randint(-200, 200)turtle.penup()turtle.goto(x, y)turtle.pendown()turtle.stamp()#添加闪烁效果for _ in range(50):x = random.randint(-300, 300)y = random.randint(-200, 200)turtle.penup()turtle.goto(x, y)turtle.pendown()turtle.stamp()turtle.penup()turtle.goto(0, 0)turtle.pendown()turtle.done()```运行以上代码,将会看到在黑色背景上绘制出了随机分布的白色星星,并且这些星星还会随机闪烁,形成了浪漫的星空效果。
游戏分享:手把手教你用Python编写推星星游戏(三)2017.12.06这一部分游戏代码较多理解起来也有点难学习一定要给自己充分的缓冲时间不要拿兴趣做牺牲122.123.def runLevel(levels,levelNum):124.global currentImage125.levelObj=levels[levelnum]126.mapObj=decorateMap(levelObj['mapObj'],levelObj['startState']['player']) 127.gameStateObj=copy.deepcopy(levelObj['startState'])关卡列表包括所有从关卡文件里读取的关卡。
当前关卡对象(levelNum设定的)将储存在levelObj变量里。
一个对象映射(区分地图内外方块以及装饰)将由函数decorateMap()反馈。
而为了监测玩家所玩关卡的游戏状态,我们可以通过copy.deepcopy()函数从levelObj中复制一个游戏状态的对象用以监测。
复制游戏状态对象是因为储存在levelObj[‘startState’]中的对象意味着游戏刚开始的状态,而我们并不需要去修改它。
而如果我们修改了,玩家在重启关卡时将无法读取初始游戏状态。
在这里使用copy.deepcopy()函数因为游戏状态对象是一个包含元组的字典。
在这里使用一个命令语句来复制字典,我们所得到的不是字典所引用的值而是字典引用的对象。
所以复制和初始的库仍将引用相同的元组。
copy.deepcopy()函数通过复制字典里确实存在的元组来解决这一问题。
通过这个方法我们能保证在改变单个字典时不会对另一个字典造成影响。
(推星星第一关)128.mapNeedsRedraw=True#设置为True来调用drawmap()129.levelSurf=BASICFONT.render('Level%s of%s'%(levelObj['levelNum']+1,totalNumOfLevels),1,TEXTCOLOR)130.levelRect=levelSurf.get_rect()131.levelRect.bottomleft=(20,WINHEIGHT-35)132.mapWidth=len(mapObj)*TILEWIDTH133.mapHeight=(len(mapObj[0])-1)*(TILEHEIGHT-TILEFLOORHEIGHT)+TILEHEIGHT134.MAX_CAM_X_PAN=abs(HALF_WINHEIGHT-int(mapHeight/2))+ TILEWIDTH135.MAX_CAM_Y_PAN=abs(HALF_WINWIDTH-int(mapWidth/2))+ TILEHEIGHT136.137.levelIsComplete=False138.#跟踪镜头的移动139.cameraOffsetX=0140.cameraOffsetY=0141.#监测是否按下了移动镜头的键142.cameraUp=False143.cameraDown=False144.cameraLeft=False145.cameraRight=False现在更多变量将在关卡开始前设置好。
python五角星编程代码Python是一种功能强大的编程语言,可以用来解决各种问题和实现各种功能。
其中一个有趣的编程项目是用Python来绘制五角星。
在本文中,我将向您展示如何使用Python编写代码来绘制五角星,并分享一些关于五角星的背景知识。
在开始编写代码之前,我们先来了解一下五角星的基本形状和特征。
五角星是一个由五条直线组成的几何图形,每条直线与相邻的两条直线夹角为72度。
五角星的形状呈现出对称美和几何美,因此在艺术和设计中经常被使用。
在Python中,我们可以使用turtle模块来绘制五角星。
turtle模块是Python的标准库之一,它提供了一组函数来控制一个小海龟在屏幕上绘制图形。
我们可以使用turtle模块的forward()函数来绘制直线,使用right()函数来转向,从而绘制出五角星的形状。
下面是绘制五角星的Python代码示例:```pythonimport turtledef draw_star():turtle.penup()turtle.goto(-100, 0)turtle.pendown()for _ in range(5):turtle.forward(200)turtle.right(144)turtle.done()draw_star()```在这段代码中,我们首先导入了turtle模块。
然后定义了一个名为draw_star()的函数来绘制五角星。
在函数中,我们使用penup()函数将海龟的笔抬起,使用goto()函数将海龟移动到起始位置,然后使用pendown()函数将笔放下,准备开始绘制。
接下来,我们使用一个for循环来重复绘制五条直线。
每次循环,海龟向前移动200个像素,然后向右转动144度,这样就绘制出了五角星的一个边。
绘制完五角星之后,我们调用done()函数来结束绘制。
现在,我们可以运行这段代码,看看绘制出的五角星是什么样子的。
您可以根据需要修改起始位置、直线长度等参数,来调整五角星的大小和位置。
Python空五角星代码五角星是一种常见的几何图形,它具有独特的美感和对称性。
在本篇文章中,我们将使用Python编程语言来生成一个空心的五角星图案。
1. 准备工作在开始编写代码之前,我们需要先安装Python编程环境。
你可以从[Python官方网站](上下载并安装最新版本的Python。
安装完成后,打开你喜欢使用的集成开发环境(IDE)或者文本编辑器,创建一个新的Python文件,并将其保存为star.py。
2. 导入必要的模块我们将使用turtle模块来绘制五角星图案。
该模块是Python标准库中的一部分,无需额外安装。
在代码文件的开头添加以下代码:import turtle3. 设置画布和画笔接下来,我们需要设置画布和画笔的属性。
添加以下代码:window = turtle.Screen()window.bgcolor("white")pen = turtle.Turtle()pen.color("black")pen.speed(2)以上代码创建了一个白色背景的画布,并创建了一个黑色画笔。
speed(2)表示绘制速度为中等速度。
4. 绘制五角星现在我们开始绘制五角星。
添加以下代码:def draw_star(size):angle = 144for _ in range(5):pen.forward(size)pen.right(angle)pen.forward(size)pen.right(72 - angle)以上代码定义了一个名为draw_star的函数,该函数接受一个参数size表示五角星的边长。
函数内部使用循环和画笔移动命令来绘制五角星。
5. 调用绘制函数在主程序中调用绘制函数来实际绘制五角星。
添加以下代码:star_size = 100draw_star(star_size)turtle.done()以上代码将五角星的边长设置为100,并调用draw_star函数来绘制五角星。
python九角星编程代码Python九角星编程代码在Python编程领域中,九角星是一种具有美观和独特形状的图形。
它由九个相等长度的线段组成,形成了一个如图所示的九角形。
本文将介绍如何使用Python编程语言来绘制一个九角星的代码。
我们需要导入turtle模块,它提供了一些函数和方法来绘制图形。
在Python中,可以使用以下代码导入turtle模块:```pythonimport turtle```然后,我们需要创建一个画布,用于绘制九角星。
可以使用以下代码创建一个画布:```pythonwindow = turtle.Screen()window.bgcolor("white")```接下来,我们需要创建一个turtle对象,它将用于绘制图形。
可以使用以下代码创建一个turtle对象:star = turtle.Turtle()star.color("black")star.speed(2)```然后,我们需要编写代码来绘制九角星。
九角星由九个相等长度的线段组成,每个角度为40度。
我们可以使用循环语句来重复绘制这九个线段。
以下是实现九角星绘制的代码:```pythonfor _ in range(9):star.forward(100)star.right(40)```在上述代码中,我们使用了一个for循环来重复执行9次。
在每次循环中,我们使用star.forward(100)命令向前移动100个像素,然后使用star.right(40)命令向右旋转40度。
通过循环9次,我们就完成了九角星的绘制。
我们需要结束绘制过程并关闭画布。
可以使用以下代码来完成这些操作:turtle.done()```以上就是使用Python编程语言绘制九角星的完整代码。
通过运行这段代码,我们可以在画布上看到一个美丽的九角星图形。
总结起来,本文介绍了如何使用Python编程语言来绘制九角星的代码。
爱心python编程代码爱心Python编程代码Python是一种简洁、优雅且易于学习的编程语言,它在计算机科学领域中得到了广泛的应用。
在编写Python代码时,我们可以运用爱心的思维,用代码来传递爱和关怀。
本文将介绍一些关于爱心Python编程代码的实例和应用。
一、打印爱心在Python中,我们可以使用字符组成的图案来打印出一个漂亮的爱心形状。
以下是一个简单的示例代码:```pythonprint(" *** ")print(" ** ** ")print(" ** ** ")print(" ** ** ")print(" ** ** ")print(" *** ")print(" ** ")print(" ** ")print(" ** ")print(" ** ")print(" ** ")print(" **")```以上代码使用星号字符(*)来绘制了一个爱心形状。
通过适当的缩进和换行,我们可以使代码看起来更加清晰。
二、计算爱心的面积在数学中,爱心形状可以看作是两个半圆形状的组合。
我们可以编写一个计算爱心面积的函数。
以下是一个示例代码:```pythonimport mathdef calc_heart_area(radius):area = math.pi * radius * radius + 2 * math.pi * radius * radius / 4return arearadius = 5heart_area = calc_heart_area(radius)print("爱心的面积为:", heart_area)```以上代码使用了Python的math库来获取圆周率π,并通过半径计算出了爱心的面积。
10个python入门小游戏,零基础打通关,就能掌握编程基础不会python就不能用python开发入门级的小游戏?当然不是,我收集了十个python入门小游戏的源码和教程,并且即使你没有python基础,只要跟着这十个小游戏的开发详细教程去做,以及有了全部的源码,那就能自己开发出这样十个python入门小游戏。
不仅如此,在玩好这十个小游戏的过程中,还可以掌握python的基础知识点哦!下面看看这十个小游戏具体是哪些吧(下面有源码和教程)1、Python入门拼图小游戏简单介绍:将图像分为m×n个矩形块,并将图像右下角的矩形块替换为空白块后,将这些矩形块随机摆放成原图像的形状。
2、Python入门推箱子小游戏简单介绍:这是来自日本的一个经典游戏,在狭小的仓库中,要求把木箱放到指定的位置,如果不小心就可能出现箱子无法移动或者通道被堵的情况,所以,如何巧妙利用有限的空间和通道,合理安排移动顺序,就成了这个游戏能否通关的关键。
3、Python入门小游戏之外星人入侵简单介绍:玩家可以通过鼠标控制飞船的移动和射击,如果能在敌人达到游戏界面低端之前消灭所有敌人,则游戏胜利,否则游戏失败。
4、Python入门小游戏之吃豆子简单介绍:通过键盘方向键,控制游戏的人物吃豆人,吃掉藏在迷宫内的所有豆子,并且不能被敌人抓到。
5、Python入门小游戏之宝石消消乐简单介绍:玩家通过鼠标交换相邻的拼图,若交换后,在水平/竖直方向存在连续三个相同的拼图,则这些拼图消失,玩家得分。
6、Python入门小游戏之乒乓球对战简单介绍:中间是球网,玩家通过上下键移动球拍,并且这个游戏是可以两个人玩的哦。
7、还有其他四个游戏它们是:炸弹人小游戏、逃出迷宫、飞扬的小鸟、五子棋都是非常有趣的游戏哦,而且非常适合用来入门python编程。
游戏分享:手把手教你用Python编写推星星游戏(五)2017.12.08Hi!今天我们继续昨天的进程297.#将邻近的方块墙转换为角落方块298.for x in range(len(mapObjCopy)):299.for y in range(len(mapObjCopy[0])):300.301.if mapObjCopy[x][y]=='#':302.if(isWall(mapObjCopy,x,y-1)and isWall(mapObjCopy,x+1,y)) or\303.(isWall(mapObjCopy,x+1,y)and isWall(mapObjCopy,x,y+1)) or\304.(isWall(mapObjCopy,x,y+1)and isWall(mapObjCopy,x-1,y)) or\305.(isWall(mapObjCopy,x-1,y)and isWall(mapObjCopy,x,y-1)):306.mapObjCopy[x][y]='x'307.308.elif mapObjCopy[x][y]==''and random.randint(0,99)< OUTSIDE_DECORATION_PCT:309.mapObjCopy[x][y]=random.choice(list(OUTSIDEDECOMAPPING.keys()))310.311.return mapObjCopy301行开始的大块if语句是通过检查相邻的方块墙是否为形成角落的角度来判断这个方块墙当前的XY坐标是不是角落位置。
如果是角落,那么在对象映射中代表一个普通墙的’#’字符串,将替换为代表角落方块墙的’x’字符串。
(推星星游戏第三关)314.def isBlocked(mapObj,gameStateObj,x,y):315."""反馈True如果当前XY坐标被阻挡316.其他情况下反馈为False."""317.318.if isWall(mapObj,x,y):319.return True320.321.elif x<0or x>=len(mapObj)or y<0or y>=len(mapObj[x]): 322.return True#XY不在地图上.323.324.elif(x,y)in gameStateObj['stars']:325.return True#星星被挡住了326.327.return False以下有三种情况被阻挡住:星星,墙或者坐标超过地图的边缘isBlocked()函数将监测这三种情况的发生,并在被阻挡时反馈True,反之则反馈False。
python五角星编程代码Python五角星编程代码是一种基于Python语言的图形编程,可以通过编写代码实现五角星的绘制。
五角星是一种常见的几何图形,具有美丽的外观和独特的形状,因此在很多场合都会被使用到。
下面将对Python五角星编程代码的主要内容进行展开,详细介绍其实现原理和使用方法。
Python五角星编程代码的主要内容包括以下几个方面:1. 绘制五角星的基本原理绘制五角星的基本原理是通过计算五角星的各个顶点的坐标,然后将这些点连接起来形成五角星的轮廓。
五角星的顶点坐标可以通过数学公式计算得出,具体公式如下:x1 = x + r * cos(2 * pi / 5)y1 = y + r * sin(2 * pi / 5)x2 = x + r * cos(4 * pi / 5)y2 = y + r * sin(4 * pi / 5)x3 = x + r * cos(6 * pi / 5)y3 = y + r * sin(6 * pi / 5)x4 = x + r * cos(8 * pi / 5)y4 = y + r * sin(8 * pi / 5)其中,x和y表示五角星的中心点坐标,r表示五角星的半径,pi表示圆周率。
通过这些公式可以计算出五角星的五个顶点的坐标。
2. Python绘图库的使用Python绘图库是实现Python图形编程的重要工具,可以通过调用库中的函数实现图形的绘制。
常用的Python绘图库包括matplotlib、turtle等。
在Python五角星编程代码中,我们可以使用turtle库来实现五角星的绘制。
turtle库是Python自带的一个绘图库,可以通过调用turtle库中的函数来实现图形的绘制。
3. Python五角星编程代码的实现Python五角星编程代码的实现主要包括以下几个步骤:(1)导入turtle库在Python代码中,我们需要先导入turtle库,以便调用库中的函数。
python空五角星代码摘要:1.引言2.Python 编程语言简介3.绘制空五角星的需求和挑战4.空五角星绘制代码的实现5.代码解释与运行结果展示6.结论与展望正文:【引言】Python 是一种广泛应用于多个领域的编程语言,其简洁的语法和强大的功能吸引了众多程序员。
本文将介绍如何使用Python 编写一个绘制空五角星的代码。
【Python 编程语言简介】Python 是由Guido van Rossum 于1989 年创立的编程语言,其设计目标是易于阅读和编写。
Python 具有清晰的语法结构和丰富的库,使得开发者能够快速地构建出功能强大的应用程序。
【绘制空五角星的需求和挑战】空五角星,也称为五角星空心,是指五角星内部没有填充的图形。
绘制空五角星需要使用循环和条件语句来实现,对于初学者来说具有一定的挑战性。
【空五角星绘制代码的实现】以下是使用Python 编写的绘制空五角星的代码:```pythonfor i in range(5):for j in range(i+1):if i == j or i+j == 4:print("*", end=" ")else:print(" ", end=" ")print()```这段代码使用两个嵌套的for 循环来遍历五角星的每个点。
外层循环控制行,内层循环控制列。
通过判断行列关系,可以确定每个点是否需要绘制星号。
当内外层循环变量相等或之和为4 时,打印星号;否则,打印空格。
【代码解释与运行结果展示】我们来详细解释一下这段代码:1.外层循环:`for i in range(5):`,表示循环5 次,即绘制五角星的五行。
2.内层循环:`for j in range(i+1):`,表示循环i+1 次,即绘制五角星的每一行。
3.判断条件:`if i == j or i+j == 4:`,表示当内外层循环变量相等或之和为4 时,打印星号。
python编程五角星的代码Python编程五角星的代码五角星是一个经典的几何图形,它的形状独特而美丽。
在Python编程中,我们可以通过绘制线条和图形来实现五角星的效果。
下面我将介绍一种实现五角星的Python代码。
我们需要导入turtle模块,这是一个绘图库,可以方便地进行图形绘制。
然后,我们创建一个画布,并设置画布的大小和背景色。
```pythonimport turtle# 创建画布canvas = turtle.Screen()canvas.setup(800, 600)canvas.bgcolor("white")```接下来,我们创建一个海龟对象,用于绘制五角星的线条。
海龟对象可以看作是一支画笔,我们可以通过控制它的移动和旋转来绘制图形。
```python# 创建海龟对象pen = turtle.Turtle()pen.speed(1)pen.color("black")```接下来,我们需要定义绘制五角星的函数。
五角星可以分为五个小三角形,我们可以通过循环来绘制这五个小三角形。
```python# 定义绘制五角星的函数def draw_star():for i in range(5):pen.forward(100)pen.right(144)```然后,我们调用绘制五角星的函数,即可在画布上绘制出一个五角星。
```python# 调用绘制五角星的函数draw_star()```我们需要保持画布的显示,否则画布会立即关闭。
```python# 保持画布的显示turtle.done()```以上就是实现五角星的Python代码。
通过运行这段代码,我们可以在画布上看到一个美丽的五角星。
总结一下,通过使用turtle库,我们可以很方便地在Python中绘制各种图形。
五角星作为一个独特而美丽的图形,可以通过绘制线条和图形的方式来实现。
希望通过这个例子,你能够更加熟悉Python的绘图功能,并且对五角星有更深入的了解。
游戏分享:手把手教你用Python编写推星星游戏(二)2017.12.04制作游戏的难度是很高的所以每个想要学习制作的游戏的学生一定要打好代码基础、理解代码内容和逻辑才能在以后做出让人惊叹的游戏噢!话不多说,来看之后的代码吧。
73.74.#字典里的值都是全局值,75.#并规划字符在关卡文件中所代表的表层对象76.TILEMAPPING={'x':IMAGESDICT['corner'],77.'#':IMAGESDICT['wall'],78.'o':IMAGESDICT['inside floor'],79.'':IMAGESDICT['outside floor']}地图的数据结构只是一系列的2D字符串。
TILEMAPPING字典将地图数据结构中使用的字符与他们所代表的图片链接起来。
(在drawMap()函数的解释里将显得更直观易懂)80.OUTSIDEDECOMAPPING={'1':IMAGESDICT['rock'],81.'2':IMAGESDICT['short tree'],82.'3':IMAGESDICT['tall tree'],83.'4':IMAGESDICT['ugly tree']}OUTSIDEDECOMAPPING也是一个将地图数据结构中使用的字符与读取图片链接起来的字典。
“外部装饰”图将绘制在草地方块上方。
85.#PLAYERIMAGES是一个列表包括所有玩家可以变成的字符86.#currentImage是玩家当前使用的角色图片的索引87.currentImage=088.PLAYERIMAGES=[IMAGESDICT['princess'],89.IMAGESDICT['boy'],90.IMAGESDICT['catgirl'],91.IMAGESDICT['horngirl'],92.IMAGESDICT['pinkgirl']]PLAYERIMAGES列表储存用来改变控制角色形象的图片。
游戏分享:手把手教你用Python编写推星星
游戏(八)
2017.12.10
这是推星星游戏的最后一期了
希望每个学习了的同学都能制作出你自己的推星星游戏
记得巩固好知识噢~
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()函数并开始游戏。
恭喜你!完成游戏!
推星星的游戏相对之前又是一个进阶
恭喜你又向游戏大师迈进了一步!
**注:文中代码的行数如中断,则默认该行为空。