python 贪吃蛇

import pygame
import sys
from pygame.locals import*
import numpy as np
from random import randint
pygame.init()

rect_width=20
size=width,height=800,500
COLOR=(100,30,39)#蛇的颜色
x_rect=int(width/rect_width)
y_rect=int(height/rect_width)#长宽格子有多个

speed=[0,1]
bg=(100,180,180)
screen=pygame.display.set_mode(size)
pygame.display.set_caption("python趣味爱好者")
snake_new=[3,4]
font=pygame.font.Font(None,20)
food_live=1#食物的生命是否存在
Food=[12,18]#食物所在的坐标

ground=np.zeros([x_rect,y_rect])#整条蛇占据的矩阵,0是没有。

snake=[[5,5],[5,6],[5,7]]
food0=1
def get_rect(row,column):#计算应该在哪里画方格,以右上角为点。
    x1=rect_width*row
    y1=rect_width*column

    return (x1,y1,rect_width,rect_width)

#pygame.draw.rect(screen,COLOR,get_rect(row,column),0)

def move_snake(speed,food1):
    global snake_new

    k1=snake[0][0]+speed[0]
    k2=snake[0][1]+speed[1]
    snake_new=[k1,k2]
    snake.insert(0,snake_new)
    if food1==1:#如果吃到了食物就不用管了
        pass
    else:
        del snake[-1]#没吃到食物就删除最后一项
        
def meet_food(snake_pos,food_pos):
    global food0
    global food_live
    if snake_pos[0]==food_pos:
        food_live=0
        food0=1
       
    else:
        food0=0
     
    

def draw_snake(snakebody):
    for i in snakebody:
        pygame.draw.rect(screen,COLOR,get_rect(i[0],i[1]),0)



def draw_food(x,y):
    pygame.draw.rect(screen,COLOR,get_rect(x,y),0)
    
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
        
        if event.type==KEYDOWN:
            if event.key==K_LEFT:
                speed=[-1,0]
            if event.key==K_RIGHT:
                speed=[1,0]
            if event.key==K_UP:
                speed=[0,-1]
            if event.key==K_DOWN:
                speed=[0,1]

    if food_live:
        pass
    else:
        Food=[randint(0,x_rect-1),randint(0,y_rect-1)]#随机生成食物的位置。
        food_live=1


   
    meet_food(snake,Food)
        

    move_snake(speed,food0)


    screen.fill(bg)
    #pygame.draw.rect(screen,(23,56,78),get_rect(10,10),0)
 
    draw_snake(snake)
    draw_food(Food[0],Food[1])
    
    pygame.display.flip()
    pygame.time.delay(180)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nycSerendipity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值