广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python贪吃蛇核心功能实现上
  • 807
分享到

python贪吃蛇核心功能实现上

2024-04-02 19:04:59 807人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本次做一个最简单的贪食蛇雏形游戏,就是一个小蛇在画面上移动,我们可以控制蛇的移动方向,但是不能吃东西,蛇不会长大。但是基础的有了,完整版的贪食蛇还远吗?双人贪食蛇不也就那么回事吗?

本次做一个最简单的贪食蛇雏形游戏,就是一个小蛇在画面上移动,我们可以控制蛇的移动方向,但是不能吃东西,蛇不会长大。但是基础的有了,完整版的贪食蛇还远吗?双人贪食蛇不也就那么回事吗?

先做一个简单的,有机会再放出不那么简单,但依旧简陋的标准贪食蛇和双人贪食蛇。

首先,pygam的各种配置参数,直接使用之前的配置,多退少补。

import random
import time
import pygame
fps = 30
fps_clock = pygame.time.Clock()
screen_width = 640
screen_height = 480
display = pygame.display.set_mode((screen_width, screen_height), 0, 32)
pygame.display.set_caption('贪食蛇')
tile_size = 20
tile_width = 20
tile_height = 20
#横纵间距
x_margin = 100
y_margin = 100
#列
columns = int((screen_width - 100) / 20)
#行
rows = int((screen_height - 100) / 20)
directions = ['up', 'down', 'left', 'right']
#配色RGB
white = 'white'
black = 'black'
bg_color = 'sky blue'
border_color = white
if __name__ == '__main__':
    while True:
        display.fill(bg_color)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
        pygame.display.update()
        fps_clock.tick(fps)

基本的配置函数,棋盘类游戏常规操作。

运行游戏会得到一个天蓝色的画布,什么都没有。

接下来,在画布上画出二维棋盘,也就是贪食蛇运动的场地。这里我们有几种选择,此处我选择一种最简单的方式,也就是整个棋盘不对应二维列表,只为贪食蛇本身创建一个列表,用来储存贪食蛇的身体。

首先绘制一个大棋盘。

def draw_chest():
    for i in range(rows + 1):
        pygame.draw.line(display, border_color, (x_margin/2, y_margin/2 + i * tile_size),
                         (x_margin/2 + (columns * tile_size), y_margin/2 + i * tile_size), 2)
    for j in range(columns + 1):
        pygame.draw.line(display, border_color, (x_margin/2 + j * tile_size, y_margin/2),
                         (x_margin/2 + j * tile_size, y_margin/2 + (rows * tile_size)), 2)

然后主循环里调用,然后运行程序。

贪食蛇的运动空间已经出现了。

创建一个列表,用来存放贪食蛇的身体。默认贪食蛇的长度为3。具体大小可以根据自己的喜欢修改,我就写3了。

那么需要基于这两个数值来生成蛇的身体的第一个位置。例如,我们生成的蛇的身体的第一个位置是[3][3],那么对应的在屏幕中[3][3]所对应的坐标位置,绘制一个小方块,同时默认蛇的身体是往右延伸,那么蛇的身体参数则为[3][3],[3][4],[3][5]

考虑到让蛇随机出现在画面中的某些地方,所以生成蛇的身体是照顾到各方,随机数的范围如下:

在主循坏外创建列表,添加身体,身体保持在画面中央部分。

snake_body = []
    snake_x = random.randint(5, rows - 5)
    snake_y = random.randint(5, columns - 5)
    snake_body.append([snake_x, snake_y])
    snake_body.append([snake_x, snake_y + 1])
    snake_body.append([snake_x, snake_y + 2])
    return snake_body

为绘制蛇的身体,编写绘制函数。

def draw_snake_shape(shapes):
    for shape in shapes:
        left_position = shape[1] * tile_size + x_margin/2
        top_position = shape[0] * tile_size + y_margin/2
        # 画出整个身体背景色
        pygame.draw.rect(display, body_color, (left_position, top_position, tile_size, tile_size))
        # 画出内部颜色
        pygame.draw.rect(display, inter_body_color, (left_position+4, top_position+4, tile_size-8, tile_size-8))

在主循环中调用,运行游戏,每次运行,蛇都在不同的位置,同时不会出现在边缘。

接下来就是让蛇动起来。

让蛇动起来的核心思想就是,根据蛇当前的前进方向,增加和删除snake_body中的坐标值。比如,下一步蛇的运动方向是up,那么确认当前up方向是合法的时候,即往上走一步不会走到边界,或者当前正在往下走,那么,我们得出新的坐标点,加入到snake_body中,同时删除列表最后一个数据,因为当前没有苹果可以吃嘛。

先定义一个判断下一个坐标点是否合法的函数。

def is_right_direction(body, x_location, y_location):
    valid_direction = False
    if 0 <= x_location <= rows-1 and 0 <= y_location <= columns - 1:
        valid_direction = True
    return valid_direction

在主循环中加入程序处理贪食蛇按照某个固定的方向移动时对于贪食蛇身体列表的操作。

首先在进入主循环前,获取当前需要移动的方向

direction = directions[random.randint(0, 3)]
    while True:

在主循环内部,增加代码处理身体移动

#未按下按键时,默认的初识移动方向
        new_body_location = (None, None)
        match direction:
            case 'left':
                new_body_location = snake_body[0][0], snake_body[0][1] - 1
            case 'right':
                new_body_location = snake_body[0][0], snake_body[0][1] + 1
            case 'up':
                new_body_location = snake_body[0][0] - 1, snake_body[0][1]
            case 'down':
                new_body_location = snake_body[0][0] + 1, snake_body[0][1]
        snake_body.insert(0, new_body_location)
        del snake_body[-1]

此时运行程序,贪食蛇会像闪电一般快速移动到屏幕边缘。

根本来不及截图,因为我们的刷新率是30帧每秒,所以太快了,此时有多种解决方案,最简单的一种是修改刷新率,比如修改为2,那么就会看到蛇缓慢移动了。非常简单啦。也可以考虑在移动部分做定时,或者做累加延迟等等。这里我修改了fps=2。

接下来增加控制部分,这部分很简单。

在按键部分设定上下左右按键控制方向,同时要注意,贪食蛇不能直接掉头走。

#键盘控制改变贪食蛇的方向
            elif event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT and direction != 'right':
                    direction = 'left'
                elif event.key == pygame.K_RIGHT and direction != 'left':
                    direction = 'right'
                elif event.key == pygame.K_UP and direction != 'down':
                    direction = 'up'
                elif event.key == pygame.K_DOWN and direction != 'up':
                    direction = 'down'

游戏结束机制,也就是蛇碰到边界游戏结束。

        if is_right_direction(snake_body, new_body_location[0], new_body_location[1]):
            snake_body.insert(0, new_body_location)
            del snake_body[-1]
        else:
            snake_body = []
            snake_x = random.randint(5, columns - 5)
            snake_y = random.randint(5, rows - 5)
            snake_body.append([snake_x, snake_y])
            snake_body.append([snake_x, snake_y + 1])
            snake_body.append([snake_x, snake_y + 2])

框架级别的贪食蛇制作完成了,如果再加入一个小苹果,增加一个增加身体条件就有一个完整的贪食蛇了。再追加一个追尾机制,和一条新的蛇就可以双人对战了。

到此这篇关于python贪吃蛇核心功能实现上的文章就介绍到这了,更多相关Python贪吃蛇内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python贪吃蛇核心功能实现上

本文链接: https://www.lsjlt.com/news/120504.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python贪吃蛇核心功能实现上
    本次做一个最简单的贪食蛇雏形游戏,就是一个小蛇在画面上移动,我们可以控制蛇的移动方向,但是不能吃东西,蛇不会长大。但是基础的有了,完整版的贪食蛇还远吗?双人贪食蛇不也就那么回事吗? ...
    99+
    2022-11-11
  • python贪吃蛇核心功能实现下
    紧接上回,已经完成了单独的贪食蛇的控制,但是呢,居然没有苹果可以吃,所以,非常简单的加入苹果,同时呢,修改一下主程序中贪食蛇的创建,单独编写一个贪食蛇身体生成函数,这样将来要做双蛇也...
    99+
    2022-11-11
  • python实现贪吃蛇游戏
    文章目录 1、效果2、实现过程3、代码 1、效果 2、实现过程 导入 Pygame 和 random 模块。初始化 Pygame。设置游戏界面大小、背景颜色和游戏标题。定义颜色常量。...
    99+
    2023-09-29
    python 游戏 pygame
  • Python turtle实现贪吃蛇游戏
    本文实例为大家分享了Python turtle实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 # Simple Snake Game in Python 3 for Beginners import tu...
    99+
    2022-06-02
    python turtle 贪吃蛇
  • python如何实现贪吃蛇游戏
    这篇文章主要介绍了python如何实现贪吃蛇游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。游戏实现效果如下:后面有完整代码和解析import sysimport...
    99+
    2023-06-14
  • python怎么实现贪吃蛇游戏
    要实现贪吃蛇游戏,可以使用Python中的pygame库来进行游戏界面的绘制和键盘事件的监听。以下是一个简单的贪吃蛇游戏的示例代码:...
    99+
    2023-08-09
    python
  • Python实现自动玩贪吃蛇程序
    目录实现效果代码实现效果 先看看效果 这比我手动的快多了,而且是单机的,自动玩没惹骂我,哈哈 ,多人游戏整个自动玩会被骂死~ 代码 没装软件的先安装一下软件,没装模块的安装一下py...
    99+
    2022-11-12
  • python实现双人贪吃蛇小游戏
    小编今天要给大家分享的是双人贪吃蛇,大家可以和自己的兄弟,姐妹,爸爸,妈妈等一起玩哟!我先介绍一下游戏: 运行游戏,进入初始界面,按下空格键。 玩家(1):w,a,s,d 玩家(2):↑,←,↓,→ 玩家要争夺7个实...
    99+
    2022-06-03
    python 贪吃蛇
  • python实现简单贪吃蛇小游戏
    本文实例为大家分享了python实现简单贪吃蛇的具体代码,供大家参考,具体内容如下 1. 导入游戏库 import pgzrun import random 2.游戏初始化 # 窗口...
    99+
    2022-11-11
  • python实现简单的贪吃蛇游戏
    本文实例为大家分享了python实现贪吃蛇游戏的具体代码,加入按钮、难度、音乐、得分功能,供大家参考,具体内容如下 贪吃蛇小游戏,可以显示出得分,又背景音乐,难度选择和开始重启按钮设...
    99+
    2022-11-11
  • 如何实现贪吃蛇Python小游戏
    这篇文章主要介绍“如何实现贪吃蛇Python小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何实现贪吃蛇Python小游戏”文章能帮助大家解决问题。贪吃蛇Python小游戏(源码+注释+粘贴即...
    99+
    2023-07-05
  • Python实现智能贪吃蛇游戏的示例代码
    目录前言基本环境配置实现效果实现代码前言 我想大家都玩过诺基亚上面的贪吃蛇吧,本文将带你一步步用python语言实现一个snake小游戏。 基本环境配置 版本:Python3 系统:...
    99+
    2022-11-11
  • python如何实现简单贪吃蛇小游戏
    本篇内容介绍了“python如何实现简单贪吃蛇小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 导入游戏库import p...
    99+
    2023-07-02
  • Python 实现 贪吃蛇大作战 代码分享
    感觉游戏审核新政实施后,国内手游市场略冷清,是不是各家的新游戏都在排队等审核。媒体们除了之前竞相追捧《Pokemon Go》热闹了一把,似乎也听不到什么声音了。直到最近几天,突然听见好几人都提到同一个游戏...
    99+
    2022-06-04
    大作战 贪吃蛇 代码
  • Python实现贪吃蛇小游戏(单人模式)
    简单用py写了一个贪吃蛇游戏,有单人、双人模式,比较简单,适合初学者练手。基本上每行重要的语句都有注释,做了什么事一目了然 这里先介绍单人模式 一、游戏设计要点 1.游戏主体窗口(尺...
    99+
    2022-11-12
  • Python实现贪吃蛇小游戏(双人模式)
    简单用py写了一个贪吃蛇游戏,有单人、双人模式,比较简单,适合初学者练手。本上每行重要的语句都有注释,做了什么事一目了然 这里介绍双人模式 单人模式戳这里:Python简易贪吃蛇小游...
    99+
    2022-11-12
  • Python如何实现自动玩贪吃蛇程序
    本篇内容主要讲解“Python如何实现自动玩贪吃蛇程序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何实现自动玩贪吃蛇程序”吧!实现效果先看看效果这比我手动的快多了,而且是单机的,...
    99+
    2023-06-22
  • Python使用海龟绘图实现贪吃蛇游戏
    在实现贪吃蛇游戏时,首先需要使用python内置的turtle模块来实现创建游戏窗体与键盘按键的监听工作,然后使用freegames模块进行贪吃蛇的绘制工作。 1、turtle模块 turtle模块是python的内...
    99+
    2022-06-02
    python 贪吃蛇
  • Python利用手势识别实现贪吃蛇游戏
    目录一、前言二、项目介绍1、游戏的操作方式2、开发的过程中的注意事项三、游戏的实现要点1、选择第三方库2、找到关键点并标记3、创建一个类来保存关于游戏的所有功能4、定义函数进行不断更...
    99+
    2022-11-10
  • python中怎么利用pygame实现贪吃蛇游戏
    这篇文章给大家分享的是有关python中怎么利用pygame实现贪吃蛇游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言之前尝试了自己用pygame写井字棋,这次玩的是贪吃蛇系列。个人感觉模块可能会比较大...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作