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 logging日志模块的详解
Oct 29 Python
python监控进程脚本
Apr 12 Python
Python中的函数式编程:不可变的数据结构
Oct 08 Python
使用numba对Python运算加速的方法
Oct 15 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
python从子线程中获得返回值的方法
Jan 30 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
Python调用钉钉自定义机器人的实现
Jan 03 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
Feb 14 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
python中scipy.stats产生随机数实例讲解
Feb 19 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
配置最新的PHP加MYSQL服务器
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
PHP语法速查表
2007/01/02 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
vue基于Vue2.0和高德地图的地图组件实例
2017/04/28 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
python中的字典使用分享
2016/07/31 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
Sanic框架路由用法实例分析
2018/07/16 Python
python检测IP地址变化并触发事件
2018/12/26 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
打架检讨书800字
2014/01/10 职场文书
学校周年庆活动方案
2014/08/22 职场文书
追讨欠款律师函
2015/06/24 职场文书
迎新生晚会主持词
2015/06/30 职场文书
教师节校长致辞
2015/07/31 职场文书
校长新学期寄语2016
2015/12/04 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
索尼ICF-36收音机评测
2022/04/30 无线电