2014-01-10 20 views
0

我有一个应用程序,我为朋友随机选择了一个棋盘游戏的比赛,以便玩家每次获得随机选择的物种。我希望在更新中包含一项功能,以允许黑名单,以便某些比赛无法选择。什么是最好的方式去做这件事?我会采取任何和所有的建议。非常感谢提前。在Android上的数组中的黑名单字符串

值得注意的是:数组由字符串组成,我希望只要安装了应用程序或者直到它们改变为止,它才会保持不变。

编辑:道歉我缺乏清晰度。我通常知道我需要怎么做,但是如何从设置菜单保存设置,以便在关闭和重新打开时,黑名单比赛是持久性的?即使应用程序关闭,重新打开时,我希望设置保持不变。这种方式下一次他们玩游戏(几周后),假设他们的口味没有改变,他们可以去点击而没有再次列入黑名单。

+0

您是否让用户选择要列入黑名单或您是否需要一种机制来检测所选项目是否列入黑名单? – Alex

+0

用户正在选择什么被列入黑名单。 – MyStackFlowethOver

回答

1

你需要做的是坚持数据。您可以使用两种解决方案: 1)SharedPreferences框架,用于毫不费力地保存键值对。看到这里看看如何保存一个列表Store a List or Set in SharedPreferences

2)使用SQL数据库。 (自定义解决方案)

在案例1中,您会坚持列入黑名单的字符串,而在案例2中,您最好创建一个包含所有字符串的表格,并对其是否列入黑名单进行布尔表示。

我建议共享首选项之一,因为它应该需要5分钟才能完成,而除非您熟悉数据库,否则数据库解决方案将需要一段时间才能解决。

3

没有任何代码,很难说如何去做这件事,因为我不知道你是如何实现应用程序的其余部分。

我能想到的一种方法是,如果您将一个整数与每个种族相关联,例如通过使用常量:

public static final GIRAFFE = 1; 
public static final GOOSE = 2; 

然后,您可以生成随机整数来随机挑选每场比赛。如果您为随机整数生成方法创建了一个方法,那么您可以传递一些将被排除的数字。您可以继续生成随机整数,而生成的整数是排除的数字之一。

E.g. (由于它是Android的,我会在Java代码中)

// assume min = smallest integer assigned to an animal, 
// and max = largest integer assigned to an animal 

public static int randomNumber(int ... exclude) 
{ 
    int random = min + (int)(Math.random() * ((max - min) + 1)); 
    for (int i = 0; i < exclude.length; i++) 
    { 
     if (exclude[i] == random) 
      random = Min + (int)(Math.random() * ((Max - Min) + 1)); 
    } 
    return random; 
} 

我有点新的StackOverflow,所以让我知道,如果这有助于。

+0

这是我的基本想法,但是我怎么能有一个设置菜单来存储黑名单的比赛,以获得持久的体验?即使应用程序关闭,重新打开时,我希望设置保持不变。这种方式下一次他们玩游戏(几周后),假设他们的口味没有改变,他们可以去点击而没有再次列入黑名单。我对不清楚的道歉表示歉意。 – MyStackFlowethOver

+0

要存储所有用户共享和可编辑的数据,您需要使用某种在线存储或数据库。 要存储为每个用户单独保存的数据,可以将其存储在项目的本地。要做到这一点,您应该可以像写入文本文件一样简单,以跟踪个人用户的字符串。 –

相关问题