Python|Python turtle实现贪吃蛇游戏
本文实例为大家分享了Python turtle实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下
# Simple Snake Game in Python 3 for Beginners import turtleimport timeimport random delay = 0.1 # Scorescore = 0high_score = 0 # Set up the screenwn = turtle.Screen()wn.title("Snake Game by @TokyoEdTech")wn.bgcolor("green")wn.setup(width=600, height=600)wn.tracer(0)# Turns off the screen updates # Snake headhead = turtle.Turtle()head.speed(0)head.shape("square")head.color("black")head.penup()head.goto(0, 0)head.direction = "stop" # Snake foodfood = turtle.Turtle()food.speed(0)food.shape("circle")food.color("red")food.penup()food.goto(0, 100) segments = [] # Penpen = turtle.Turtle()pen.speed(0)pen.shape("square")pen.color("white")pen.penup()pen.hideturtle()pen.goto(0, 260)pen.write("Score: 0High Score: 0", align="center",font=("Courier", 24, "normal")) # Functions def go_up():if head.direction != "down":head.direction = "up" def go_down():if head.direction != "up":head.direction = "down" def go_left():if head.direction != "right":head.direction = "left" def go_right():if head.direction != "left":head.direction = "right" def move():if head.direction == "up":y = head.ycor()head.sety(y + 20) if head.direction == "down":y = head.ycor()head.sety(y - 20) if head.direction == "left":x = head.xcor()head.setx(x - 20) if head.direction == "right":x = head.xcor()head.setx(x + 20) # Keyboard bindingswn.listen()wn.onkeypress(go_up, "Up")wn.onkeypress(go_down, "Down")wn.onkeypress(go_left, "Left")wn.onkeypress(go_right, "Right") # Main game loopwhile True:wn.update() # Check for a collision with the borderif head.xcor() > 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290:time.sleep(1)head.goto(0, 0)head.direction = "stop" # Hide the segmentsfor segment in segments:segment.goto(1000, 1000) # Clear the segments listsegments.clear() # Reset the scorescore = 0 # Reset the delaydelay = 0.1 pen.clear()pen.write("Score: {}High Score: {}".format(score, high_score),align="center", font=("Courier", 24, "normal")) # Check for a collision with the foodif head.distance(food) < 20:# Move the food to a random spotx = random.randint(-290, 290)y = random.randint(-290, 290)food.goto(x, y) # Add a segmentnew_segment = turtle.Turtle()new_segment.speed(0)new_segment.shape("square")new_segment.color("grey")new_segment.penup()segments.append(new_segment) # Shorten the delaydelay -= 0.001 # Increase the scorescore += 10 if score > high_score:high_score = score pen.clear()pen.write("Score: {}High Score: {}".format(score, high_score),align="center", font=("Courier", 24, "normal")) # Move the end segments first in reverse orderfor index in range(len(segments)-1, 0, -1):x = segments[index-1].xcor()y = segments[index-1].ycor()segments[index].goto(x, y) # Move segment 0 to where the head isif len(segments) > 0:x = head.xcor()y = head.ycor()segments[0].goto(x, y) move() # Check for head collision with the body segmentsfor segment in segments:if segment.distance(head) < 20:time.sleep(1)head.goto(0, 0)head.direction = "stop" # Hide the segmentsfor segment in segments:segment.goto(1000, 1000) # Clear the segments listsegments.clear() # Reset the scorescore = 0 # Reset the delaydelay = 0.1 # Update the score displaypen.clear()pen.write("Score: {}High Score: {}".format(score, high_score), align="center", font=("Courier", 24, "normal")) time.sleep(delay) wn.mainloop()
文章图片
【Python|Python turtle实现贪吃蛇游戏】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- java中如何实现重建二叉树