贪吃蛇python游戏

贪吃蛇经典小游戏,使用python程序进行自制复刻

gitcode项目链接:Austin-Clinton / 贪吃蛇python版 · GitCode

源代码:

#贪吃蛇Python游戏
#by hhh in 2021.4.18 first (后续维护)4.20 second 4.22 third 9.23 9.24 Fourthly
#2022.9.25 CSDN@Austin-Cliton
import pygame
import sys
import random

i=3#起始节数
k=0#速度增量
BLACK = (0,0,0)#颜色定义
RED= (255,0,0)
BLUE = (25,90,220)

size = width,height = 600,600#建图
surface = pygame.display.set_mode(size)

snake_length = [[150,150],[140,150],[130,150]]#蛇定义
snake_position = [150,150]

food_position = [random.randint(1,49)*10,random.randint(1,49)*10]#食物定义

direction = 'right'#初始化方向

def Begin():#初始化+刷新函数
    pygame.display.set_caption('109的贪吃蛇 by Hhh')
    pygame.time.Clock().tick(22+k)
    image = pygame.image.load('505.png').convert()
    surface.blit(image, (0, 0))
    # surface.fill(BLACK)
    for i in snake_length:
        pygame.draw.rect(surface, BLUE, (i[0], i[1], 10, 10), 0)
        pygame.draw.rect(surface, RED, (food_position[0], food_position[1], 10, 10), 0)#画蛇
    drawScore()#得分函数
    pygame.display.flip()#刷新页面

def Go():#前进函数
    if direction == 'right':
        snake_position[0] += 10
    if direction == 'left':
        snake_position[0] -= 10
    if direction == 'up':
        snake_position[1] -= 10
    if direction == 'down':
        snake_position[1] += 10

def Grow():#生长函数
    snake_length.insert(0, list(snake_position))
    if snake_position[0] == food_position[0] and snake_position[1] == food_position[1]:
        food_position[0] = random.randint(1,49)*10
        food_position[1] = random.randint(1,49)*10
        global i
        i += 1
        global k
        k += 2
    else:
        snake_length.pop()#移除最后一个元素

def Kill():#自杀函数(头撞身体)
    global A#自杀指数
    A = 1#自杀存疑
    for k in range(2,i,1):
        if snake_position == snake_length[k]:
            A = 0#自杀确认
            break

def Exit():#退出函数
        print("...Game Over...")
        while 1:
            if pygame.event.get(pygame.KEYDOWN) or pygame.event.get(pygame.QUIT):
                 break

def drawScore():#得分函数
    s=i-3
    pygame.init()  # 字体设置:开启注释
    font1 = pygame.font.SysFont('宋体', 30)  # 设置系统字体
    font_list = pygame.font.get_fonts()  # 获得系统可用字体
    surface1 = font1.render('score: %s'% (s),True,[255,0,0])#打印字体
    surface.blit(surface1,[20,20])#显示颜色
    surface2 = font1.render('velocity: %s' % (22+k), True, [255, 0, 0])
    surface.blit(surface2, [450, 20])

while 1 :
    Begin()#初始化+刷新函数
    for event in pygame.event.get():#转向程序
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if (event.key == pygame.K_RIGHT or event.key == pygame.K_d) and direction != 'left':#条件三防原地掉头
                direction = 'right'
            if (event.key == pygame.K_LEFT or event.key == pygame.K_a) and direction != 'right':
                direction = 'left'
            if (event.key == pygame.K_UP or event.key ==  pygame.K_w) and direction != 'down':
                direction = 'up'
            if (event.key == pygame.K_DOWN or event.key == pygame.K_s) and direction != 'up':
                direction = 'down'
            if event.key == pygame.K_ESCAPE:
                pygame.quit()
                sys.exit()
    Go()#前进函数
    Grow()#生长函数
    Kill()#自杀函数
    if snake_position[0] < 0 or snake_position[0] > width or snake_position[1] < 0 or snake_position[1] > height or A == 0:
    #死亡条件
        Exit()#退出函数
        print('score:',i-3)
        break

#未经作者授权,也可以转载~

## 注释十分清晰,相关库函数问题大家可以自行查找学习

猜你喜欢

转载自blog.csdn.net/ClintonCSDN/article/details/127039064