【问题标题】:Generating password saves for oldschool games生成为老式游戏保存的密码
【发布时间】:2011-11-03 08:35:05
【问题描述】:

我正在制作老式风格的 Flash 游戏,因为它太老式了,我希望它也能保存密码。不幸的是,我不能使用通常的解决方案 - 密码和相应级别的数组,其中一个是给 Arcadeprehacks 上的人带来困难,另一个是我希望能够在游戏中保存并加载所有分数和生命.

关于密码,即我想要什么

我需要一些解决方案将数字值编码为字符串,这些值是:

Lives - up to 2 digits
Score - 10 digits
Level number - 3 digits

它还可以取 2 个附加值,可以是数字或文本,其他任何内容都将转换为字符串。

它不能转换为任何字符串 - 只能包含数字和大写字母。

【问题讨论】:

    标签: actionscript-3 passwords


    【解决方案1】:

    【讨论】:

    • 不幸的是,这不是我想的那种密码。去玩一些 NES 经典游戏,比如 Adventure Island 4,看看我的意思。
    • 您可以使用加密库使用嵌入在您的应用程序中的私钥来加密 puggsoy 算法的结果。然后,您应该能够使用用于加密数据的私钥对任何用户输入的代码进行解码。您不太可能只收到字母数字字符(尤其是只包括大写字母),但它会相对安全。有人必须反编译您的 SWF 以获得您的私钥才能破解代码。
    【解决方案2】:

    将密码保存在服务器端 SQL 中。

    【讨论】:

    • 嗯,认真的吗?首先,这使得无法离线播放。您还需要一台服务器,并编写更多代码。这一切都是为了一个密码。
    • 大多数人不会离线玩 Flash 游戏,而且很多人已经使用服务器来获取分数。如果您已经有一个记分牌,这是小菜一碟,当有人破解它时,您只需更改密码! :-)
    【解决方案3】:

    据我了解,你想要的是这样的:

    var livesString:String = new String(lives);
    
    var scoreString:String = new String(score);
    
    for(var i:int = scoreString.length; i < 10; i++)
    {
        scoreString = "0"+scoreString;
    }
    
    var lvlNumString:String = new String(lvlNum);
    
    for(var i:int = lvlNumString.length; i < 3; i++)
    {
        lvlNumString = "0"+lvlNumString;
    }
    
    var password:String = livesString+scoreString+lvlNumString;
    

    这应该会给你一个包含你想要的数据的字符串。对于两个“附加值”,只需像这样将它们添加到password

    password += myVar.toString();
    

    然后这样做使任何文本变为大写:

    password.toUpperCase();
    

    顺便说一句,你说生命值应该是“最多 2 位”,但如果你想要它正好是 2 位,只需使用与上述类似的 for 循环。

    【讨论】:

    • 好的,这是最简单的方法,我一开始就想到了。然而,这有一个主要缺陷 - 操纵密码太容易了,例如获得 99 条生命。我需要一些代码,所以我无法在不知道算法的情况下操作密码。基本上我想要得到的是类似于 ZD34FRGH65 - 游戏会知道这(例如)意味着 5 生活在 3 级,得分为 5000,但用户将无法轻松操纵它。
    • 嗯,我明白你的意思了。请参阅 meddlingwithfire 对gladoscc 答案的评论,这看起来是个好主意。如果您希望所有字母大写,请记住在加密后使用toUpperCase()
    • @Arnogh:然后使用加密库。这可能是最安全的方式。
    【解决方案4】:

    您可以使用一些基本的解码器环逻辑来生成您的代码。 0 变成“F”,1 变成“B”,等等。任何决心破解您的应用程序的人都可以翻译它,但这需要一些努力。

    您可以通过输入无用的数据来进一步混淆您的数据。例如,在第三个字符位置输入一个随机字符,然后让您的解码器始终忽略第三个字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      相关资源
      最近更新 更多