python简单贪吃蛇开发


Posted in Python onJanuary 28, 2019

本文实例为大家分享了python简单贪吃蛇的具体代码,供大家参考,具体内容如下

import sys
import random
import pygame
from pygame.locals import *
 
# 目标方块的颜色 红色
redColor = pygame.Color(255, 0, 0)
# 游戏界面的背景颜色 纯黑色
blackColor = pygame.Color(0, 0, 0)
# 贪吃蛇的颜色 白色
whiteColor = pygame.Color(255, 255, 255)
 
 
# 定义游戏结束的函数
def gameOver():
  pygame.quit()
  sys.exit()
 
 
# 定义main函数
def main():
  # 初始化pygame
  pygame.init()
  # 定义一个控制速度的函数
  fpsClock = pygame.time.Clock()
  # 创建显示层
  playSurface = pygame.display.set_mode((640,480))  # 界面的大小
  pygame.display.set_caption('贪吃蛇')
  # 初始化蛇的位置
  snake_position=[100,100]
 
  # 初始化蛇的长度
  snake_body = [[100,100],[80,100],[60,100]]
 
  # 初始化目标方块的位置
  target_position = [300,300]
 
  # 目标方块的状态
  target_flag = 1
 
  # 初始化一个方向
  direction = 'right'
  # 定义蛇的方向变量
  changeDirection = direction
 
  while True:
    # pygame的交互模块和事件队列
    for event in pygame.event.get():
      # 是否推出
      if event.type == QUIT:
        pygame.quit()
        sys.exit()
      # 判断键盘事件
      elif event.type == KEYDOWN:
        if event.key == K_RIGHT:
          changeDirection = 'right'
        if event.key == K_LEFT:
          changeDirection = 'left'
        if event.key == K_UP:
          changeDirection = 'up'
        if event.key == K_DOWN:
          changeDirection = 'down'
        if event.key == K_SPACE:
          pygame.event.post(pygame.event.Event(QUIT))
 
    # 根据键盘反应确定方向
    if changeDirection == 'left' and not direction == 'right':
      direction = changeDirection
 
    if changeDirection == 'right' and not direction == 'left':
      direction = changeDirection
 
    if changeDirection == 'up' and not direction == 'down':
      direction = changeDirection
 
    if changeDirection == 'down' and not direction == 'up':
      direction = changeDirection
 
 
    # 根据方向移动蛇头的坐标
    if direction == 'right':
      snake_position[0] += 20
 
    if direction == 'left':
      snake_position[0] -= 20
 
    if direction == 'up':
      snake_position[1] -= 20
 
    if direction == 'down':
      snake_position[1] += 20
 
    # 蛇与自身的碰撞检测
    for body in snake_body:
      if snake_position[0] == body[0] and snake_position[1] == body[1]:
        gameOver()
 
    # 蛇移动
    snake_body.insert(0,list(snake_position))
 
 
 
    if snake_position[0] == target_position[0] and snake_position[1] == target_position[1]:
      target_flag = 0
    else:
      # 如果没吃到,蛇尾弹出栈
      snake_body.pop()
 
    # 如果吃掉目标方块,重新生成一个目标方块
    if target_flag == 0:
      x = random.randrange(1,32)
      y = random.randrange(1,24)
      # 20*20的像素为一个小矩形
      target_position = [int(x*20),int(y*20)]
      target_flag = 1
 
    # 绘制显示层
    playSurface.fill(blackColor)
 
    # 绘制蛇
    for position in snake_body:
      pygame.draw.rect(playSurface, redColor, Rect(position[0],position[1],20,20))
 
    # 画目标方块
    pygame.draw.rect(playSurface, whiteColor, Rect(target_position[0], target_position[1], 20, 20))
 
    pygame.display.flip()
 
    # 判断死亡
    if snake_position[0] > 620 or snake_position[1] < 0:
      gameOver()
    elif snake_position[1] > 460 or snake_position[1] < 0:
      gameOver()
 
    # 控制游戏的速度
    fpsClock.tick(5)
 
if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python进阶教程之函数对象(函数也是对象)
Aug 30 Python
python使用range函数计算一组数和的方法
May 07 Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
python3模块smtplib实现发送邮件功能
May 22 Python
Python实现的简单计算器功能详解
Aug 25 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
Python 动态变量名定义与调用方法
Feb 09 Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 #Python
python使用正则筛选信用卡
Jan 27 #Python
pthon贪吃蛇游戏详细代码
Jan 27 #Python
只需7行Python代码玩转微信自动聊天
Jan 27 #Python
python实现贪吃蛇游戏
Mar 21 #Python
Python制作动态字符图的实例
Jan 27 #Python
python贪吃蛇游戏代码
Apr 18 #Python
You might like
Banner程序
2006/10/09 PHP
php zend 相对路径问题
2009/01/12 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
基于jquery的3d效果实现代码
2011/03/23 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
vue之延时刷新实例
2019/11/14 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
python实现网站微信登录的示例代码
2019/09/18 Python
python实现按关键字筛选日志文件
2019/12/24 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
C,C++的几个面试题小集
2013/07/13 面试题
GWT都有什么特性
2016/12/02 面试题
英语专业学生的自我评价
2013/12/30 职场文书
捐资助学倡议书
2014/04/15 职场文书
新文化运动的口号
2014/06/21 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
祝寿主持词
2015/07/02 职场文书
《搭石》教学反思
2016/02/18 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
Go语言基础知识点介绍
2021/07/04 Golang
python套接字socket通信
2022/04/01 Python
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android