猫史档案馆


【Python作品分享】贪吃蛇【作品秀】

用户:卡布叻曲琦饼干卡布叻曲琦饼干查看:0 回复:0 评论:0 创建时间:2023-02-16T21:12:36


【作品展示】

center_image

 

【作品介绍】

游戏规则:

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

初始零分,加一长度一分

初始蛇身白色,五分绿色,十分黄色,二十分红色

三十分狂暴,喵(具体效果就等着吧)

 

【作品源代码】

import pygame
import random
import time
a = (input("请输入密码:\n"))
if a == "202318":
    print("密码正确,下面是游戏规则:\n橙色是橙子,加一长度,蓝色是喵,减三长度\n初始零分,加一长度一分\n初始蛇身白色,五分绿色,十分黄色,二十分红色\n三十分狂暴,喵(具体效果就等着吧)")
    time.sleep(5)
    pygame.init()
    S_W = 1200  # 1200/1900
    S_H = 600  # 600/980
    CELL_SIZE = 20
    gray = (40, 40, 40)
    green = (255, 255, 255)
    black = (0, 0, 0)
    orange = (255, 130, 0)
    blue = (0, 0, 255)
    snake_pos = [80, 80]
    snake_body = [[80, 80], [60, 80], [40, 80]]
    target_pos = [int(random.randrange(1, 60)*CELL_SIZE),
                  int(random.randrange(1, 30)*CELL_SIZE)]  # 200,200/300,300
    target_pos2 = [int(random.randrange(1, 60)*CELL_SIZE),
                   int(random.randrange(1, 30)*CELL_SIZE)]  # 300,220/460,420
    target_pos3 = [int(random.randrange(1, 60)*CELL_SIZE),
                   int(random.randrange(1, 30)*CELL_SIZE)]  # 1100,340/1300,500
    target_pos4 = [int(random.randrange(1, 60)*CELL_SIZE),
                   int(random.randrange(1, 30)*CELL_SIZE)]  # 600,480/900,780
    target_pos5 = [int(random.randrange(1, 60)*CELL_SIZE),
                   int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos6 = [int(random.randrange(1, 60)*CELL_SIZE),
                   int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos7 = [int(random.randrange(1, 60)*CELL_SIZE),
                   int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos8 = [int(random.randrange(1, 60)*CELL_SIZE),
                   int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos9 = [int(random.randrange(1, 60)*CELL_SIZE),
                   int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos10 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos11 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos12 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos13 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos14 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos15 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos16 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos17 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos18 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos19 = [int(random.randrange(1, 60)*CELL_SIZE),
                    int(random.randrange(1, 30)*CELL_SIZE)]
    target_pos20 = [int(random.randrange(1, 60)*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
    direction = change_dir = 'right'
    screen = pygame.display.set_mode((S_W, S_H))
    pygame.display.set_caption("贪吃蛇")

    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, green, (position[0], position[1], CELL_SIZE, CELL_SIZE))

    while True:
        if score > 1:
            t = pygame.time.Clock()
            t.tick(20)
            green = (random.randrange(0, 255), random.randrange(
                0, 255), random.randrange(0, 255))
            pressed = pygame.key.get_pressed()
            for evt in pygame.event.get():
                if (evt.type == pygame.QUIT):
                    pygame.quit()
                elif evt.type == pygame.KEYDOWN:
                    if evt.key == pygame.K_RIGHT or pressed[pygame.K_d]:
                        change_dir = 'right'
                    if evt.key == pygame.K_LEFT or pressed[pygame.K_a]:
                        change_dir = 'left'
                    if evt.key == pygame.K_UP or pressed[pygame.K_w]:
                        change_dir = 'up'
                    if evt.key == pygame.K_DOWN or pressed[pygame.K_s]:
                        change_dir = 'down'
            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]:
                flag = 0
                score += 1
            elif snake_pos[0] == target_pos2[0] and snake_pos[1] == target_pos2[1]:
                flag2 = 0
                score += 1
            elif snake_pos[0] == target_pos3[0] and snake_pos[1] == target_pos3[1]:
                flag3 = 0
                score += 1
            elif snake_pos[0] == target_pos4[0] and snake_pos[1] == target_pos4[1]:
                flag4 = 0
                score += 1
            elif snake_pos[0] == target_pos5[0] and snake_pos[1] == target_pos5[1]:
                flag5 = 0
                score += 1
            elif snake_pos[0] == target_pos6[0] and snake_pos[1] == target_pos6[1]:
                flag6 = 0
                score += 1
            elif snake_pos[0] == target_pos7[0] and snake_pos[1] == target_pos7[1]:
                flag7 = 0
                score += 1
            elif snake_pos[0] == target_pos8[0] and snake_pos[1] == target_pos8[1]:
                flag8 = 0
                score += 1
            elif snake_pos[0] == target_pos9[0] and snake_pos[1] == target_pos9[1]:
                flag9 = 0
                score += 1
            elif snake_pos[0] == target_pos10[0] and snake_pos[1] == target_pos10[1]:
                flag10 = 0
                score += 1
            elif snake_pos[0] == target_pos11[0] and snake_pos[1] == target_pos11[1]:
                flag11 = 0
                score += 1
            elif snake_pos[0] == target_pos12[0] and snake_pos[1] == target_pos12[1]:
                flag12 = 0
                score += 1
            elif snake_pos[0] == target_pos13[0] and snake_pos[1] == target_pos13[1]:
                flag13 = 0
                score += 1
            elif snake_pos[0] == target_pos14[0] and snake_pos[1] == target_pos14[1]:
                flag14 = 0
                score += 1
            elif snake_pos[0] == target_pos15[0] and snake_pos[1] == target_pos15[1]:
                flag15 = 0
                score += 1
            elif snake_pos[0] == target_pos16[0] and snake_pos[1] == target_pos16[1]:
                flag16 = 0
                score += 1
            elif snake_pos[0] == target_pos17[0] and snake_pos[1] == target_pos17[1]:
                flag17 = 0
                score += 1
            elif snake_pos[0] == target_pos18[0] and snake_pos[1] == target_pos18[1]:
                flag18 = 0
                score += 1
            elif snake_pos[0] == target_pos19[0] and snake_pos[1] == target_pos19[1]:
                flag19 = 0
                score += 1
            elif snake_pos[0] == target_pos20[0] and snake_pos[1] == target_pos20[1]:
                flag20 = 0
                score += 1
            else:
                snake_body.pop()
            if flag == 0:
                x = random.randrange(1, 60)
                y = random.randrange(1, 30)
                target_pos = [int(x*CELL_SIZE), int(y*CELL_SIZE)]
                flag = 1
            if flag2 == 0:
                x2 = random.randrange(1, 60)
                y2 = random.randrange(1, 30)
                target_pos2 = [int(x2*CELL_SIZE), int(y2*CELL_SIZE)]
                flag2 = 1
            if flag3 == 0:
                x3 = random.randrange(1, 60)
                y3 = random.randrange(1, 30)
                target_pos3 = [int(x3*CELL_SIZE), int(y3*CELL_SIZE)]
                flag3 = 1
            if flag4 == 0:
                x4 = random.randrange(1, 60)
                y4 = random.randrange(1, 30)
                target_pos4 = [int(x4*CELL_SIZE), int(y4*CELL_SIZE)]
                flag4 = 1
            if flag5 == 0:
                x5 = random.randrange(1, 60)
                y5 = random.randrange(1, 30)
                target_pos5 = [int(x5*CELL_SIZE), int(y5*CELL_SIZE)]
                flag5 = 1
            if flag6 == 0:
                x6 = random.randrange(1, 60)
                y6 = random.randrange(1, 30)
                target_pos6 = [int(x6*CELL_SIZE), int(y6*CELL_SIZE)]
                flag6 = 1
            if flag7 == 0:
                x7 = random.randrange(1, 60)
                y7 = random.randrange(1, 30)
                target_pos7 = [int(x*CELL_SIZE), int(y*CELL_SIZE)]
                flag = 1
            if flag8 == 0:
                x8 = random.randrange(1, 60)
                y8 = random.randrange(1, 30)
                target_pos8 = [int(x8*CELL_SIZE), int(y8*CELL_SIZE)]
                flag8 = 1
            if flag9 == 0:
                x9 = random.randrange(1, 60)
                y9 = random.randrange(1, 30)
                target_pos9 = [int(x9*CELL_SIZE), int(y9*CELL_SIZE)]
                flag9 = 1
            if flag10 == 0:
                x10 = random.randrange(1, 60)
                y10 = random.randrange(1, 30)
                target_pos10 = [int(x10*CELL_SIZE), int(y10*CELL_SIZE)]
                flag10 = 1
            if flag11 == 0:
                x11 = random.randrange(1, 60)
                y11 = random.randrange(1, 30)
                target_pos11 = [int(x11*CELL_SIZE), int(y11*CELL_SIZE)]
                flag11 = 1
            if flag12 == 0:
                x12 = random.randrange(1, 60)
                y12 = random.randrange(1, 30)
                target_pos12 = [int(x12*CELL_SIZE), int(y12*CELL_SIZE)]
                flag12 = 1
            if flag13 == 0:
                x13 = random.randrange(1, 60)
                y13 = random.randrange(1, 30)
                target_pos13 = [int(x13*CELL_SIZE), int(y13*CELL_SIZE)]
                flag13 = 1
            if flag14 == 0:
                x14 = random.randrange(1, 60)
                y14 = random.randrange(1, 30)
                target_pos14 = [int(x14*CELL_SIZE), int(y14*CELL_SIZE)]
                flag14 = 1
            if flag15 == 0:
                x15 = random.randrange(1, 60)
                y15 = random.randrange(1, 30)
                target_pos15 = [int(x15*CELL_SIZE), int(y15*CELL_SIZE)]
                flag15 = 1
            if flag16 == 0:
                x16 = random.randrange(1, 60)
                y16 = random.randrange(1, 30)
                target_pos16 = [int(x16*CELL_SIZE), int(y16*CELL_SIZE)]
                flag16 = 1
            if flag17 == 0:
                x17 = random.randrange(1, 60)
                y17 = random.randrange(1, 30)
                target_pos17 = [int(x17*CELL_SIZE), int(y17*CELL_SIZE)]
                flag17 = 1
            if flag18 == 0:
                x18 = random.randrange(1, 60)
                y18 = random.randrange(1, 30)
                target_pos18 = [int(x18*CELL_SIZE), int(y18*CELL_SIZE)]
                flag18 = 1
            if flag19 == 0:
                x19 = random.randrange(1, 60)
                y19 = random.randrange(1, 30)
                target_pos19 = [int(x19*CELL_SIZE), int(y19*CELL_SIZE)]
                flag19 = 1
            if flag20 == 0:
                x20 = random.randrange(1, 60)
                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))
            pygame.display.flip()
            if snake_pos[0] > S_W:
                snake_pos[0] = -20
            elif snake_pos[0] < 0:
                snake_pos[0] = S_W
            elif snake_pos[1] > S_H:
                snake_pos[1] = -20
            elif snake_pos[1] < 0:
                snake_pos[1] = S_H
        else:
            t = pygame.time.Clock()
            t.tick(level)
            if score < 5:
                level = 10
                green = (255, 255, 255)
            if score > 4:
                level = random.randrange(13, 15)
                green = (0, 255, 0)
            if score > 9:
                level = random.randrange(15, 17)
                green = (255, 255, 0)
            if score > 19:
                level = random.randrange(17, 19)
                green = (255, 0, 0)
            for evt in pygame.event.get():
                if (evt.type == pygame.QUIT):
                    pygame.quit()
                elif evt.type == pygame.KEYDOWN:
                    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 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 snake_pos[0] == target_pos[0] and snake_pos[1] == target_pos[1]:
                flag = 0
                score += 1
            else:
                snake_body.pop()
            if flag == 0:
                x = random.randrange(1, 60)
                y = random.randrange(1, 30)
                target_pos = [int(x*CELL_SIZE), int(y*CELL_SIZE)]
                flag = 1
            if snake_pos[0] == target_pos2[0] and snake_pos[1] == target_pos2[1]:
                flag2 = 0
                score -= 3
                snake_body.pop()
                snake_body.pop()
                snake_body.pop()
            if flag2 == 0:
                x2 = random.randrange(1, 60)
                y2 = random.randrange(1, 30)
                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]:
                flag3 = 0
                score -= 3
                snake_body.pop()
                snake_body.pop()
                snake_body.pop()
            if flag3 == 0:
                x3 = random.randrange(1, 60)
                y3 = random.randrange(1, 30)
                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]:
                flag4 = 0
                score -= 3
                snake_body.pop()
                snake_body.pop()
                snake_body.pop()
            if flag4 == 0:
                x4 = random.randrange(1, 60)
                y4 = random.randrange(1, 30)
                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))
            pygame.display.flip()
            """if snake_pos[0] > S_W:
                snake_pos[0] = -20
            elif snake_pos[0] < 0:
                snake_pos[0] = S_W
            elif snake_pos[1] > S_H:
                snake_pos[1] = -20
            elif snake_pos[1] < 0:
                snake_pos[1] = S_H"""
            if snake_pos[0] > S_W or snake_pos[0] < 0 or snake_pos[1] > S_H or snake_pos[1] < 0:
                pygame.quit()
            for i in snake_body[1:]:
                if snake_pos[0] == i[0] and snake_pos[1] == i[1]:
                    pygame.quit()
            if len(snake_body) == 0:
                pygame.quit()
else:
    print("密码错误,机器十秒后自爆")

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页