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的Django框架中的templates设置
May 11 Python
python 遍历字符串(含汉字)实例详解
Apr 04 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
python3.4下django集成使用xadmin后台的方法
Aug 15 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
查看django版本的方法分享
May 14 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 Python
openstack中的rpc远程调用的方法
Jul 09 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 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
JavaScript 基础问答三
2008/12/03 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
名人演讲稿范文
2013/12/28 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
广告设计应届生求职信
2014/03/01 职场文书
副主任竞聘演讲稿
2014/08/18 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
生产设备维护保养制度
2015/08/06 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
阿里云日志过滤器配置日志服务
2022/04/09 Servers