python贪吃蛇报告_python实现贪吃蛇游戏

本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下

本文稍作改动,修复一些bug,原文链接:python实现贪吃蛇游戏 #!/usr/bin/env python

coding: utf-8

import pygame,sys,time,random

from pygame.locals import *

redColour = pygame.Color(255,0,0)

blackColour = pygame.Color(0,0,0)

whiteColour = pygame.Color(255,255,255)

greyColour = pygame.Color(150,150,150)

def gameOver(playSurface):

gameOverFont = pygame.font.Font(‘arial.ttf’,72)

gameOverSurf = gameOverFont.render(‘Game Over’,True,greyColour)

gameOverRect = gameOverSurf.get_rect()

gameOverRect.midtop = (320,10)

playSurface.blit(gameOverSurf,gameOverRect)

pygame.display.flip()

time.sleep(5)

pygame.quit()

sys.exit()

def main():

pygame.init()

playSurface = pygame.display.set_mode((640,480))

fpsClock = pygame.time.Clock()

pygame.display.set_caption(‘Snake Liu’)

snakePosition = [100,100]

snakeSegments = [[100,100],[80,100],[60,100]]

raspberryPosition = [300,300]

raspberrySpawned = 1

direction = ‘right’

changeDirection = direction

while True:

for event in pygame.event.get():

if event.type == QUIT:

sys.exit()

elif event.type == KEYDOWN:

if event.key == K_RIGHT or event.key == ord(‘d’):

changeDirection = ‘right’

if event.key == K_LEFT or event.key == ord(‘a’):

changeDirection = ‘left’

if event.key == K_UP or event.key == ord(‘w’):

changeDirection = ‘up’

if event.key == K_DOWN or event.key == ord(‘s’):

changeDirection = ‘down’

if event.key == K_ESCAPE:

pygame.event.post(pygame.event.Event(QUIT))

判断是否输入了反方向,与原文有改动

if changeDirection == ‘right’:

direction = changeDirection

if changeDirection == ‘left’:

direction = changeDirection

if changeDirection == ‘up’:

direction = changeDirection

if changeDirection == ‘down’:

direction = changeDirection

根据方向移动蛇头的坐标

if direction == ‘right’:

snakePosition[0] += 20

if direction == ‘left’:

snakePosition[0] -= 20

if direction == ‘up’:

snakePosition[1] -= 20

if direction == ‘down’:

snakePosition[1] += 20

增加蛇的长度

snakeSegments.insert(0,list(snakePosition))

判断是否吃掉了树莓

if snakePosition[0] == raspberryPosition[0] and snakePosition[1] == raspberryPosition[1]:

raspberrySpawned = 0

else:

snakeSegments.pop()

如果吃掉树莓,则重新生成树莓

if raspberrySpawned == 0:

x = random.randrange(1,32)

y = random.randrange(1,24)

raspberryPosition = [int(x20),int(y20)]

raspberrySpawned = 1

刷新pygame显示层

playSurface.fill(blackColour)

for position in snakeSegments:

pygame.draw.rect(playSurface,whiteColour,Rect(position[0],position[1],20,20))

pygame.draw.rect(playSurface,redColour,Rect(raspberryPosition[0], raspberryPosition[1],20,20))

pygame.display.flip()

判断是否死亡,后面几行和原文有改动

if snakePosition[0] > 620 or snakePosition[0] < 0:

gameOver(playSurface)

if snakePosition[1] > 460 or snakePosition[1] < 0:

gameOver(playSurface)

for snakeBody in snakeSegments[1:]:

if snakePosition[0] == snakeBody[0] and snakePosition[1] == snakeBody[1]:

gameOver(playSurface)

fpsClock.tick(5)

if name == “main“:

main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

Original: https://blog.csdn.net/weixin_33498296/article/details/113678907
Author: 北山南湖
Title: python贪吃蛇报告_python实现贪吃蛇游戏

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/781464/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 运行的第一个Django

    2022-09-24 创建了一个Django项目后,进行测试,输入指令: python manage.py runserver 出现了如下问题: 我还想着,Django模块通过安装…

    Python 2023年6月9日
    065
  • 在 Python 中安装 yaml

    Install YAML in Python | Delft Stack: https://www.delftstack.com/howto/python/pip-install-…

    Python 2023年8月2日
    076
  • 动手学数据分析(一):数据载入与观察

    文章目录 数据载入与观察 * 1 载入数据 – 1.1相对路径导入数据 1.2绝对路径导入数据 + * read_csv 与read_table的区别 1.3数据模块读…

    Python 2023年8月9日
    068
  • Pandas个人最强笔记

    import numpy as np import pandas as pd import time import warnings warnings.filterwarnings…

    Python 2023年8月18日
    048
  • 创建scrapy项目

    模块名职责是否需要实现Scrapy Engine(引擎)总指挥: 负债数据和信号在不同的模块之间传递scrapy 已经实现Scheduler(调度器)一个队列,存放引擎发过来的re…

    Python 2023年10月6日
    048
  • matplotlib简介

    使用默认配置 import numpy as np import matplotlib.pyplot as plt X = np.linspace(-np.pi, np.pi, 2…

    Python 2023年9月2日
    041
  • 文件流处理流式处理大数据处理

    20210315 https://www.yuque.com/7125messi/wydusr/wweetn42-(重要重要重要)加速pandas(Modin和pandaralle…

    Python 2023年8月22日
    051
  • 从零开始打造云端AI管理调度平台(七)内容库的设计_2

    最近闲来无事,想着把自己工作正在做的一个项目做一个简单的分享与实战教程,该项目不困难但是由于涉及要素过多所以比较复杂。所以这里分享出来也是为了帮助新手小白能在实战当中快速了解pyt…

    Python 2023年8月6日
    048
  • Python中通过property实现属性的修改、删除、查看

    1. property的作用 在Python中,属性可以完成赋值、取值、删除的操作。如果我们想要在完成这些操作前,进行属性的校验工作(例如:赋值前判断数据的有效性、删除前判断合法性…

    Python 2023年8月4日
    058
  • Python制作炫酷的个人足迹地图

    用Python来绘制自己的个人足迹地图, 精确到市级别。 首先我们需要安装以下Python的第三方模块: echarts-china-cities-pypkg==0.0.9 ech…

    Python 2023年5月23日
    059
  • web前端-表单的使用详解

    🐚作者简介:苏凉(专注于网络爬虫,数据分析)🐳博客主页:苏凉.py的博客🌐系列专栏:web前端基础教程👑名言警句:海阔凭鱼跃,天高任鸟飞。📰要是觉得博主文章写的不错的话,还望大家三…

    Python 2023年11月8日
    062
  • anaconda安装gpu版pytorch(conda+pip+离线方法)

    anaconda安装gpu版pytorch(cuda11.1) 众所周知,在anaconda安装库什么的属实有点玄学,有时一下就安好了,有时候一直报不知名错误,所以,特地将安装 g…

    Python 2023年9月7日
    062
  • 链表基础知识详解(非常详细简单易懂)

    概述: 链表作为 C 语言中一种基础的数据结构,在平时写程序的时候用的并不多,但在操作系统里面使用的非常多。不管是RTOS还是Linux等使用非常广泛,所以必须要搞懂链表,链表分为…

    Python 2023年9月30日
    046
  • 【RK356X Android11】开发之4G模块(广和通模块NL668)

    目录 前言 一、Kernel调试 二、Android层调试 三、移植过程 四、问题与解决 前言 4G模块 主要利用于无线上网和通话功能的移动设备,或者用以没有WIFI或者以太网的地…

    Python 2023年11月7日
    080
  • 快速绘制流程图「GitHub 热点速览 v.22.47」

    画流程图一直是研发的一个难题,如何画得通俗易懂已经够让人头疼了,还要美观大方。用 d2 的语法描述下流程,d2 会自动帮你生成一张配色极佳的流程图。说到研发的选择,本周特推的 ch…

    Python 2023年10月13日
    046
  • 读书方法

    旧书不厌百回读,熟读深知子自知。 要研究透彻本专业的经典。 读书要学会终身下苦功夫,知十而非真知,不如知一之真知也,读书不能一知半解。 读书决定了一个人的见识和思想的深刻,这些都是…

    Python 2023年10月28日
    056
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球