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 相关文章推荐
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python Flask-web表单使用详解
Nov 18 Python
深入浅析Python的类
Jun 22 Python
python url 参数修改方法
Dec 26 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
windows支持哪个版本的python
Jul 03 Python
Python自省及反射原理实例详解
Jul 06 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
用Python进行栅格数据的分区统计和批量提取
May 27 Python
详解Flask开发技巧之异常处理
Jun 15 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操作SVN版本服务器类代码
2011/11/27 PHP
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
js中匿名函数的N种写法
2010/09/08 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
使用JS动态显示文本
2017/09/09 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
pandas的qcut()方法详解
2019/07/06 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
教育专业个人求职信
2013/12/02 职场文书
家长对孩子的感言
2014/03/10 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
假期安全教育广播稿
2014/10/04 职场文书
小学教育见习总结
2015/06/23 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
Python 的 sum() Pythonic 的求和方法详细
2021/10/16 Python
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers