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: 0 High 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 border if 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 food if 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 order for 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 is if len(segments) > 0:x = head.xcor()y = head.ycor()segments[0].goto(x, y) move() # Check for head collision with the body segments for segment in segments:if segment.distance(head) < 20: time.sleep(1) head.goto(0, 0) head.direction = 'stop' # Hide the segments for segment in segments:segment.goto(1000, 1000) # Clear the segments list segments.clear() # Reset the score score = 0 # Reset the delay delay = 0.1 # Update the score display pen.clear() pen.write('Score: {} High Score: {}'.format(score, high_score), align='center', font=('Courier', 24, 'normal')) time.sleep(delay) wn.mainloop()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
