Game Maker Studio:十大高分榜(认真)

时间:2015-10-27 08:53:11

标签: game-maker

我觉得我不得不发布这个,但我现在已经试图实现这一整个星期了,而且我无处可去!

我试图创建一个高分榜。排名前10的分数,保存到INI文件中。我曾经在整个互联网上搜索过每一件事。我只是不明白。

所以我试过的就是这个......

我有一个" load_room"建立。当这个房间加载时,它会运行以下代码:

ini_open('score.ini')
ini_write_real("Save","highscore_value(1)",highscore_value(1));
ini_write_string("Save","highscore_name(1)",highscore_name(1));
ini_close();

room_goto(room0);

然后当我的角色死去时:

myName = get_string("Enter your name for the highscore list: ","Player1"); //if they enter nothing, "Player1" will get put on the list
highscore_add(myName,score);

ini_open('score.ini')
value1=ini_write_real("Save","highscore_value(1)",0);
name1=ini_write_string("Save","highscore_name(1)","n/a");
ini_close();
highscore_clear();
highscore_add(myName,score);

score = 0;
game_restart();

我并不担心要包含显示分数的代码,因为我会检查游戏为添加的实际值创建的score.ini。

有了这个,我似乎能够保存一个得分,这就是全部。我需要保存10.再次,我很抱歉提出同样古老的问题,但我真的需要帮助,并希望那里的人可以提供帮助!

非常感谢, 李。

1 个答案:

答案 0 :(得分:0)

  1. 为什么使用load_room中的保存代替加载?
  2. 为什么你死后清理桌子?
  3. 您需要使用循环来保存每个结果。
  4. 例如,加载:

    highscore_clear();
    
    ini_open("score.ini");
    for (var i=1; i<=10; i++)
    {
        var name = ini_read_string("Save", "name" + string(i), "");
        var value = ini_read_real("Save", "value" + string(i), 0);
        if value != 0
            highscore_add(name, value);
    }
    ini_close();
    
    room_goto(room0);
    

    模具:

    myName = get_string("Enter your name for the highscore list: ","Player1");
    highscore_add(myName, score);
    
    ini_open("score.ini");
    for (var i=1; i<=10; i++)
    {
        ini_write_string("Save", "name" + string(i), highscore_name(i));
        ini_write_string("Save", "value" + string(i), string(highscore_value(i)));
    }
    ini_close();
    
    score = 0;
    game_restart();
    

    还有更多的事情......

    score = 0;
    

    你需要在游戏开始时这样做,所以这里没必要。

    get_string("Enter your name for the highscore list: ","Player1");
    

    你在帮助中读过笔记吗?

      

    注意:此功能仅供调试使用。如果您在最终游戏中需要此功能,请使用get_string_async

    我使用ini_write_string(..., ..., string(...));代替ini_write_real(),因为第二种情况会保存1000.000000000之类的内容,而第一种情况只保存1000