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中针对函数处理的特殊方法
Mar 06 Python
从零学python系列之从文件读取和保存数据
May 23 Python
Python中Collection的使用小技巧
Aug 18 Python
Python中多线程及程序锁浅析
Jan 21 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
Python实现二维数组输出为图片
Apr 03 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
Python任务调度模块APScheduler使用
Apr 15 Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
PHP 5.0对象模型深度探索之绑定
2006/09/05 PHP
PHP+APACHE实现用户论证的方法
2006/10/09 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
php检索或者复制远程文件的方法
2015/03/13 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
js+css实现全屏侧边栏
2020/06/16 Javascript
python3模块smtplib实现发送邮件功能
2018/05/22 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
django-初始配置(纯手写)详解
2019/07/30 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
几个判断型的面试题
2012/07/03 面试题
大专学生推荐信范文
2013/11/19 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android