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中的rjust()方法使用详解
May 19 Python
Python实现单词翻译功能
Jun 06 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
python基于Selenium的web自动化框架
Jul 14 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
Python socket 套接字实现通信详解
Aug 27 Python
python同时替换多个字符串方法示例
Sep 17 Python
Python基于unittest实现测试用例执行
Nov 25 Python
python多线程和多进程关系详解
Dec 14 Python
python神经网络编程之手写数字识别
May 08 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
一篇文章弄懂Python关键字、标识符和变量
Jul 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
Python实现获取网站PR及百度权重
2015/01/21 Python
常用python编程模板汇总
2016/02/12 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
python判断完全平方数的方法
2018/11/13 Python
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
德国咖啡批发商:Coffeefair
2019/08/26 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
教师考核评语
2014/04/28 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
OpenCV 图像梯度的实现方法
2021/07/25 Python