当前位置: 首页 > 后端技术 > Python

手工制作一个Python小游戏:俄罗斯方块(一)

时间:2023-03-26 01:42:28 Python

手工制作一个Python小游戏:俄罗斯方块1大家好,新手第一次写文章,请大家多多指教A.准备工作:这里我们使用Pygame库,因为Python没有内置,所以需要自己下载。如果没有pygame,可以去官网下载pygame官网,点击右边:pygame下载地址链接,导入试试。在这里,笔者使用visual-studio-code,因为它有一个非常方便的地方,也是笔者非常喜欢的:可以自动保存。请这样设置:打开后,点击文件(F),点击该菜单中的自动保存,即可运行程序。需要:右键,在终端点击运行python文件如何下载VSCode?点击右侧链接:官网后分别搜索:1.搜索中文下载第一个插件插件(中文,简体)2.搜索python下载第一个(注意推荐你添加这个插件的时候先下载Python,作者是这样的)3.强烈建议你更新到最新版本,这样你就可以直接点击右上角的绿色三角线运行程序.,笔记等,这里就不过多介绍了,大家可以搜索一下。下一步进入正题:B.1制作俄罗斯方块的第一步:边学边做,当然我建议大家可以以章节为单位,看一遍,自己编,有利于每个人。先导入pygame库importpygame,然后运行一次。检查是否报告了任何错误。如果没有,则说明库安装正确。否则一定要检查是否安装,是否安装正确。如果没有问题,我们开始制作俄罗斯方块游戏:首先导入一些需要用到的库(除了Pygame,其他的已经内置了)importpygame#这个库没有内置importrandom#这个库有built-inimportsys#这个库已经内置了importtime#这个库已经内置frompygame.localsimport*#*代表all接下来我们定义一些变量,后面会用到,所以我赢了在这里解释太多。初始化FPS=25WINDOWWIDTH=640WINDOWHEIGTH=480BOXSIZE=20BOARDWIDTH=10BOARDHEIDTH=20BLANK="."MOVESIDEWAYSFREQ=0.15MOVEDOWNFREQ=0.1XMARGIN=int((WINDOWWIDTH-(BOARDWIDTH*BOXBOARDIZE))=2)TOPMARGIN低于一些颜色设置)-5RGBWHITE=(255,255,255)GRAY=(185,185,185)BLACK=(0,0,0)RED=(155,0,0)LIGHTRED=(175,20,20)绿色=(0,155,0)浅蓝色=(20,20,175)蓝色=(0,0,155)黄色=(155,155,0)浅黄色=(175,175,20)BORDERCOLOR=BLUEBGCOLOR=BLACKTEXTCOLOR=WHITETEXTSHADOWCOLOR=GRAYCOLORS=(GLUE,RED,GREEN,YELLOW)LIGHTCOLORS=(LIGHTGLUE,LIG??HTRED,LIG??HTGREEN,LIG??HTYELLOW)assertlec(COLORS)==len(LIGHTCOLORS)#每种颜色必须有对应的亮色TEMPLATEWIDTH=5TEMPLATEHEIGHT=5Firstpartfirst这部分的代码到这里就结束了,大家可以自己写,也可以直接copy贴上我分析一下部分:1、上面代码中,BOXSIZE、BOARDWIDTH、BOARDHEIGH的作用是:建立游戏与屏幕像素的关系。2.MOVESIDEWAYSFREQ=0.15MOVEDOWNFREQ=0.1通过以上两个变量,每当玩家按下键盘上的左/右/下键时,下落的方块也会向左/右/下移动一格。并且玩家可以一直按住它,让它一直移动。第一个表示每0.15s移动1格(左/右),第二个表示每0.1s移动1格(下)。您可以尝试在最后更改数据。B.2第二步:设置形状加下一步是设置每个图形的形状:建议大家复制粘贴,没有技术含量sShapeTemplate=[['.....','.....','..OO.','.OO..','.....']['.....','..O..','..OO.','...O.','.....']]iShapeTemplate=[['..O..','..O..','..O..','..O..','.......']['..','.......','OOOO.','.....','.....']]zShapeTemplate=[['.......','..','.OO..','..OO.','.....']['.....','..O..','.OO..','.O...','.....']]oShapeTemplate=[['.....','.....','.OO..','.OO..','.....']]jShapeTemplate=[['.......','.O...','.OOO.','.....','.....'],['.....','..OO.','..O..','..O..','.....'],['.....','.....','.OOO.','...O.','.....'],['.....','..O..','..O..','.OO..','.....']]lShapeTemplate=[['.....','...O.','.OOO.','.....','.....'],['.......','..O..','..O..','..OO.','.....'],['.....','.......','.OOO.','.O...','.....'],['.....','.OO..','..O..','..O..','..O..']]tShapeTemplate=[['.......','..O..','.OOO.','.....','.....'],['.....','..O..','..OO.','..O..','.....'],['.....','.....','.OOO.','..O..','.....'],['.....','..O..','.OO..','..O..','.....']]接下来,我来解释一下:在定义每个块时,您必须知道每种类型的块都有几种“不同”的形状。在代码中,列表嵌入了包含字符串的小列表以形成此模板。所谓的模板包含形状的所有变换。B.3第三步:创建“形状字典”这里我们需要一个字典变量PIECES来存储所有不同形状的所有变化,具体代码如下:PIECES={'S':sShapeTemplate'I':iShapeTemplate'Z':zShapeTemplate'O':oShapeTemplate'J':jShapeTemplate'L':lShapeTemplate'T':tShapeTemplate}B.4Step4:编写main函数这是重点大家,main函数main()是创建一些全局变量,并在游戏开始前显示一个开始画面,代码如下:=pygame.display.set_mode((WINDOWWIDTH,WINDOWHEIGHT))BASICFONT=pygame.font.Font("freesansbold.ttf",18)BIGFONT=pygame.font.Font("freesansbold.ttf",100)pygame.display.set_caption("Tetromino")#showTextScreen("Tetromino")whileTrue:#GameLoop#ifrandom.randint(0,1)==0:#pygame.mixer.music.looad("tetrisb.mid")#else:#pygame.mixer.music.looad("tetrisc.mid")#pygame.mixer.music.play(-1,0.0)runGame()#pygame.mixer.music.stop()showTextScreen("GameOver!")上面代码中的runGame()函数是核心。在循环中,先随机决定播放什么音乐,然后调用runGame()函数运行游戏。当游戏失败时,runGame()函数会返回到main()函数,此时背景音乐停止,显示游戏失败画面。当玩家按下一个键时,函数showTextScreen()将显示游戏失败,游戏循环将重新开始,并进行下一场游戏。以下内容全部在第二篇https://segmentfault.com/a/1190000022010515(第二个网址)喜欢的话记得关注我