Python pygame中的高分系统

Python pygame中的高分系统,python,tkinter,pygame,Python,Tkinter,Pygame,这是一个python蛇游戏的代码,我尝试使用shelve和pickle模块,但没有成功,因为我尝试将它们合并到网站上的其他问题中。您是否知道如何将这些模块或其他模块包括在内,以便将高分打印在终端的分数下。到目前为止,每次蛇咬住它的尾巴,你关闭消息框时,就会打印出分数,然后立即开始新的游戏。目标是使highscore与分数同时打印。我省略了一些代码,如“[…]”所示。如果您想查看它的其他部分,我很乐意展示它 import pygame import tkinter as tk import ran

这是一个python蛇游戏的代码,我尝试使用shelve和pickle模块,但没有成功,因为我尝试将它们合并到网站上的其他问题中。您是否知道如何将这些模块或其他模块包括在内,以便将高分打印在终端的分数下。到目前为止,每次蛇咬住它的尾巴,你关闭消息框时,就会打印出分数,然后立即开始新的游戏。目标是使highscore与分数同时打印。我省略了一些代码,如“[…]”所示。如果您想查看它的其他部分,我很乐意展示它

import pygame
import tkinter as tk
import random
import math
from tkinter import messagebox 


[…]

def main():
    global width, rows, s, snack
    width=500
    rows=20
    win = pygame.display.set_mode((width, width))
    s = snake ((0,255,0),(10,10))
    snack = cube(randomSnack(rows, s), color=(255,0,0))
    flag = True

    clock=pygame.time.Clock()

    while flag:
        pygame.time.delay(50)
        clock.tick(10)
        s.move()
        if s.body[0].pos == snack.pos:
            s.addCube()
            snack = cube(randomSnack(rows, s), color = (255,0,0))

        for x in range(len(s.body)):
            if s.body[x].pos in list(map(lambda z:z.pos,s.body[x+1:])): 
                print('Score: ', len(s.body))
                message_box('You Lost!', 'Try again')
                s.reset((10,10))
            break    

我不太清楚你的意思。我第一次玩蛇游戏时的高分处理方式如下:

  • 将“我的电脑”上项目文件夹中的文件中的最新高分导入变量self.high_score
  • 有一个单独的变量self.score来处理当前游戏的分数
  • 在游戏期间打印两个变量,其中当蛇吃零食时,
    self.score+=1
    ,self.high_分数在整个游戏中保持不变
  • 当游戏结束(蛇死了)时,检查self.score>self.high_score。如果是这种情况,
    self.high_score=self.score
    ,我的计算机上本地文件中的数字将用这个新的高分更新

  • 使用这种方法,即使你关闭游戏并重新开始一天,游戏也可以记住高分

    你知道我如何在脚本中实现它吗?我可以使用什么模块创建文件,然后检查内容?如何从列表s.body的len中设置我的
    self.score
    变量,这就是我显示分数的方式?任何Excel模块都可以工作。您只需像往常一样创建Excel文件并在任何单元格中写入0即可。然后在代码的开头,将high-score变量设置为该单元格的任何值。在检测蛇是否吃零食的位置,将self.score+=1。