【问题标题】:HIgh Score system in pygamepygame中的高分系统
【发布时间】:2020-01-08 17:10:36
【问题描述】:

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

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    

【问题讨论】:

    标签: python tkinter pygame


    【解决方案1】:

    我不太清楚你的意思。我在第一个 Snake 游戏中处理高分的方式是这样的:

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

    使用这种方法,即使您关闭游戏并重新开始,游戏也可以记住最高分。

    【讨论】:

    • 你知道我如何实现这个脚本吗?我可以使用什么模块来创建文件然后检查内容?以及如何从列表 s.body 的 len 中创建我的 self.score 变量,这正是我显示分数的方式?
    • 任何 Excel 模块都可以使用。您只需像往常一样创建 Excel 文件并在任何单元格中写入 0。然后在代码的开头,您将高分变量设置为该单元格的任何内容。
    • 你在检测蛇是否吃了零食的地方设置了 self.score += 1。
    猜你喜欢
    • 1970-01-01
    • 2010-11-04
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2019-10-22
    相关资源
    最近更新 更多