#!/usr/bin/env python
# -*- coding: utf-8 -*-import pygame as pygame
import random
import sysfrom pygame.rect import Rectclass Snake(object):def __init__(self):  # 定义3个 颜色属性,以防后面需要self.black = pygame.Color(0, 0, 0)  # 背景颜色self.green = pygame.Color(0, 255, 0)  # 目标方块颜色self.white = pygame.Color(255, 255, 255)  # 蛇颜色def gameover(self):pygame.quit()sys.exit()def initialize(self):pygame.init()  # 初始化,就是初始化 pygame 里面的东西,没啥鸟用,但是没它不行,哈哈哈哈clock = pygame.time.Clock()  # 创建时钟对象 (可以控制游戏循环频率playSurface = pygame.display.set_mode((800, 600))  # 创建游戏窗口pygame.display.set_caption('贪吃蛇')  # 窗口名snakePosition = [80, 80]  # 贪吃蛇的头snakebody = [[80, 80], [60, 80], [40, 80]]  # 初始化贪吃蛇的长度 (注:这里以20*20为一个标准小格子)targetPosition = [200, 400]  # 绿色方块目标位置targetflag = 1direction = 'right'  # 初始化移动方向""" 注: 上面的属性啥的,定义是定义了, 但是 是静态的 还动不了,,而且 还没有颜色,黑麻麻的,,,所以才有了 下面的 这 一个 def main()  函数 ,我们 通过 main方法  让他们 嗨起来,五光十色,懂了吗?兄弟萌?"""changeDirection = direction  # 输入的 方向self.main(snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock)def main(self, snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface,clock):# 所有事件全部放到一个实时循环中while True:for event in pygame.event.get():  # 接收到退出事件后,退出程序# pygame.event.get() ,监听用户事件,看用户在键盘上干了啥事if event.type == pygame.QUIT:pygame.quit()sys.exit()elif event.type == pygame.KEYDOWN:  # 根据输入,进行上下左右移动if event.key == pygame.K_RIGHT:changeDirection = 'right'print("向右转")if event.key == pygame.K_LEFT:changeDirection = 'left'print("向左转")if event.key == pygame.K_DOWN:changeDirection = 'down'print("向上走")if event.key == pygame.K_UP:changeDirection = 'up'print("向下走")if event.key == pygame.K_ESCAPE:pygame.event.post(pygame.event.Event(pygame.QUIT))if (changeDirection == 'left' and not direction == 'right'):# 如果改变后的移动方向是 left ,而原来的移动不是向 right, 则将方向 调为 leftdirection = changeDirectionif (changeDirection == 'right' and not direction == 'left'):direction = changeDirectionif (changeDirection == 'down' and not direction == 'up'):direction = changeDirectionif (changeDirection == 'up' and not direction == 'down'):direction = changeDirection# 根据键盘的输入,改变蛇的头部,进行转弯操作if direction == 'right':snakePosition[0] += 20if direction == 'left':snakePosition[0] -= 20if direction == 'down':snakePosition[1] += 20if direction == 'up':snakePosition[1] -= 20# 将蛇的头部当前位置加入到蛇身的列表中,增加蛇的长度snakebody.insert(0, list(snakePosition))# 如果蛇头与食物的位置重合,则判定吃到食物,将食物数量清零;而没吃到食物的话,蛇身就会跟着蛇头运动,蛇身的最后一节将被踢出列表if (snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]):  # 吃到绿色块targetflag = 0else:snakebody.pop()  # 没吃到绿块if targetflag == 0:  # 如果吃到绿色块,则重新生成新的绿色块x = random.randrange(1, 40)y = random.randrange(1, 30)targetPosition = [int(x * 20), int(y * 20)]  # 绿色块位置targetflag = 1  # 用来判断是否吃到绿色块,吃到则为0,否则为1# 填充背景颜色playSurface.fill(self.black)for position in snakebody:"""在Surface上绘制矩形,第二个参数是线条(或填充)的颜色,第三个参数Rect的形式是((x, y), (width, height)),表示的是所绘制矩形的区域,其中第一个元组(x, y)表示的是该矩形左上角的坐标,第二个元组 (width, height)表示的是矩形的宽度和高度。width表示线条的粗细,单位为像素;默认值为0,表示填充矩形内部# 第一个参数surface  指定一个surface编辑区# 第二个参数color    指定颜色# 第三个参数rect     返回一个矩形包含位置信息(x,y),(width,height)# 第四个参数width    表示线条的粗细 width=0 实心  width=1 空心# 画蛇# 画目标方块儿"""# 画蛇   ,,,就是把蛇行走的身形画出来pygame.draw.rect(playSurface, self.white, Rect(position[0], position[1], 20, 20))# 画目标方块儿# print(targetPosition[0])     你运行一下就知道了# print(targetPosition[1])pygame.draw.rect(playSurface, self.green, Rect(targetPosition[0], targetPosition[1], 20, 20))# 更新显示到屏幕pygame.display.flip()# 判断游戏结束if (snakePosition[0] > 900 or snakePosition[0] < 0):  # 窗口 长snake.gameover()elif (snakePosition[1] > 800 or snakePosition[0] < 0):  # 窗口 宽snake.gameover()for i in snakebody[1:]:  # 撞到自己if (snakePosition[0] == i[0] and snakePosition[1] == i[1]):  # 当蛇头的位置(像素)与蛇身 一样时,即可判定它们相撞了snake.gameover()# 控制蛇行走速度clock.tick(6)snake = Snake()
snake.initialize()

注:代码不是本人所写,如有侵权,请告知我删除,谢谢!

Python 贪吃蛇 代码相关推荐

  1. python贪吃蛇代码课程设计_c语言课程设计之贪吃蛇代码及思路 c语言课程设计报告之贪吃蛇...

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8846529.html 注:本文档需与c语言课程设计之贪吃蛇文档配套使用.c语言实现贪吃蛇代码可 ...

  2. python小游戏代码大全-python贪吃蛇游戏代码

    本文实例为大家分享了python贪吃蛇游戏的具体代码,供大家参考,具体内容如下 贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下 ...

  3. python代码大全-python贪吃蛇游戏代码

    本文实例为大家分享了python贪吃蛇游戏的具体代码,供大家参考,具体内容如下 贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下 ...

  4. python贪吃蛇源码_Python:游戏:贪吃蛇(附源码)

    Python:游戏:贪吃蛇(附源码) 发布时间:2018-09-05 09:59, 浏览次数:1295 , 标签: Python 贪吃蛇是个非常简单的游戏,适合练手. 首先分析一下这个游戏 1.蛇怎么 ...

  5. Python贪吃蛇双人大战-魔法豆登场

    Python贪吃蛇双人大战-魔法豆登场 时隔两月之后,家里的小朋友再次对我之前改写的贪吃蛇游戏(过程可参考我之前写的 Python贪吃蛇双人大战 和 Python贪吃蛇双人大战-升级版,代码可以到此处 ...

  6. 用html编写一个贪吃蛇,HTML编写的贪吃蛇代码

    <HTML编写的贪吃蛇代码>由会员分享,可在线阅读,更多相关<HTML编写的贪吃蛇代码(14页珍藏版)>请在人人文库网上搜索. 1.使用表格 var fangxiang;fan ...

  7. c语言安卓贪吃蛇代码下载,C语言贪吃蛇代码

    c语言编写贪吃蛇源代码,简单易懂,文件为VC源代码.如果你正在学习c语言,就来下载吧.很经典的 C语言贪吃蛇代码部分 #include #include #include#include #defin ...

  8. Python贪吃蛇小游戏_完整源码免费分享

    文章目录 Python 贪吃蛇小游戏 1. 导包 2. 配置初始化参数 3. 主函数及运行主体 4. 画食物的函数 5. 画贪吃蛇的函数 6. 画网格的函数(非必选,觉得多余的可以忽略此项) 7. 操 ...

  9. 【无标题】学习贪吃蛇代码

    学习贪吃蛇代码

  10. 贪吃蛇的c语言程序码,C语言贪吃蛇代码下载_C语言贪吃蛇代码官方下载-太平洋下载中心...

    C语言编写贪吃蛇源代码,简单易懂,文件为VC源代码.如果你正在学习c语言,就来下载吧.很经典的. C语言贪吃蛇代码原理: 产生一个固定大小没有边界的游戏区域,蛇从区域的中心开始,由玩家通过键盘控制蛇的 ...

最新文章

  1. Tomcat配置虚拟路径,使上传文件与服务器及工程文件分离开
  2. 深入理解Aho-Corasick自动机算法
  3. SX1280抗WIFI强干扰电磁环境能力解析
  4. Java Servlet(八):EL自定义函数
  5. 无线AP和无线路由的Wi-Fi性能哪个更好?
  6. 数据结构之队列java版
  7. Maven依赖下载速度慢,不用怕,这么搞快了飞起
  8. CDLINUX——minidwep-gtk
  9. 敏捷团队章程的实践精要
  10. wordpress媒体库增加分类和标签
  11. 机器学习理论知识的自学整理(持续更新,建议收藏)
  12. 相干接收机matlab仿真,基于DP-16QAM的400Gbit/s集成相干接收机关键技术研究
  13. apk部分手机安装失败_安卓手机安装软件失败的4种常见原因和解决办法
  14. 如何设置QQ空间免费背景音乐
  15. x星球出入站(蓝桥杯递归)
  16. Vue3警告:[Vue warn] Extraneous non-emits event listeners (changeParentProps) were passed to component
  17. 加密与解密 入侵检测 扫描与抓包
  18. 一百元的钞票能拍卖出多少钱?
  19. 卡马克揭开VR延迟背后的真相
  20. mysql 自动生成时间戳

热门文章

  1. 银河麒麟服务器v10 sp2安装fio磁盘IO检测工具
  2. Activiti6.0 - 核心数据库表及字段注释说明
  3. EndnoteX7插入文献时,提示“访问未命名的文件时尝试越过其结尾”的解决方法
  4. 第四章:mongodb 命令行操作进程控制性能优化
  5. 软考初级程序员---题目(二)
  6. python熵权法求权重
  7. KITTI数据集下载以及处理
  8. Python3学习笔记_INDEX(汇总)
  9. Win7桌面设置便签和备忘录的具体操作方法
  10. 屏幕空间的动态全局光照(漫反射)