python游戏制作贪吃蛇,可以合成的贪吃蛇游戏

  python游戏制作贪吃蛇,可以合成的贪吃蛇游戏

  蛇头游戏(也叫蛇头)是一款休闲益智游戏,操作简单,可玩性强。唯一的目标就是做丐帮里最长的蛇(朱)。本文主要向大家介绍如何用Pygame制作一个简单的蛇头游戏的相关信息。有需要的朋友可以参考一下。

  00-1010 1.前言2。安装和导入。定义后续所需的参数4。画蛇和食物5。游戏规则和操作6。成品展示7。完整的代码摘要。

  

目录

  目前基本上已经写好了软测试用的工具或者第三方库。本着不为薅羊毛抓羊的原则,改变轨道。这次用pygame库写一个简单的蛇。熟悉python,练习一下也不错。

  

1.序言

  使用pip install pygame进入安装,安装成功后导入需要的模块:

  导入pygame,sys,random

  从pygame.locals导入*

  Sys是后面要用到的退出机制,所以这里需要导入。

  

2.安装与导入

  #初始化pygame库

  pygame.init()

  使用pygame时,需要初始化库,对应如下退出代码。这两个是一对。

  #初始化游戏界面

  DISPLAY=py game . DISPLAY . set _ mode((800,800))

  #设置游戏窗口的标题

  py game . display . set _ caption( Snake )

  写完上面的代码,点击运行会有一个flash界面,这很正常,因为什么都没有运行。

  #定义一个变量来控制游戏速度

  FPSCLOCK=pygame.time.Clock()

  #定义颜色

  黑色=pygame。颜色(0,0,0)

  白=pygame。颜色(255,255,255)

  红色=pygame。颜色(255,0,0)

  #定义蛇头的初始位置

  snake_Head=[100,100]

  #定义一条蛇的初始长度,因为所有接口都是20*20,所以长度是负20。

  snake_Body=[[80,100],[60,100]]

  # #蛇形初始方向

  方向=右

  #定义改变方向的变量,按键

  改变方向=方向

  #定义初始食物位置

  food _ position=[300,300]

  #定义食物状态,0表示被吃,1表示不被吃。

  food_Total=1

  以上都是定义后面要用到的参数。

  

3.定义后续需要的参数

  #画一条贪婪的蛇

  def drawSnake(蛇_体):

  因为我在蛇身:

  pygame.draw.rect(DISPLAY,WHITE,Rect(i[0],i[1],20,20))

  #标出食物的位置

  def drawFood(食品_位置):

  pygame.draw.rect(DISPLAY,RED,Rect(food _ position[0],food _ position[1],20,20))

  上面的pygame.draw.rect (DISPLAY,red,rect (food _ posting [0],food _ posting [1],20,20)) draw是pygame的绘图模块,rect中的显示是在我们设置的游戏界面上绘制颜色,绘制矩形的面积,矩形的宽度和高度。

  

4.绘制蛇与食物

  def gameover():

  #退出pygame

  pygame.quit()

  #退出程序

  sys.exit()

  这里设置的出口对应于上面的pygame.init()。

  游戏_标志=真

  while game_flag:

  #渲染背景颜色

  显示.填充(黑色)

  #画一条贪婪的蛇

  drawSnake(snake_Body)

  #画出食物的位置

  drawFood(食品_

  Postion)

  这里将背景设置成了黑色,与定义颜色中的设置对应,将蛇与食物的位置也与上文中对应 。

  

 #增加游戏速度

   game_speed=1+len(snake_Body)//3

   #刷新显示层,贪吃蛇与食物每次移动,都会刷新显示层

   pygame.display.flip()

   FPSCLOCK.tick(game_speed)

   for event in pygame.event.get():

   if event.type==QUIT:

   pygame.quit()

   sys.exit()

  这里规定了游戏的速度,与后续吃到食物后的移速增加。

  

 elif event.type == KEYDOWN:

   # 如果是右箭头或者是d,蛇向右移动

   if event.key == K_RIGHT or event.key == K_d:

   changeDirection = right

   # 如果是做箭头或者是a,蛇向左移动

   if event.key == K_LEFT or event.key == K_a:

   changeDirection = left

   if event.key == K_UP or event.key == K_w:

   changeDirection = up

   if event.key == K_DOWN or event.key == K_s:

   changeDirection = down

   # 点击esc,退出

   if event.key == KSCAN_ESCAPE:

   pygame.event.post(pygame.event.Event(QUIT))

   # 确认方向,判断是否输入了反方向

   if changeDirection == right and not direction == left:

   direction = changeDirection

   if changeDirection == left and not direction == right:

   direction = changeDirection

   if changeDirection == up and not direction == down:

   direction = changeDirection

   if changeDirection == down and not direction == up:

   direction = changeDirection

   #根据方向移动蛇头

   if direction==right:

   snake_Head[0]+=20

   if direction==left:

   snake_Head[0]-=20

   if direction==up:

   snake_Head[1]-=20

   if direction==down:

   snake_Head[1]+=20

  注意这里引号里面的单词要与蛇初始方向的单词一致,不然在运行时会出问题 if changeDirection == 'right' and not direction == 'left': 意思是可以使用→或者D进行右的移动,下面也是 if changeDirection == 'right' and not direction == 'left':意思是如果在右行走的时候按A或者←是没有效果的,下面也是 if direction=='right':snake_Head[0]+=20 意思是点击→或者D向右移动一格,因为格子是20*20的所以一格是20

  

 #增加蛇的长度

   snake_Body.insert(0,list(snake_Head))

   #判断是否吃到食物

   if snake_Head[0] == food_Postion[0] and snake_Head[1] == food_Postion[1]:

   food_Total = 0

   else:

   snake_Body.pop()

  snake_Body.pop()意思是如果没有吃到就不再新增加食物,如果没有这句代码,会导致蛇没有吃到食物也在增加长度。

  

 if food_Total == 0:

   x = random.randrange(1, 32)

   y = random.randrange(1, 24)

   food_Postion = [int(x * 20), int(y * 20)]

   food_Total = 1

  这里的意思为如果食物被吃了,状态为0的话,就随机地点生成一个。

  

 if snake_Head[0] > 800 or snake_Head[0] < 0:

   gameover()

   elif snake_Head[0] > 800 or snake_Head[0] < 0:

   gameover()

   # 如果碰到自己

   for body in snake_Body[1:]:

   if snake_Head[0] == body[0] and snake_Head[1] == body[1]:

   gameover()

  if snake_Head[0] > 800 or snake_Head[0] < 0:意思为碰到边界游戏退出,800是全面设置的界面大小

  

  

6.成品展示

  

  

  

7.完整代码

  

import pygame,sys,random

  from pygame.locals import *

  #初始化pygame库

  pygame.init()

  #初始化一个游戏界面

  DISPLAY=pygame.display.set_mode((800,800))

  #设置游戏窗口标题

  pygame.display.set_caption(贪吃蛇)

  #定义一个变量控制游戏速度

  FPSCLOCK=pygame.time.Clock()

  #定义颜色

  BLACK=pygame.Color(0,0,0)

  WHITE=pygame.Color(255,255,255)

  RED=pygame.Color(255,0,0)

  # 定义蛇头初始位置

  snake_Head=[100,100]

  # 定义一个蛇初始长度,因为界面都是20*20所以长度都是减20

  snake_Body=[[80,100], [60,100],[40,100]]

  # # 蛇初始方向

  direction="right"

  # 定义改变方向的变量,按键

  changeDirection = direction

  #定义初始食物位置

  food_Postion = [300,300]

  # 定义食物状态,0表示被吃,1表示没有被吃

  food_Total = 1

  #绘制贪吃蛇

  def drawSnake(snake_Body):

   for i in snake_Body:

   pygame.draw.rect(DISPLAY,WHITE,Rect(i[0],i[1],20,20))

  #绘制食物位置

  def drawFood(food_Postion):

   pygame.draw.rect(DISPLAY,RED,Rect(food_Postion[0],food_Postion[1],20,20))

  def gameover():

   #退出pygame

   pygame.quit()

   #退出程序

   sys.exit()

  game_flag=True

  while game_flag:

   #渲染底色

   DISPLAY.fill(BLACK)

   #画出贪吃蛇

   drawSnake(snake_Body)

   #画出食物位置

   drawFood(food_Postion)

   #增加游戏速度

   game_speed=1+len(snake_Body)//3

   #刷新显示层,贪吃蛇与食物每次移动,都会刷新显示层

   pygame.display.flip()

   FPSCLOCK.tick(game_speed)

   for event in pygame.event.get():

   if event.type==QUIT:

   pygame.quit()

   sys.exit()

   elif event.type == KEYDOWN:

   # 如果是右箭头或者是d,蛇向右移动

   if event.key == K_RIGHT or event.key == K_d:

   changeDirection = right

   # 如果是做箭头或者是a,蛇向左移动

   if event.key == K_LEFT or event.key == K_a:

   changeDirection = left

   if event.key == K_UP or event.key == K_w:

   changeDirection = up

   if event.key == K_DOWN or event.key == K_s:

   changeDirection = down

   # 点击esc,退出

   if event.key == KSCAN_ESCAPE:

   pygame.event.post(pygame.event.Event(QUIT))

   # 确认方向,判断是否输入了反方向

   if changeDirection == right and not direction == left:

   direction = changeDirection

   if changeDirection == left and not direction == right:

   direction = changeDirection

   if changeDirection == up and not direction == down:

   direction = changeDirection

   if changeDirection == down and not direction == up:

   direction = changeDirection

   #根据方向移动蛇头

   if direction==right:

   snake_Head[0]+=20

   if direction==left:

   snake_Head[0]-=20

   if direction==up:

   snake_Head[1]-=20

   if direction==down:

   snake_Head[1]+=20

   #增加蛇的长度

   snake_Body.insert(0,list(snake_Head))

   #判断是否吃到食物

   if snake_Head[0] == food_Postion[0] and snake_Head[1] == food_Postion[1]:

   food_Total = 0

   else:

   snake_Body.pop()

   if food_Total == 0:

   x = random.randrange(1, 32)

   y = random.randrange(1, 24)

   food_Postion = [int(x * 20), int(y * 20)]

   food_Total = 1

   if snake_Head[0] > 800 or snake_Head[0] < 0:

   gameover()

   elif snake_Head[0] > 800 or snake_Head[0] < 0:

   gameover()

   # 如果碰到自己

   for body in snake_Body[1:]:

   if snake_Head[0] == body[0] and snake_Head[1] == body[1]:

   gameover()

  

  

总结

  到此这篇关于教你用Pygame制作简单的贪吃蛇游戏的文章就介绍到这了,更多相关Pygame贪吃蛇游戏内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: