猫史档案馆


【Python作品分享】暴走贪吃蛇(v3.5)【作品秀】

用户:卡布叻曲琦饼干卡布叻曲琦饼干查看:0 回复:0 评论:0 创建时间:2023-12-14T18:01:17


【作品展示】

center_image

 

【作品介绍】

游戏规则:

橙色是橙子,加一长度,蓝色是喵,减三长度

初始零分,加一长度一分

初始蛇身白色,5分绿色,10分黄色,20分红色30分狂暴,喵

喵后达到50分胜利

如在游戏中,按下空格加速

按下Z键暂停,再按下Z解除暂停

每复活20次重置一次游戏

暂未解决的问题:在复活点附近喵亡会造成一直复活不了的情况

 

【作品源代码】

import pygame
import random
import time
import sys


def pri(text):
    for e in text:
        sys.stdout.write(e)
        sys.stdout.flush()
        time.sleep(0.08)
    time.sleep(0.07)
    sys.stdout.write("\n")

pri("请输入你想听的歌曲编号:(输入其他默认是普通背景音乐)\n1.贪吃蛇音乐\n2.小城夏天\n3.逆战\n4.平凡之路")
a = int(input())
pygame.init()
pygame.mixer.init()
if a == 1:
    pygame.mixer.music.load("背景音乐.mp3")
    pygame.mixer.music.set_volume(0.3)
elif a == 4:
    pygame.mixer.music.load("平凡之路.mp3")
    pygame.mixer.music.set_volume(0.05)
elif a == 5:
    pygame.mixer.music.load("阳光开朗大男孩.mp3")
    pygame.mixer.music.set_volume(0.05)
elif a == 3:
    pygame.mixer.music.load("逆战.mp3")
    pygame.mixer.music.set_volume(0.05)
elif a == 2:
    pygame.mixer.music.load("小城夏天.mp3")
    pygame.mixer.music.set_volume(0.05)
else:
    pygame.mixer.music.load("背景音乐.mp3")
    pygame.mixer.music.set_volume(0.3)
pygame.mixer.music.play(-1, 0)
ss, yy, qq = random.randrange(30, 230), random.randrange(
    30, 230), random.randrange(30, 230)
image = pygame.image.load("贪吃蛇蛇头.png")
cw = pygame.mixer.Sound("错误.wav")
go = pygame.mixer.Sound("失败.wav")
go.set_volume(1.2)
df = pygame.mixer.Sound("得分.wav")
df.set_volume(0.2)
sl = pygame.mixer.Sound("胜利.wav")
sl.set_volume(0.3)
start_img = pygame.image.load("开始按钮.png")
stbj = pygame.image.load("背景图片.png")
chw = pygame.image.load("重玩.png")
bug = pygame.image.load("bug.png")
zti = pygame.image.load("暂停.jpg")
syqs = 0
syqy = 0
syqq = 0
hy = 0
zt = 0
dx = 0
start = 0
nl = 100
j = 0
o = 0
js = False
S_W = 1200
S_H = 600
CELL_SIZE = 20
gray = (40, 40, 40)
body_color = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
orange = (255, 130, 0)
blue = (0, 0, 255)
light_blue = (0, 255, 255)
white = (255, 255, 255)
snake_pos = [80, 80]
snake_body = [[80, 80], [60, 80], [40, 80]]
target_pos = [int(random.randrange(1, 59)*CELL_SIZE),
              int(random.randrange(1, 30)*CELL_SIZE)]
target_pos2 = [int(random.randrange(1, 59)*CELL_SIZE),
               int(random.randrange(1, 30)*CELL_SIZE)]
target_pos3 = [int(random.randrange(1, 59)*CELL_SIZE),
               int(random.randrange(1, 30)*CELL_SIZE)]
target_pos4 = [int(random.randrange(1, 59)*CELL_SIZE),
               int(random.randrange(1, 30)*CELL_SIZE)]
target_pos5 = [int(random.randrange(1, 59)*CELL_SIZE),
               int(random.randrange(1, 30)*CELL_SIZE)]
target_pos6 = [int(random.randrange(1, 59)*CELL_SIZE),
               int(random.randrange(1, 30)*CELL_SIZE)]
target_pos7 = [int(random.randrange(1, 59)*CELL_SIZE),
               int(random.randrange(1, 30)*CELL_SIZE)]
target_pos8 = [int(random.randrange(1, 59)*CELL_SIZE),
               int(random.randrange(1, 30)*CELL_SIZE)]
target_pos9 = [int(random.randrange(1, 59)*CELL_SIZE),
               int(random.randrange(1, 30)*CELL_SIZE)]
target_pos10 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos11 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos12 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos13 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos14 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos15 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos16 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos17 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos18 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos19 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
target_pos20 = [int(random.randrange(1, 59)*CELL_SIZE),
                int(random.randrange(1, 30)*CELL_SIZE)]
flag = 1
flag2 = 1
flag3 = 1
flag4 = 1
flag5 = 1
flag6 = 1
flag7 = 1
flag8 = 1
flag9 = 1
flag10 = 1
flag11 = 1
flag12 = 1
flag13 = 1
flag14 = 1
flag15 = 1
flag16 = 1
flag17 = 1
flag18 = 1
flag19 = 1
flag20 = 1
score = 0
level = 10
gameover = 0
fc = 0
fz = 0
direction = change_dir = 'right'
screen = pygame.display.set_mode((S_W, S_H))
pygame.display.set_caption("贪吃蛇")


def wait_for_replay():
    global gameover, snake_pos, direction, change_dir, fc, snake_body, score, o, dx
    if o == 0:
        go.play()
        o = 1
    if fc-dx == 20:
        dx += 20
        score = 0
        snake_body = [[80, 80], [60, 80], [40, 80]]
    font = pygame.font.SysFont("SimHei", 75)
    gameover_show = font.render("GAME OVER", True, red)
    change_dir = direction = "right"
    snake_pos = [80, 80]
    if len(snake_body) == 0:
        score = 0
        snake_body = [[80, 80], [60, 80], [40, 80]]
    for evt in pygame.event.get():
        if (evt.type == pygame.QUIT):
            pygame.quit()
            sys.exit(1)
    if 475 < mouse_pos[0] < 710 and 355 < mouse_pos[1] < 450:
        if mouse_press[0] == 1:
            gameover = 0
            fc += 1
            o = 0
    if 540 < mouse_pos[0] < 喵0 and 455 < mouse_pos[1] < 520:
        if mouse_press[0] == 1:
            gameover = 0
            snake_body = [[80, 80], [60, 80], [40, 80]]
            o = 0
    screen.blit(gameover_show, (440, 230))
    screen.blit(chw, (470, 350))
    screen.blit(bug, (540, 455))
    pygame.display.update()


def restart():
    global start, syqs, syqy, syqq, hy
    for evt in pygame.event.get():
        if (evt.type == pygame.QUIT):
            pygame.quit()
            sys.exit(1)
        if evt.type == pygame.KEYDOWN:
            if evt.key == pygame.K_s or syqs == 1:
                syqs = 1
                if evt.key == pygame.K_y or syqy == 1:
                    syqy = 1
                    if evt.key == pygame.K_q or syqq == 1:
                        syqq = 1
                        hy = 1
                        pri("会员系统已激活!")
    if 430 < mouse_pos[0] < 710 and 350 < mouse_pos[1] < 425:
        if mouse_press[0] == 1:
            start = 1
    screen.blit(stbj, (0, 0))
    screen.blit(start_img, (430, 350))
    pygame.display.update()


def victory():
    global j
    if j == 0:
        sl.play(0)
        j = 1
    font3 = pygame.font.SysFont("SimHei", 90)
    victory_show = font3.render("Victory", True, light_blue)
    image_surf = pygame.Surface(image.get_size(), pygame.SRCALPHA)
    image_surf.blit(image, (0, 0))
    for alpha in range(0, 255, 10):
        victory_show.set_alpha(alpha)
        image_surf.set_alpha(alpha)
        for evt in pygame.event.get():
            if (evt.type == pygame.QUIT):
                pygame.quit()
                sys.exit(1)
        screen.blit(victory_show, (490, 250))
        screen.blit(image_surf, (570, 350))
        pygame.display.update()
        pygame.time.delay(500)


def zati():
    global zt
    font4 = pygame.font.SysFont("SimHei", 75)
    zt_show = font.render("暂停", True, white)
    for evt in pygame.event.get():
        if (evt.type == pygame.QUIT):
            pygame.quit()
            exit()
        if evt.type == pygame.KEYDOWN:
            if evt.key == pygame.K_z:
                zt = 0
    screen.blit(zt_show, (560, 250))
    pygame.display.update()


def draw_grid():

    for i in range(0, S_W, CELL_SIZE):
        pygame.draw.line(screen, gray, (i, 0), (i, S_H))
    for j in range(0, S_H, CELL_SIZE):
        pygame.draw.line(screen, gray, (0, j), (S_W, j))


def draw_snake(body):
    for position in body:
        pygame.draw.rect(
            screen, body_color, (position[0], position[1], CELL_SIZE, CELL_SIZE))


while True:
    mouse_press = pygame.mouse.get_pressed()
    mouse_pos = pygame.mouse.get_pos()
    t = pygame.time.Clock()
    t.tick(level)
    font = pygame.font.SysFont("SimHei", 75)
    font2 = pygame.font.SysFont("SimHei", 20)
    fc_show = font2.render("复活次数:%d" % fc, True, white)
    nl_show = font2.render("当前能量:%d" % nl, True, white)
    font4 = pygame.font.SysFont("SimHei", 30)
    score_show = font4.render("Score:%d" % score, True, white)
    if start == 0:
        restart()
    else:
        if gameover == 1:
            wait_for_replay()
        else:
            if zt == 1:
                zati()
            else:
                if score > 49:
                    victory()
                elif score > -1:
                    level = 20
                    # body_color = (random.randrange(0, 255), random.randrange(
                    #    0, 255), random.randrange(0, 255))
                    body_color = (ss, yy, qq)
                    if body_color[0] < 30:
                        ss += random.randrange(1, 10)
                    elif body_color[0] > 220:
                        ss += random.randrange(-10, 0)
                    elif body_color[0] > 30:
                        ss += random.randrange(-10, 10)
                    elif body_color[0] < 220:
                        ss += random.randrange(-10, 0)
                    if body_color[1] < 30:
                        yy += random.randrange(1, 10)
                    elif body_color[1] > 220:
                        yy += random.randrange(-10, 0)
                    elif body_color[1] > 30:
                        yy += random.randrange(-10, 10)
                    elif body_color[1] < 220:
                        yy += random.randrange(-10, 0)
                    if body_color[2] < 30:
                        qq += random.randrange(1, 10)
                    elif body_color[2] > 220:
                        qq += random.randrange(-10, 0)
                    elif body_color[2] > 30:
                        qq += random.randrange(-10, 10)
                    elif body_color[2] < 220:
                        qq += random.randrange(-10, 0)
                    for evt in pygame.event.get():
                        if (evt.type == pygame.QUIT):
                            pygame.quit()
                            exit()
                        if evt.type == pygame.KEYDOWN:
                            if evt.key == pygame.K_SPACE:
                                js = True
                            if evt.key == pygame.K_RIGHT:
                                change_dir = 'right'
                            if evt.key == pygame.K_LEFT:
                                change_dir = 'left'
                            if evt.key == pygame.K_UP:
                                change_dir = 'up'
                            if evt.key == pygame.K_DOWN:
                                change_dir = 'down'
                            if evt.key == pygame.K_z:
                                zt = 1
                        if evt.type == pygame.KEYUP:
                            if evt.key == pygame.K_SPACE:
                                js = False
                    if js == True and nl > 2:
                        nl -= 3
                        level += 7
                    else:
                        if nl != 100:
                            nl += 0.5
                    if hy == 1:
                        nl = 100
                    direction = change_dir
                    if direction == 'right':
                        snake_pos[0] += CELL_SIZE
                    if direction == 'left':
                        snake_pos[0] -= CELL_SIZE
                    if direction == 'down':
                        snake_pos[1] += CELL_SIZE
                    if direction == 'up':
                        snake_pos[1] -= CELL_SIZE
                    snake_body.insert(0, list(snake_pos))
                    if snake_pos[0] == target_pos[0] and snake_pos[1] == target_pos[1]:
                        df.play(0)
                        flag = 0
                        score += 1
                    elif snake_pos[0] == target_pos2[0] and snake_pos[1] == target_pos2[1]:
                        df.play(0)
                        flag2 = 0
                        score += 1
                    elif snake_pos[0] == target_pos3[0] and snake_pos[1] == target_pos3[1]:
                        df.play(0)
                        flag3 = 0
                        score += 1
                    elif snake_pos[0] == target_pos4[0] and snake_pos[1] == target_pos4[1]:
                        df.play(0)
                        flag4 = 0
                        score += 1
                    elif snake_pos[0] == target_pos5[0] and snake_pos[1] == target_pos5[1]:
                        df.play(0)
                        flag5 = 0
                        score += 1
                    elif snake_pos[0] == target_pos6[0] and snake_pos[1] == target_pos6[1]:
                        df.play(0)
                        flag6 = 0
                        score += 1
                    elif snake_pos[0] == target_pos7[0] and snake_pos[1] == target_pos7[1]:
                        df.play(0)
                        flag7 = 0
                        score += 1
                    elif snake_pos[0] == target_pos8[0] and snake_pos[1] == target_pos8[1]:
                        df.play(0)
                        flag8 = 0
                        score += 1
                    elif snake_pos[0] == target_pos9[0] and snake_pos[1] == target_pos9[1]:
                        df.play(0)
                        flag9 = 0
                        score += 1
                    elif snake_pos[0] == target_pos10[0] and snake_pos[1] == target_pos10[1]:
                        df.play(0)
                        flag10 = 0
                        score += 1
                    elif snake_pos[0] == target_pos11[0] and snake_pos[1] == target_pos11[1]:
                        df.play(0)
                        flag11 = 0
                        score += 1
                    elif snake_pos[0] == target_pos12[0] and snake_pos[1] == target_pos12[1]:
                        df.play(0)
                        flag12 = 0
                        score += 1
                    elif snake_pos[0] == target_pos13[0] and snake_pos[1] == target_pos13[1]:
                        df.play(0)
                        flag13 = 0
                        score += 1
                    elif snake_pos[0] == target_pos14[0] and snake_pos[1] == target_pos14[1]:
                        df.play(0)
                        flag14 = 0
                        score += 1
                    elif snake_pos[0] == target_pos15[0] and snake_pos[1] == target_pos15[1]:
                        df.play(0)
                        flag15 = 0
                        score += 1
                    elif snake_pos[0] == target_pos16[0] and snake_pos[1] == target_pos16[1]:
                        df.play(0)
                        flag16 = 0
                        score += 1
                    elif snake_pos[0] == target_pos17[0] and snake_pos[1] == target_pos17[1]:
                        df.play(0)
                        flag17 = 0
                        score += 1
                    elif snake_pos[0] == target_pos18[0] and snake_pos[1] == target_pos18[1]:
                        df.play(0)
                        flag18 = 0
                        score += 1
                    elif snake_pos[0] == target_pos19[0] and snake_pos[1] == target_pos19[1]:
                        df.play(0)
                        flag19 = 0
                        score += 1
                    elif snake_pos[0] == target_pos20[0] and snake_pos[1] == target_pos20[1]:
                        df.play(0)
                        flag20 = 0
                        score += 1
                    else:
                        snake_body.pop()
                    if flag == 0:
                        x = random.randrange(1, 59)
                        y = random.randrange(1, 30)
                        target_pos = [int(x*CELL_SIZE), int(y*CELL_SIZE)]
                        flag = 1
                    if flag2 == 0:
                        x2 = random.randrange(1, 59)
                        y2 = random.randrange(1, 30)
                        target_pos2 = [int(x2*CELL_SIZE), int(y2*CELL_SIZE)]
                        flag2 = 1
                    if flag3 == 0:
                        x3 = random.randrange(1, 59)
                        y3 = random.randrange(1, 30)
                        target_pos3 = [int(x3*CELL_SIZE), int(y3*CELL_SIZE)]
                        flag3 = 1
                    if flag4 == 0:
                        x4 = random.randrange(1, 59)
                        y4 = random.randrange(1, 30)
                        target_pos4 = [int(x4*CELL_SIZE), int(y4*CELL_SIZE)]
                        flag4 = 1
                    if flag5 == 0:
                        x5 = random.randrange(1, 59)
                        y5 = random.randrange(1, 30)
                        target_pos5 = [int(x5*CELL_SIZE), int(y5*CELL_SIZE)]
                        flag5 = 1
                    if flag6 == 0:
                        x6 = random.randrange(1, 59)
                        y6 = random.randrange(1, 30)
                        target_pos6 = [int(x6*CELL_SIZE), int(y6*CELL_SIZE)]
                        flag6 = 1
                    if flag7 == 0:
                        x7 = random.randrange(1, 59)
                        y7 = random.randrange(1, 30)
                        target_pos7 = [int(x7*CELL_SIZE), int(y7*CELL_SIZE)]
                        flag7 = 1
                    if flag8 == 0:
                        x8 = random.randrange(1, 59)
                        y8 = random.randrange(1, 30)
                        target_pos8 = [int(x8*CELL_SIZE), int(y8*CELL_SIZE)]
                        flag8 = 1
                    if flag9 == 0:
                        x9 = random.randrange(1, 59)
                        y9 = random.randrange(1, 30)
                        target_pos9 = [int(x9*CELL_SIZE), int(y9*CELL_SIZE)]
                        flag9 = 1
                    if flag10 == 0:
                        x10 = random.randrange(1, 59)
                        y10 = random.randrange(1, 30)
                        target_pos10 = [int(x10*CELL_SIZE), int(y10*CELL_SIZE)]
                        flag10 = 1
                    if flag11 == 0:
                        x11 = random.randrange(1, 59)
                        y11 = random.randrange(1, 30)
                        target_pos11 = [int(x11*CELL_SIZE), int(y11*CELL_SIZE)]
                        flag11 = 1
                    if flag12 == 0:
                        x12 = random.randrange(1, 59)
                        y12 = random.randrange(1, 30)
                        target_pos12 = [int(x12*CELL_SIZE), int(y12*CELL_SIZE)]
                        flag12 = 1
                    if flag13 == 0:
                        x13 = random.randrange(1, 59)
                        y13 = random.randrange(1, 30)
                        target_pos13 = [int(x13*CELL_SIZE), int(y13*CELL_SIZE)]
                        flag13 = 1
                    if flag14 == 0:
                        x14 = random.randrange(1, 59)
                        y14 = random.randrange(1, 30)
                        target_pos14 = [int(x14*CELL_SIZE), int(y14*CELL_SIZE)]
                        flag14 = 1
                    if flag15 == 0:
                        x15 = random.randrange(1, 59)
                        y15 = random.randrange(1, 30)
                        target_pos15 = [int(x15*CELL_SIZE), int(y15*CELL_SIZE)]
                        flag15 = 1
                    if flag16 == 0:
                        x16 = random.randrange(1, 59)
                        y16 = random.randrange(1, 30)
                        target_pos16 = [int(x16*CELL_SIZE), int(y16*CELL_SIZE)]
                        flag16 = 1
                    if flag17 == 0:
                        x17 = random.randrange(1, 59)
                        y17 = random.randrange(1, 30)
                        target_pos17 = [int(x17*CELL_SIZE), int(y17*CELL_SIZE)]
                        flag17 = 1
                    if flag18 == 0:
                        x18 = random.randrange(1, 59)
                        y18 = random.randrange(1, 30)
                        target_pos18 = [int(x18*CELL_SIZE), int(y18*CELL_SIZE)]
                        flag18 = 1
                    if flag19 == 0:
                        x19 = random.randrange(1, 59)
                        y19 = random.randrange(1, 30)
                        target_pos19 = [int(x19*CELL_SIZE), int(y19*CELL_SIZE)]
                        flag19 = 1
                    if flag20 == 0:
                        x20 = random.randrange(1, 59)
                        y20 = random.randrange(1, 30)
                        target_pos20 = [int(x20*CELL_SIZE), int(y20*CELL_SIZE)]
                        flag20 = 1

                    screen.fill(black)
                    draw_snake(snake_body)
                    draw_grid()
                    draw_snake(snake_body)
                    pygame.draw.rect(
                        screen, orange, (target_pos[0], target_pos[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos2[0], target_pos2[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos3[0], target_pos3[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos4[0], target_pos4[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos5[0], target_pos5[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos6[0], target_pos6[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos7[0], target_pos7[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos8[0], target_pos8[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos9[0], target_pos9[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos10[0], target_pos10[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos11[0], target_pos11[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos12[0], target_pos12[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos13[0], target_pos13[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos14[0], target_pos14[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos15[0], target_pos15[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos16[0], target_pos16[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos17[0], target_pos17[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos18[0], target_pos18[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos19[0], target_pos19[1], 20, 20))
                    pygame.draw.rect(
                        screen, orange, (target_pos20[0], target_pos20[1], 20, 20))
                    screen.blit(score_show, (20, 10))
                    screen.blit(fc_show, (1080, 570))
                    screen.blit(nl_show, (1060, 0))
                    pygame.display.flip()
                    if snake_pos[0] >= S_W:
                        snake_pos[0] = 0
                    elif snake_pos[0] < 0:
                        snake_pos[0] = S_W
                    elif snake_pos[1] >= S_H:
                        snake_pos[1] = 0
                    elif snake_pos[1] < 0:
                        snake_pos[1] = S_H
                else:
                    if score < 5:
                        level = 13
                        body_color = (255, 255, 255)
                    if score > 4:
                        level = random.randrange(15, 17)
                        body_color = (0, 255, 0)
                    if score > 9:
                        level = random.randrange(17, 19)
                        body_color = (255, 255, 0)
                    if score > 19:
                        level = random.randrange(19, 21)
                        body_color = (255, 0, 0)
                    for evt in pygame.event.get():
                        if (evt.type == pygame.QUIT):
                            pygame.quit()
                            exit()
                        if evt.type == pygame.KEYDOWN:
                            if evt.key == pygame.K_SPACE:
                                js = True
                            if evt.key == pygame.K_RIGHT:
                                change_dir = 'right'
                            if evt.key == pygame.K_LEFT:
                                change_dir = 'left'
                            if evt.key == pygame.K_UP:
                                change_dir = 'up'
                            if evt.key == pygame.K_DOWN:
                                change_dir = 'down'
                            if evt.key == pygame.K_z:
                                zt = 1
                        if evt.type == pygame.KEYUP:
                            if evt.key == pygame.K_SPACE:
                                js = False
                    if js == True and nl > 2:
                        nl -= 3
                        level += 7
                    else:
                        if nl != 100:
                            nl += 0.5

                    if change_dir == 'right' and direction == 'left':
                        change_dir = 'left'
                    if change_dir == 'left' and direction == 'right':
                        change_dir = 'right'
                    if change_dir == 'up' and direction == 'down':
                        change_dir = 'down'
                    if change_dir == 'down' and direction == 'up':
                        change_dir = 'up'
                    direction = change_dir
                    if direction == 'right':
                        snake_pos[0] += CELL_SIZE
                    if direction == 'left':
                        snake_pos[0] -= CELL_SIZE
                    if direction == 'down':
                        snake_pos[1] += CELL_SIZE
                    if direction == 'up':
                        snake_pos[1] -= CELL_SIZE
                    snake_body.insert(0, list(snake_pos))
                    if hy == 0:
                        if snake_pos[0] == target_pos[0] and snake_pos[1] == target_pos[1]:
                            df.play(0)
                            flag = 0
                            flag2 = 0
                            flag3 = 0
                            flag4 = 0
                            score += 1
                        else:
                            snake_body.pop()
                    else:
                        nl = 100
                        if snake_pos[0] == target_pos[0] and snake_pos[1] == target_pos[1]:
                            df.play(0)
                            flag = 0
                            flag2 = 0
                            flag3 = 0
                            flag4 = 0
                            score += 3
                        else:
                            snake_body.pop()
                    if flag == 0:
                        x = random.randrange(1, 58)
                        y = random.randrange(1, 28)
                        target_pos = [int(x*CELL_SIZE), int(y*CELL_SIZE)]
                        target_pos5 = [int(x*CELL_SIZE), int(y*CELL_SIZE)]
                        target_pos6 = [int(x*CELL_SIZE), int(y*CELL_SIZE)]
                        flag = 1
                    if snake_pos[0] == target_pos2[0] and snake_pos[1] == target_pos2[1]:
                        cw.play(0)
                        flag2 = 0
                        score -= 3
                        snake_body.pop()
                        snake_body.pop()
                        snake_body.pop()
                    if flag2 == 0:
                        x2 = random.randrange(1, 58)
                        y2 = random.randrange(1, 28)
                        target_pos2 = [int(x2*CELL_SIZE), int(y2*CELL_SIZE)]
                        flag2 = 1
                    if snake_pos[0] == target_pos3[0] and snake_pos[1] == target_pos3[1]:
                        cw.play(0)
                        flag3 = 0
                        score -= 3
                        snake_body.pop()
                        snake_body.pop()
                        snake_body.pop()
                    if flag3 == 0:
                        x3 = random.randrange(1, 58)
                        y3 = random.randrange(1, 28)
                        target_pos3 = [int(x3*CELL_SIZE), int(y3*CELL_SIZE)]
                        flag3 = 1
                    if snake_pos[0] == target_pos4[0] and snake_pos[1] == target_pos4[1]:
                        cw.play(0)
                        flag4 = 0
                        score -= 3
                        snake_body.pop()
                        snake_body.pop()
                        snake_body.pop()
                    if flag4 == 0:
                        x4 = random.randrange(1, 58)
                        y4 = random.randrange(1, 28)
                        target_pos4 = [int(x4*CELL_SIZE), int(y4*CELL_SIZE)]
                        flag4 = 1
                    screen.fill(black)
                    draw_snake(snake_body)
                    draw_grid()
                    draw_snake(snake_body)
                    pygame.draw.rect(
                        screen, orange, (target_pos[0], target_pos[1], 20, 20))
                    pygame.draw.rect(
                        screen, blue, (target_pos2[0], target_pos2[1], 20, 20))
                    pygame.draw.rect(
                        screen, blue, (target_pos3[0], target_pos3[1], 20, 20))
                    pygame.draw.rect(
                        screen, blue, (target_pos4[0], target_pos4[1], 20, 20))
                    screen.blit(score_show, (20, 10))
                    screen.blit(fc_show, (1080, 570))
                    screen.blit(nl_show, (1060, 0))
                    pygame.display.flip()
                    if snake_pos[0] >= S_W or snake_pos[0] < 0 or snake_pos[1] >= S_H or snake_pos[1] < 0:
                        gameover = 1
                    for i in snake_body[1:]:
                        if snake_pos[0] == i[0] and snake_pos[1] == i[1]:
                            gameover = 1
                    if len(snake_body) == 0:
                        gameover = 1

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页