10:《地牢守卫者》代码分析:DataHighScores

Posted on   neocsl  阅读(257)  评论(0编辑  收藏  举报

  研究得分表类。   

class DataHighScores extends Object config(HighScoreList);

   得分表继承自Object,在UnrealScript中。抽象的物件继承自OBject,具体的物件继承自Actor。

同时还有一个关注的地方就是config(HighScoreList),这一项说明了存储的数值在HighScoreList.ini配置文件中,这个列表名是根据config(HighScoreList)定义的。

而继承的目录应该是一下Src->Classes->AntGame

[AntGame.DataHighScores],前者为程序的文件夹名,后者为得分名。

 

  正式进入该类研究。作为一个排名类,主要完成一些逻辑机制。而显示输出排名情况将会交给UI部分打理。那么排名逻辑应该提供哪些功能呢?

  1.首先应该能在配置标文件中存储得分数组列表,用一下方式定义将能存储该类型变量:

 

struct HighScoreEntry{  var int score;  var string name;<br>};                //分排名结构,有名字有成绩var config array<HighScoreEntry> HighScoresEntries;    //注意Config类型,这将能使变量存储在ini中

 

  这就是得分列表,应该有一系列的逻辑机制实现怎样竞分排名。

  

  2.应该有一种检验方法查看一个列表高分能否进入该排名列表里面。

function IsWithinHighScore(HighScoreEntry entry)
{
      local int it;
      for(it=0;it<HightScoreEntry.length;it++)
      {
            if(HighScoreEntry[it].score=<entry.score)
            return it;         //brilliant as linsanity
       }
       return -1;       //too small to insert
}

 

  3.讲一个高分列表插进来

function int AddToScore(HighScoreEntry Entry)
{
      local int it;
      local int previouslength;    local int InsertAt;
      previouslength=HighScoresEntries.length;    InsertAt=-1;    for(it=HightScoresEntries.length-1;it>-1;it--)    {        if(it==0||Entry.score<HighScoresEntries[it-1])        {          HighScoreEntries.addItem(it,entry);    //位置,结构          InsertAt=it;            break;<br>         }<br>    }    if(HighScoresEntries.length>previouslength)    HighScoresEntries.Remove(HighScoresEntries.length-1,1);    saveConfig();     //将数组变量存储    return InsertAt;
}

 

 

 

 

 

编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示