资源描述
把教你使Python制作贪吃蛇游戏贪吃蛇游戏是有史以来最受欢迎的街机游戏之。在这个游戏中,玩家的主要标是在不撞墙或不撞墙的情况下抓住最数量的果。在学习 Python 或 Pygame 时,可以将创建蛇游戏视为项挑战。这是每个新程序员都应该接受的最好的初学者友好项之。学习构建视频游戏是种有趣有趣的学习。我们将使Pygame来创建这个蛇游戏。Pygame是个开源库,专为制作视频游戏设计。它具有内置的图形和声库。它也是初学者友好的和跨平台的。安装要安装 Pygame,您需要打开终端或命令提符并输以下命令:pip install pygame复制代码安装 Pygame 后,我们就可以创建我们很酷的蛇游戏了。使 Pygame Pygame 创建贪吃蛇游戏的分步法:第 1 1 步:先,我们正在导必要的库。之后,我们将定义游戏将在其中运的窗的宽度和度。并以 RGB 格式定义我们将在游戏中于显本的颜。#导库import pygameimport timeimport randomsnake_speed=15#窗window_x=720window_y=480#定义颜black=pygame.Color(0,0,0)white=pygame.Color(255,255,255)red=pygame.Color(255,0,0)green=pygame.Color(0,255,0)blue=pygame.Color(0,0,255)复制代码 第 2 2 步:导库后,我们需要使pygame.init()pygame.init()法初始化 Pygame Pygame。使上步中定义的宽度和度创建个游戏窗。这pygame.time.Clock()将在游戏的主要逻辑中进步于改变蛇的速度。#初始化pygamepygame.init()#初始化游戏窗pygame.display.set_caption(GeeksforGeeks Snakes)game_window=pygame.display.set_mode(window_x,window_y)#FPS(每秒帧数)控制器fps=pygame.time.Clock()复制代码 第 3 3 步:初始化蛇的位置及其。初始化蛇位置后,在定义的度和宽度的任意位置随机初始化果位置。通过将向设置为 RIGHT,我们确保每当户运程序/游戏时,蛇必须向右移动到屏幕上。#定义蛇默认位置snake_position=100,50#定义蛇体的前 4 个块snake_body=100,50,90,50,80,50,70,50#果位置fruit_position=random.randrange(1,(window_x/10)*10,random.randrange(1,(window_y/10)*10fruit_spawn=True#设置默认的蛇向向右direction=RIGHTchange_to=direction复制代码 第 4 4 步:创建个函数来显玩家的得分。在这个函数中,先我们要创建个字体对象,即字体颜会出现在这。然后我们使渲染来创建个背景表,每当我们的分数更新时,我们就会改变它。为本表对象创建个矩形对象(本将在此处刷新)然后,我们使blit显我们的分数。blit需要两个参数screen.blit(background,(x,y)#初始分数score=0#显评分功能def show_score(choice,color,font,size):#创建字体对象 score_font score_font=pygame.font.SysFont(font,size)#创建显表对象 core_surface score_surface=score_font.render(Score:+str(score),True,color)#为本表对象创建个矩形对象 score_rect=score_surface.get_rect()#显字 game_window.blit(score_surface,score_rect)复制代码 第 5 5 步:现在创建个游戏结束函数,该函数将代表蛇被墙壁或击中后的分数。在第,我们创建了个字体对象来显乐谱。然后我们创建本表来渲染乐谱。之后,我们将设置本在可播放区域中间的位置。使blit显分数并通过使 flip()更新表来更新分数。我们使 sleep(2)在使 quit()关闭窗之前等待 2 秒。#游戏结束功能def game_over():#创建字体对象 my_font my_font=pygame.font.SysFont(times new roman,50)#创建将在其上绘制本的本表 game_over_surface=my_font.render(Your Score is:+str(score),True,red)#为本表对象创建个矩形对象 game_over_rect=game_over_surface.get_rect()#设置本位置 game_over_rect.midtop=(window_x/2,window_y/4)#blit 将在屏幕上绘制本 game_window.blit(game_over_surface,game_over_rect)pygame.display.flip()#2 秒后我们将退出程序 time.sleep(2)#停 pygame 库 pygame.quit()#退出程序 quit()复制代码 第 6 6 步:现在我们将创建我们的主要功能,它将执以下操作:我们将验证负责蛇移动的密钥,然后我们将创建个特殊条件,即不允许蛇即向相反向移动。在那之后,如果蛇和果发碰撞,我们将把分数增加 10,新的果将被跨越。在那之后,我们正在检查蛇是否被墙击中。如果条蛇撞墙,我们将调游戏结束功能。如果蛇撞到,游戏结束函数将被调。最后,我们将使之前创建的 show_score 函数显分数。#Main Functionwhile True:#处理关键事件 for event in pygame.event.get():if event.type=pygame.KEYDOWN:if event.key=pygame.K_UP:change_to=UP if event.key=pygame.K_DOWN:change_to=DOWN if event.key=pygame.K_LEFT:change_to=LEFT if event.key=pygame.K_RIGHT:change_to=RIGHT#如果同时按下两个键#我们不想让蛇同时向两个向移动 if change_to=UP and direction!=DOWN:direction=UP if change_to=DOWN and direction!=UP:direction=DOWN if change_to=LEFT and direction!=RIGHT:direction=LEFT if change_to=RIGHT and direction!=LEFT:direction=RIGHT#移动蛇 if direction=UP:snake_position1-=10 if direction=DOWN:snake_position1+=10 if direction=LEFT:snake_position0-=10 if direction=RIGHT:snake_position0+=10#蛇体长机制#如果果和蛇发碰撞,那么分数将增加 10 snake_body.insert(0,list(snake_position)if snake_position0=fruit_position0 and snake_position1=fruit_position1:score+=10 fruit_spawn=False else:snake_body.pop()if not fruit_spawn:fruit_position=random.randrange(1,(window_x/10)*10,random.randrange(1,(window_y/10)*10 fruit_spawn=True game_window.fill(black)for pos in snake_body:pygame.draw.rect(game_window,green,pygame.Rect(pos0,pos1,10,10)pygame.draw.rect(game_window,white,pygame.Rect(fruit_position0,fruit_position1,10,10)fruit_position0,fruit_position1,10,10)#游戏结束条件 if snake_position0 window_x-10:game_over()if snake_position1 window_y-10:game_over()#触碰蛇 for block in snake_body1:if snake_position0=block0 and snake_position1=block1:game_over()#连续显分数 show_score(1,white,times new roman,20)#刷新游戏画 pygame.display.update()#每秒帧数/刷新率 fps.tick(snake_speed)复制代码下是实现快速总结 PythonPython贪吃蛇游戏完整源码后台私信666666其实源码已经都列出来了,不过肯定还有伙伴想直接拿完整的,需要的可以在评论区留,暂时还没放在GitHub上,直接放章感觉代码拖得太长了本章为系列章,后续会继续更新Python、Java、HTML等做的游戏。我希望本系列教程能够帮助到您,博主也在学习进中,如有什么错误的地还望批评指正。如果您喜欢这篇章并有兴趣看到更多此类章,可以看看这这汇总了我的全部原创及作品源码,关注我以查看更多信息。
展开阅读全文