Java 制作一款android游戏,不知道该怎么做

Java 制作一款android游戏,不知道该怎么做,java,android,Java,Android,我正在用Android/Java设计一款游戏,到目前为止一切都进展顺利。游戏显示了52张牌中的一张随机牌,用户必须确定下一张牌是高还是低。我把我的switch&case放在我的主类中,我不知道如何重新运行switch和case语句来随机抽取另一张卡 下面是我的类,我知道我不需要这么多,但我改变了很多代码,因为我最初的尝试,使这项工作。我知道问题不在于我的应用程序,而是因为我对安卓系统缺乏经验。。。看看代码,告诉我你的想法。由于这是一个相当广泛的问题,可能有不止一个答案,我将投票给所有给我相关答案

我正在用Android/Java设计一款游戏,到目前为止一切都进展顺利。游戏显示了52张牌中的一张随机牌,用户必须确定下一张牌是高还是低。我把我的switch&case放在我的主类中,我不知道如何重新运行switch和case语句来随机抽取另一张卡

下面是我的类,我知道我不需要这么多,但我改变了很多代码,因为我最初的尝试,使这项工作。我知道问题不在于我的应用程序,而是因为我对安卓系统缺乏经验。。。看看代码,告诉我你的想法。由于这是一个相当广泛的问题,可能有不止一个答案,我将投票给所有给我相关答案的人,不管我是否使用该解决方案

谢谢

-史蒂夫

我的主要游戏课程:

public class Game extends SwarmActivity {

int cardNum;

Deck d = new Deck();
int x = d.shuffle();
String y = String.valueOf(x);

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game);
    Swarm.init(this, 1388, "1e02a1ecfa9483b7b62e7b32c7e055f3");
    TextView t = (TextView) findViewById(R.id.score);
    ImageView display = (ImageView) findViewById(R.id.display);





    switch (x) {

    case 0:
        display.setImageResource(R.drawable.c_one);
        cardNum = 1;
        break;
    case 1:
        display.setImageResource(R.drawable.c_two);
        cardNum = 2;
        break;
    case 2:
        display.setImageResource(R.drawable.c_three);
        cardNum = 3;
        break;
    case 3:
        display.setImageResource(R.drawable.c_four);
        cardNum = 4;
        break;
    case 4:
        display.setImageResource(R.drawable.c_five);
        cardNum = 5;
        break;
    ---------- (5-49) ----------
    case 50:
        display.setImageResource(R.drawable.c_fiftyone);
        cardNum = 51;
        break;
    case 51:
        display.setImageResource(R.drawable.c_fiftytwo);
        cardNum = 52;
        break;

    }

    ImageView higher = (ImageView) findViewById(R.id.btn_higher);
    ImageView lower = (ImageView) findViewById(R.id.btn_lower);

    higher.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {



        }
    });

    lower.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {



        }
    });
}
}

甲板课:(原来这是在我的游戏课上)

}

洗牌课:(原来这是在我的游戏课上)

公共类洗牌{
公共静态int[]getShuffle(){
int[]卡=新int[52];
ArrayList cards_objs=新的ArrayList();
对于(int i=0;i

}

如果你想更换那个大开关盒,那么试着给你的抽屉命名,比如card_00.png、card_01.png。。。card_51.png。这样,您可以使用反射API(或其他类似工具)更轻松地访问可绘制ID:

int [] cards = new int [52];

Field  [] fields = R.drawable.class.getDeclaredFields();

String [] names = new String[52];

for(int i=0; i<fields.length; i++)
    if(fields[i].getName().contains("card_"))
        names[i] = fields[i].getName();

Arrays.sort(names);

try
{
    for(int i=0; i<names.length; i++)
        cards[i] = R.drawable.class.getField(names[i]).getInt(null);
}
catch(Exception ex){}
int[]卡片=新的int[52];
Field[]fields=R.drawable.class.getDeclaredFields();
字符串[]名称=新字符串[52];

对于(int i=0;i你真的在使用一个巨大的
switch
语句吗?为什么不在相应的图像资源字段中使用一个由卡号[0,52]索引的数组呢?你也可以用
cardNum=…
来代替所有的
cardNum=x+1
我不得不把这些卡命名为“一,二,三”而不是(1,2,3)因为当我用数字启动res文件时,android会给我一个问题。试着把它们命名为card_01、card_02……card_52,并使用反射api或其他聪明的解决方案访问可绘制ID。请看我前面的问题:。你的代码会大幅缩小。我会看看,但你知道我如何选择它吗在我点击更高或更低的位置后,是否会出现随机卡?我尝试使用一个intent…这种方法有效…在create类中,我无法从另一个类中运行方法。我将对此添加一个答案。一旦运行更新的代码,它会显示应用程序意外停止:/然后使用Logcat输出查看异常发生的位置并对其进行调试。简单。
public class Shuffle {
public static int[] getShuffle() {
    int[] cards = new int[52];
    ArrayList<Integer> cards_objs = new ArrayList<Integer>();

    for (int i = 0; i < cards.length; i++) {
        cards_objs.add(i);
    }

    Collections.shuffle(cards_objs);

    for (int i = 0; i < cards.length; i++) {
        cards[i] = cards_objs.get(i);

    }

    return cards;
}
int [] cards = new int [52];

Field  [] fields = R.drawable.class.getDeclaredFields();

String [] names = new String[52];

for(int i=0; i<fields.length; i++)
    if(fields[i].getName().contains("card_"))
        names[i] = fields[i].getName();

Arrays.sort(names);

try
{
    for(int i=0; i<names.length; i++)
        cards[i] = R.drawable.class.getField(names[i]).getInt(null);
}
catch(Exception ex){}
//create a Random object, and an integer 
//indicating the current card as a member of your class:
Random random = new Random();
int actual = 0;

//then for random card selection:
actual = random.nextInt(52);
display.setImageResource(cards[actual]);

//for getting a higher card:
actual = actual<51 ? actual+1 : actual;
display.setImageResource(cards[actual]);

//for getting a lower card:
actual = actual>0 ? actual-1 : actual;
display.setImageResource(cards[actual]);