turtle-graphics - 贪吃蛇游戏分数不加
问题描述
这个蛇游戏代码。我想在这个游戏中添加系统分数。这样每次蛇吃他的分数都会增加。但是如果蛇没有得到食物分数就不会增加。
如何显示当前分数?
这是:""" 一个使用 Turtle Graphics 的简单蛇游戏。""" import turtle import math import random
WIDTH = 500
HEIGHT = 500
FOOD_SIZE = 10
DELAY = 100 # milliseconds
offsets = {
"up": (0, 20),
"down": (0, -20),
"left": (-20, 0),
"right": (20, 0)
}
分数没有更新
def addcore(): global score score += 1
def reset():
global snake, snake_direction, food_pos, pen
snake = [[0, 0], [0, 20], [0, 40], [0, 60], [0, 80]]
snake_direction = "up"
food_pos = get_random_food_pos()
food.goto(food_pos)
#screen.update() Only needed if we are fussed about drawing food before next call to `draw_snake()`.
move_snake()
def move_snake():
global snake_direction
# Next position for head of snake.
new_head = snake[-1].copy()
new_head[0] = snake[-1][0] + offsets[snake_direction][0]
new_head[1] = snake[-1][1] + offsets[snake_direction][1]
# Check self-collision
if new_head in snake[:-1]: # Or collision with walls?
reset()
else:
# No self-collision so we can continue moving the snake.
snake.append(new_head)
# Check food collision
if not food_collision():
snake.pop(0) # Keep the snake the same length unless fed.
包起来
# Allow screen wrapping
if snake[-1][0] > WIDTH / 2:
snake[-1][0] -= WIDTH
elif snake[-1][0] < - WIDTH / 2:
snake[-1][0] += WIDTH
elif snake[-1][1] > HEIGHT / 2:
snake[-1][1] -= HEIGHT
elif snake[-1][1] < -HEIGHT / 2:
snake[-1][1] += HEIGHT
# Clear previous snake stamps
pen.clearstamps()
# Draw snake
for segment in snake:
pen.goto(segment[0], segment[1])
pen.stamp()
# Refresh screen
screen.update()
# Rinse and repeat
turtle.ontimer(move_snake, DELAY)
def food_collision():
global food_pos
if get_distance(snake[-1], food_pos) < 20:
food_pos = get_random_food_pos()
food.goto(food_pos)
return True
return False
def get_random_food_pos():
x = random.randint(- WIDTH / 2 + FOOD_SIZE, WIDTH / 2 - FOOD_SIZE)
y = random.randint(- HEIGHT / 2 + FOOD_SIZE, HEIGHT / 2 - FOOD_SIZE)
return (x, y)
def get_distance(pos1, pos2):
x1, y1 = pos1
x2, y2 = pos2
distance = ((y2 - y1) * 2 + (x2 - x1) * 2) ** 0.5
return distance
def go_up():
global snake_direction
if snake_direction != "down":
snake_direction = "up"
def go_right():
global snake_direction
if snake_direction != "left":
snake_direction = "right"
def go_down():
global snake_direction
if snake_direction != "up":
snake_direction = "down"
def go_left():
global snake_direction
if snake_direction != "right":
snake_direction = "left"
# Screen
screen = turtle.Screen()
screen.setup(WIDTH, HEIGHT)
screen.title("Snake")
screen.bgcolor("green")
screen.setup(500, 500)
screen.tracer(0)
# Pen
pen = turtle.Turtle("square")
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
pen.write("Score : 0 High Score : 0", align="center", font=("candara", 24, "bold"))
# Food
food = turtle.Turtle()
food.shape("circle")
food.color("red")
food.shapesize(FOOD_SIZE / 20) # Default size of turtle "square" shape is 20.
food.penup()
# Event handlers
screen.listen()
screen.onkey(go_up, "Up")
screen.onkey(go_right, "Right")
screen.onkey(go_down, "Down")
screen.onkey(go_left, "Left")
# Let's go
reset()
turtle.done()
解决方案
您可以将此代码添加到您的游戏中。它会写一个分数:
score = 0
#Creating Score Writer
turtle.hideturtle()
turtle.penup()
turtle.color("white")
turtle.goto(-300,300)
turtle.write(f"Score = {score}", font=("Arial",16,"normal"))
您也不需要 screen.setup() 。您可以更改分数变量。每次你想更新你写的文字
turtle.clear()
turtle.write(f"Score = {score}", font=("Arial",16,"normal"))
推荐阅读
- python - Numpy 布尔语句 - 在语句中使用 a.any() 和 a.all() 的帮助
- android - 为什么我的画廊应用程序(使用 Glide 设计)占用近 500mb 内存
- grails - Grails/Gorm - namedQuery hasMany 关系
- javascript - 为每个创建唯一的 id 和 value 属性
- javascript - 如何将承诺的结果返回给变量 Promise {
}? - python-3.x - 如何更改页码。使用 Python 进行 Web Scraping 的页面搜索结果?
- python - 使用 Python 替换包含目录路径的部分字符串
- ruby-on-rails - 如果 web dyno 进入睡眠状态,如何让 heroku dyno worker 活着?
- html - 在 Materialize CSS 中的 div 内垂直居中图像
- quickbooks - Consolibyte QuickBooks PHP 库 - 如何将参数传递给队列函数?