当前位置: 代码迷 >> J2ME >> java单机rpg游戏人物对白如何保存的
  详细解决方案

java单机rpg游戏人物对白如何保存的

热度:5857   发布时间:2013-02-25 21:34:15.0
java单机rpg游戏人物对白怎么保存的
如果是网游。都是通过协议请求服务器的,但是如果在单机,那些对话内容是怎么保存和管理的呢。比如一个任务一个任务的往下走,这些都是怎么设计的呢。求思路 。谢谢大牛们....

------解决方案--------------------------------------------------------
网游大部分只要是不会变化的对白也是放在客户端上的。。。。

简单说
任务是通过变量的形式设计的

你完全可以把对话内容写在java代码中(不过写在代码中不便于修改,修改一次就要生成一个新的jar包,很麻烦,所以才放在某配置文件中)
然后通过某一个变量来表示当前正在执行的任务,当任务完成时,变量加1,执行下一个任务。。。
------解决方案--------------------------------------------------------
对话内容保存在message()方法中,玩家根据索引可以随时撮需要的对话内容。当前对话内容的序号由sn记录。
Java code
        int sn;    /*对话的序号*/    public void message(int ii)    {        i=0;        dlgM=null;        dlgMenu=null;        isTalking=true;        curNPC=ii-2;        switch(ii)        {            case 2:            dlgM=new String[7];            dlgM[0]="尹风:如今奸臣当道,国家有难,匹夫有责.郭大侠苦守襄阳,为夫决意前往助守襄阳";            dlgM[1]="晶晶:官人做得对。";            dlgM[2]="尹风:此去不知何时才能回,娘子要保重身体.";            dlgM[3]="晶晶:官人一路上要多加小心";            dlgM[4]="尹风:夫君记住了";            dlgM[5]="晶晶:......(呜咽)";            dlgM[6]="晶晶:大事为重,不用挂念我.";            break;            case 3:            dlgM=new String[1];            dlgM[0]="前方是土匪出没,危害乡民,请不要轻易前往";            break;            case 4:            dlgM=new String[3];            dlgM[0]="黄药师:你从很远的地方来的,是为了找郭靖吧!";            dlgM[1]="尹风:是,求仙人指点。";            dlgM[2]="黄药师:好,随我来";            break;                    case 5://            dlgM=new String[9];            dlgM[0]="尹风:郭大侠,不才愿助您驻守襄阳!";                        dlgM[1]="郭靖:现在有一件很重要的事需要你的帮忙。";            dlgM[2]="尹风:大侠请说!";            dlgM[3]="郭靖:马上就到冬季,将士们需要100件去寒之物。";            dlgM[4]="尹风:这个好办,我来的路上经过一个荒岛,上面野兽众多,找点皮毛还不容易。";            dlgM[5]="郭靖:这样便好,那就托付与你了,这些银两你带上。";            dlgM[6]="获得银两10000";            dlgM[7]="郭靖:早去早回。";            dlgM[8]="郭靖:太好了,有了这些虎皮,整个冬天都不怕了,过了这个冬天就是复我河山之时!";            break;            case 6:            dlgM=new String[1];            dlgMenu=new String[2];            dlgM[0]="你希望参加这个勇士的竞技吗?需要收取350两费用,竞技必须是杀死所有野兽才会停止.";            dlgMenu[0]="参加";            dlgMenu[1]="离开";            break;                            case 7://洪七公            dlgM=new String[3];            dlgM[0]="最近老觉得身体不好,本想自己去收集些药引,可是力不从心了,希望你可以帮助我,我将会给你一些报酬";            dlgM[1]="重新分配技能点需要10000两,交纳费用后你可以将技能点重新分配";            dlgM[2]="在荒岛收集10粒九花玉露丸,5棵通天草,在大智岛收集10棵千年人参,在蓬莱收集5个灵芝";            dlgMenu=new String[3];            dlgMenu[0]="分配技能";            dlgMenu[1]="接受任务";            dlgMenu[2]="离开这里";                        break;            case 8://船工            dlgM=new String[1];            dlgMenu=new String[2];            dlgMenu[0]="购买";            dlgMenu[1]="离开";            dlgM[0]="在这里你找不到比我这更好的船了!船只价格是600两,你赶紧买吧!";            break;        }        if(!dlg[ii-2])        sn=0;        else        if(ii<5)        sn=dlgM.length-1;        else        if(ii==5)        {            if(tn[4]==20)            sn=7;            else            sn=6;        }        else        sn=0;        createDialogImage(dlgM[sn]);        repaint();    }
  相关解决方案