首页 > 编程语言 >用Python写的贪吃蛇游戏。

用Python写的贪吃蛇游戏。

时间:2024-08-03 20:23:37浏览次数:15  
标签:10 游戏 Python pos food 贪吃蛇 snake time pygame

冽:

编写一个贪吃蛇游戏。

这里提供一个简单的Python贪吃蛇游戏示例。

使用标准库 pygame 来实现图形界面:

首先,确保你已经安装了 pygame 库。如果没有安装,可以通过以下命令安装:

pip install pygame

然后,你可以使用以下代码来创建一个基本的贪吃蛇游戏:

import pygame

import time

import random

 

# 初始化pygame

pygame.init()

 

# 设置窗口大小

width, height = 640, 480

screen = pygame.display.set_mode((width, height))

pygame.display.set_caption('贪吃蛇')

 

# 颜色定义

white = (255, 255, 255)

red = (213, 50, 80)

green = (0, 255, 0)

blue = (50, 153, 213)

black = (0, 0, 0)

 

# 蛇的初始位置和长度

snake_pos = [100, 50]

snake_body = [[100, 50], [90, 50], [80, 50]]

snake_length = len(snake_body)

direction = 'RIGHT'

change_to = direction

 

# 食物的初始位置

food_pos = [random.randrange(1, (width//10)) * 10, random.randrange(1, (height//10)) * 10]

 

# 游戏速度

clock = pygame.time.Clock()

food_spawn_time = 0

food_spawn_interval = 5 # 每秒生成食物

 

# 游戏主循环

while True:

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            pygame.quit()

            quit()

        elif event.type == pygame.KEYDOWN:

            if event.key == pygame.K_UP or event.key == ord('w'):

                change_to = 'UP'

            if event.key == pygame.K_DOWN or event.key == ord('s'):

                change_to = 'DOWN'

            if event.key == pygame.K_LEFT or event.key == ord('a'):

                change_to = 'LEFT'

            if event.key == pygame.K_RIGHT or event.key == ord('d'):

                change_to = 'RIGHT'

 

    # 更新蛇头的位置

    if change_to == 'UP':

        snake_pos[1] -= 10

    if change_to == 'DOWN':

        snake_pos[1] += 10

    if change_to == 'LEFT':

        snake_pos[0] -= 10

    if change_to == 'RIGHT':

        snake_pos[0] += 10

 

    # 检查蛇头是否撞到自己的身体

    if snake_pos in snake_body:

        print('Game Over')

        pygame.time.wait(2000)

        snake_body = [[100, 50], [90, 50], [80, 50]]

        snake_length = len(snake_body)

        snake_pos = [100, 50]

        direction = 'RIGHT'

        change_to = direction

 

    # 检查蛇是否吃到食物

    if snake_pos == food_pos:

        snake_length += 1

        food_spawn_time = time.time()

        food_pos = [random.randrange(1, (width//10)) * 10, random.randrange(1, (height//10)) * 10]

 

    # 移动蛇的身体

    snake_body.insert(0, list(snake_pos))

    if snake_length > len(snake_body):

        snake_body.pop()

 

    # 绘制游戏界面

    screen.fill(black)

    for pos in snake_body:

        pygame.draw.rect(screen, green, pygame.Rect(pos[0], pos[1], 10, 10))

    pygame.draw.rect(screen, red, pygame.Rect(food_pos[0], food_pos[1], 10, 10))

 

    pygame.display.flip()

 

    # 控制游戏速度

    clock.tick(10)

 

    # 控制食物生成速度

    if time.time() - food_spawn_time > food_spawn_interval:

        food_pos = [random.randrange(1, (width//10)) * 10, random.randrange(1, (height//10)) * 10]

        food_spawn_time = time.time()

这段代码创建了一个具有基本功能的贪吃蛇游戏,包括键盘控制、食物生成和游戏结束条件。游戏的内存使用量将取决于你的操作系统和 pygame 库的实现,如果你需要进一步优化内存使用,可能需要考虑更复杂的内存管理技术,但这通常对于贪吃蛇这样的简单游戏不是必需的。

 

 

标签:10,游戏,Python,pos,food,贪吃蛇,snake,time,pygame
From: https://blog.csdn.net/2401_86529300/article/details/140896161

相关文章

  • day014(二叉树章节)+北境互娱游戏开发一面
    222.完全二叉树节点的个数给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第h层,则该层包含1~ 2h 个......
  • python系列&deep_study系列:【Conda】常用命令和常用镜像源修改
    【Conda】常用命令和常用镜像源修改【Conda】常用命令和常用镜像源修改前言1,创建和修改镜像源2,使用镜像源3,修改pip源方法一方法二3,修改conda源方法一方法二4,查看和还原5,常用的镜像源:【Conda】常用命令和常用镜像源修改前言记录常......
  • (全)Python 的虚拟环境构建和jupyter notebook 中虚拟环境切换
    1、在开始菜单打开AnacondaPrompt(anaconda3)2、构建虚拟环境语法:condacreate--name虚拟环境名字python=版本号condacreate--namepy38_env02python=3.83、激活虚拟环境语法:condaactivate虚拟环境名称 4、环境变量的配置“我的电脑”→右键→属性 ......
  • 14:Python字典属性
    #字典,字典是另一种可变容器模型,且可存储任意类型对象。#字典的每个键值key=>value对用冒号:分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中#dict#字典是无序的#info[ˈɪnfəʊ]信息info={'k1':"v1",'k2':"v2"}#字典的value可以是任何值info=......
  • python中列表的学习
    列表目录列表列表的定义创建列表列表的索引列表的切片内置函数列表的遍历列表的常用方法(变量.方法名())列表的定义List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组专门用于存储一串信息列表用[]定义,数据之间使用﹐分隔列表的索引从О开始索引就是数据在列......
  • python 如何获取导入包中运行脚本的文件名
    我有两个脚本:main.pyimportpackage.pypackage.pyimportosprint(os.path.basename(_file_))我的预期输出是main.py,但我得到package.py那么我如何在包脚本中获取正在运行的脚本的文件名?额外描述:事实是,我在p......
  • Python+Pycharm下载安装教程,基础知识(详细教程)
    这是一篇针对初学者的 Python 基础教程,只要你认真阅读,花费30分钟即可快速了解Python。这篇Python入门教程讲解的知识点包括:Python编程环境的搭建、Python基本操作入门、Python数据类型、Python语句和函数。Python环境下载和配置根据Windows版本(64位/32位)从P......
  • PC畅玩Switch游戏——塞尔达传说 织梦岛 XCI整合
    【收藏】塞尔达传说织梦岛模拟器版本资源中文版1.0.1升补XCI整合模拟器安装关于模拟器安装可以参看之前发布的模拟器安装教程游戏剧情简介《塞尔达传说:织梦岛》是任天堂制作的Q版二头身动作角色扮演游戏。本作是极少数几个故事没有发生在传说中的海拉尔王国大陆的......
  • 在Python中发出警告而不中断程序
    我试图在Python中发出警告,而不会使程序崩溃/停止/中断。我使用以下简单函数来检查用户是否向其传递了非零数字。如果是这样,程序应该警告他们,但继续正常进行。它应该像下面的代码一样工作,但应该使用类Warning()、Error()或Exception()而不是手动......
  • Python中动态类和动态方法的创建与调用
    借助于python的动态语言特性,很容易对对象进行添加方法或者属性,这也是python的灵活之一。动态生成类的属性及其方法在某些情况可能要根据不同的参数来动态生成不同的实例方法、静态方法、类方法。下面的例子中则展示了如何动态地向类中添加属性和方法。importtypesclassPers......