根据玩家位置添加元素(文本,事件)

时间:2016-08-23 18:07:07

标签: c# console

我正在为个人使用创建一个框架,这允许我创建环境,实体,项目等...... 现在,我想能够检索我刚刚创建的位置并使用它做一些事情。就像所说的位置必须有那种类型的怪物,可能有一个铁匠来帮我伪造新武器,而且由于它是一个基于文本的游戏,我想把一些文字链接到那些位置。

我有一个列在世界级的名单,如下:

@Override
protected void onPreExecute() {
    dialog = new ProgressDialog(getActivity());
    dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    dialog.setMessage("Loading ...");
    dialog.setIndeterminate(true);
    dialog.setCanceledOnTouchOutside(false);
    dialog.show();
}

这是一个很糟糕的代码:

Environment.Environments.Add(new Environment("Dark Forest", "A very dark... very frightening place...", true, true));

我尝试了不同的东西,例如添加与我的命令之一相关的事件" Look"但我不确定它是否适合我的需要而且我是必须说,我从来没有使用过活动!所以如果你要实现这样的东西,你会怎么做呢?!

1 个答案:

答案 0 :(得分:1)

我会创建一个包含位置的网格系统。给出一个x / y坐标,包含细节集合(Items和Creatures(不要使用“entity”,它有自己的含义)。)

public class Environment
{
   public List<Location> Locations {set; get;}
   public Location CurrentLocation {get; set;}
   public Environment()
   {
       Locations = new List<Locations> {...} //set up Locations in a grid
       public Location Move(string direction)
       {
        //check to see if there is a location in the direction the user wants to move
        //if so, load the new Location into CurrentLocation. If not, throw an exception
       }
   }
}

public class Location
{
   public List<Item> Items {set; get;}
   public List<Creature> Creatures {set; get;}
   public int X {get; set;} 
   public int Y {get; set;}
   public void OnLoaded()
   {
       //here is where you check if there are items, or creatures, etc, simply by counting the list...
   } 
}