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 08 Python
Python制作豆瓣图片的爬虫
Dec 28 Python
python代码 输入数字使其反向输出的方法
Dec 22 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
对Python中DataFrame选择某列值为XX的行实例详解
Jan 29 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
python序列化与数据持久化实例详解
Dec 20 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 Python
Python用access判断文件是否被占用的实例方法
Dec 17 Python
python用字节处理文件实例讲解
Apr 13 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实现验证码功能
2006/10/09 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
JS变量及其作用域
2017/03/29 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
python通过实例讲解反射机制
2019/10/17 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
Python实现EM算法实例代码
2020/10/04 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
IE9下html5初试小刀
2010/09/21 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
Win10系统下配置Java环境变量
2021/06/13 Java/Android
Python的三个重要函数详解
2022/01/18 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python