微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

贪吃蛇游戏分数不加

如何解决贪吃蛇游戏分数不加

这个蛇游戏代码。我想在这个游戏中添加系统分数。这样每次蛇吃他的分数都会增加。但是如果蛇没有得到食物分数不会增加

如何显示当前分数?

这是: """使用海龟图形的简单蛇游戏。""" 进口龟 导入数学 随机导入

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(): 总分 得分 += 1

def reset():
    global snake,snake_direction,food_pos,pen
    snake = [[0,0],[0,20],40],60],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()

解决方法

它已定义,但您必须调用 addscore() 函数。替换

if not food_collision():
    snake.pop(0)

if food_collision():
    addscore()
else:
    snake.pop(0)
,

您可以将此代码添加到您的游戏中。它会写一个分数:

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}","normal"))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。