ITPub博客

首页 > IT职业 > IT生活 > python实现贪吃蛇

python实现贪吃蛇

IT生活 作者:专注的阿熊 时间:2021-11-15 17:27:57 0 删除 编辑

import turtle

from turtle import *

from random import randrange

from time import sleep

import pygame

snake = [[0,0],[10,0],[20,0],[30,0],[40,0],[50,0]]

apple_x = randrange(-20,18)*10

apple_y = randrange(-19,19)*10

aim_x = 10

aim_y = 0

def square(x,y,size,color_name):

     up()

     goto(x,y)

     down()

     # 设置颜色

     color(color_name)

     # 填充

     begin_fill()

     forward(size)

     left(90)

     forward(size)

     left(90)

     forward(size)

     left(90)

     forward(size)

     left(90)

     end_fill()

def change(x,y):

     global aim_x,aim_y

     aim_x = x

     aim_y = y

def inside_snake():

     for i in range(len(snake)-1):

         if snake[i][0] == snake[-1][0] and snake[i][1] == snake[-1][1]:

         # 蛇咬住自己

             return True

     return False

def inside_map():

     if -200 <= snake[-1][0] <= 180 and -190 <= snake[-1][1] <= 190:

         # 没出界

         return True

     else:

         return False

def sound1():       # 播放吃食物音效

     file1 = r' 吃食物音效 .mp3'

     # 初始化混音器模块

     pygame.mixer.init()

     # 创建声音对象

     track = pygame.mixer.Sound(file1)

     # 播放

     track.play()

def sound2():       # 播放蛇 over 音效

     file2 = r' 贪吃蛇挂了 .mp3'

     pygame.mixer.init()

     track = pygame.mixer.Sound(file2)

     track.play()

pygame.mixer.init()

file = r' 贪吃蛇大作战背景音乐 .mp3'

pygame.mixer.music.load(file)

pygame.mixer.music.play(-1)

def gameLoop():

     global apple_x,apple_y,snake,aim_x,aim_y

     snake.append([snake[-1][0]+aim_x,snake[-1][1]+aim_y])

     if snake[-1][0] != apple_x or snake[-1][1] != apple_y:

         snake.pop(0)

     else:

         # 迟到食物

         sound1()    # 播放音效

         # 更新食物位置

         apple_x = randrange(-20, 18)*10

         apple_y = 外汇跟单gendan5.comrandrange(-19, 19)*10

     # 出界或者蛇咬住自己 , 结束

     if (not inside_map()) or inside_snake():

         square(snake[-1][0],snake[-1][1],10,"red")

         update()

         # 播放游戏结束音效

         sound2()

         # 等待两秒重开

         sleep(2)

         snake = [[0, 0], [10, 0], [20, 0], [30, 0], [40, 0], [50, 0]]

         apple_x = randrange(-20, 18)*10

         apple_y = randrange(-19, 19)*10

         aim_x = 10

         aim_y = 0

     clear()

     square(-210, -200, 410, "black")

     square(-200, -190, 390, "white")

     square(apple_x, apple_y, 10, "red")

     for i in range(len(snake)):

         square(snake[i][0],snake[i][1],10,"black")

     # 更新

     update()

     # 130ms 再次执行 gameLoop

     ontimer(gameLoop,130)

# 画布

turtle.setup(420, 420, 0, 0)

hideturtle()

# 隐藏绘图,直接显示绘画效果

tracer(False)

# 监视键盘和鼠标操作

listen()

# 右手操控

onkey(lambda: change(0,10), "Up")

onkey(lambda: change(0,-10), 'Down')

onkey(lambda: change(10,0), 'Right')

onkey(lambda: change(-10,0), 'Left')

# 左手操控

onkey(lambda: change(0,10), "w")

onkey(lambda: change(0,-10), 's')

onkey(lambda: change(10,0), 'd')

onkey(lambda: change(-10,0), 'a')

sleep(3)

gameLoop()

done()


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69946337/viewspace-2842283/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-23

  • 博文量
    248
  • 访问量
    137509