人生苦短,我用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 <