【源码直送】Python会自己动的贪吃蛇脚本❤

人生苦短,我用python

这次给大家带来一个超级超级超级超级!

炫酷的小东西!

如果你不要自己动的也可以哈~

还有更多的好东西~
都在这里❤

python 安装包+资料:点击此处跳转文末名片获取

实现效果

请添加图片描述

这确实是一个好摸鱼的好东西哈哈哈哈

在这里插入图片描述

代码

没装软件的先安装一下软件,
没装模块的安装一下pygame模块

pip install pygame

导入模块

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)
greenColour = pygame.Color(0,255,0)
headColour = pygame.Color(0,119,255)

在所有后续的除法中,
为预防pygame输出出现偏差,
必须取除数(//)而不是单纯除法(/)

程序界面

第0行,HEIGHT行,
第0列,WIDTH列为围墙,
所以实际大小是13*13

IGHT = 15
WIDTH = 15
FIELD_SIZE = HEIGHT * WIDTH
# 蛇头位于snake数组的第一个元素 python学习交流扣扣qun:903971231
HEAD = 0

用数字代表不同的对象,
因为运动时矩阵上每个格子会处理成到达食物的路径长度,
因此这三个变量间需要有足够大的间隔(>HEIGHT*WIDTH)来互相区分,
小写一般是坐标,大写代表常量。

FOOD = 0
UNDEFINED = (HEIGHT + 1) * (WIDTH + 1)
SNAKE = 2 * UNDEFINED
FOOD = 0
UNDEFINED = (HEIGHT + 1) * (WIDTH + 1)
SNAKE = 2 * UNDEFINED

snake是一维数组,
对应元素直接加上以下值就表示向四个方向移动。

LEFT = -1
RIGHT = 1
UP = -WIDTH # 一维数组,所以需要整个宽度都加上才能表示上下移动。
DOWN = WIDTH 

在这里插入图片描述

错误码

ERR = -2333

用一维数组来表示二维的东西,
board表示蛇运动的矩形场地,
初始化蛇头在(1,1)的地方,
初始蛇长度为1。

board = [0] * FIELD_SIZE #[0,0,0,……]
snake = [0] * (FIELD_SIZE+1)
snake[HEAD] = 1*WIDTH+1
snake_size = 1

与上面变量对应的临时变量,
蛇试探性地移动时使用。

tmpboard = [0] * FIELD_SIZE
tmpsnake = [0] * (FIELD_SIZE+1)
tmpsnake[HEAD] = 1*WIDTH+1
tmpsnake_size = 1

food:食物位置初始在(4, 7),
best_move: 运动方向。

food = 4 * WIDTH + 7
best_move = ERR

运动方向数组,
游戏分数(蛇长)

mov = [LEFT, RIGHT, UP, DOWN]                                           
score = 1 

检查一个cell有没有被蛇身覆盖,
没有覆盖则为free,返回true 。

def is_cell_free(idx, psize, psnake):
    return not (idx in psnake[:psize]) 

检查某个位置idx是否可向move方向运动

def is_move_possible(idx, move):
    flag = False
    if move == LEFT:
        #因为实际范围是13*13,[1,13]*[1,13],所以idx为1时不能往左跑,此时取余为1所以>1
        flag = True if idx%WIDTH > 1 else False
    elif move == RIGHT:
        #这里的<WIDTH-2跟上面是一样的道理
        flag = True if idx%WIDTH < 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值