随机ImageViews使游戏随机

时间:2013-10-24 22:06:13

标签: java android

我已经创建了一对游戏它一切正常但是你可以看到它以1套方式制作我在代码中放了4个按钮作为总共24个按钮保持简短我想知道如果这是一种随机化的方式游戏,例如是否有可能随机化按钮名称pic1 pic2 pic3 pic4或ids imageview1 2 3 4我已经做了很多搜索所以不要急于问题请耐心等待如果我没有得到它,请使用我的代码告诉我所以我知道代码的snipets对我不起作用

public class MainActivity extends Activity {        
@Override
protected void onCreate(Bundle savedInstanceState) {        
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final ImageView pic1 = (ImageView ) findViewById(R.id.imageView1);      
final ImageView pic2 = (ImageView ) findViewById(R.id.imageView2);           
final ImageView pic3 = (ImageView ) findViewById(R.id.imageView3);
final ImageView pic4 = (ImageView ) findViewById(R.id.imageView4); 

      pic1.setOnClickListener(new View.OnClickListener() {              
    public void onClick(View v) {             
     pic1.setTag("beck");    
 if (pic1.getTag()==("beck"))  {pic1.setBackgroundResource(R.drawable.becks);}  

 if (pic2.getTag()==("beck")){                  
     pic1.setVisibility(View.INVISIBLE);
     pic2.setVisibility(View.INVISIBLE);}

 if (pic3.getTag()==("rob") || pic4.getTag()==("rob")) {
     pic1.setTag  ("boot");pic1.setBackgroundResource(R.drawable.jordboots);
     pic2.setTag  ("boot");pic2.setBackgroundResource(R.drawable.jordboots);
     pic3.setTag ("boot");pic3.setBackgroundResource(R.drawable.jordboots);
     pic4.setTag ("boot");pic4.setBackgroundResource(R.drawable.jordboots); }       
     }});   

        pic2.setOnClickListener(new View.OnClickListener() {                         
    public void onClick(View v) {  
        pic2.setTag ("beck");

    if (pic2.getTag()==("beck")){pic2.setBackgroundResource(R.drawable.becks);} 

    if (pic1.getTag()==("beck"))   {            
        pic1.setVisibility(View.INVISIBLE);
        pic2.setVisibility(View.INVISIBLE); }

    if (pic3.getTag()==("rob") || pic4.getTag()==("rob")) {
        pic1.setTag  ("boot");pic1.setBackgroundResource(R.drawable.jordboots);
        pic2.setTag ("boot");pic2.setBackgroundResource(R.drawable.jordboots);
        pic3.setTag ("boot");pic3.setBackgroundResource(R.drawable.jordboots);
        pic4.setTag ("boot");pic4.setBackgroundResource(R.drawable.jordboots); }
        }});        

        pic3.setOnClickListener(new View.OnClickListener() {                
    public void onClick(View v) {          
        pic3.setTag("rob"); 
    if (pic3.getTag()==("rob")){pic3.setBackgroundResource(R.drawable.robs);}

    if (pic4.getTag()==("rob")){    
        pic3.setVisibility(View.INVISIBLE);
        pic4.setVisibility(View.INVISIBLE); }

    if (pic1.getTag()==("beck") || pic2.getTag()==("beck")) {
        pic1.setTag ("boot");pic1.setBackgroundResource(R.drawable.jordboots);
        pic2.setTag ("boot");pic2.setBackgroundResource(R.drawable.jordboots);
        pic3.setTag ("boot");pic3.setBackgroundResource(R.drawable.jordboots);
        pic4.setTag ("boot");pic4.setBackgroundResource(R.drawable.jordboots); }
        }});      

        pic4.setOnClickListener(new View.OnClickListener() {                         
     public void onClick(View v) {  
        pic4.setTag ("rob");        

    if (pic4.getTag()==("rob")){pic4.setBackgroundResource(R.drawable.robs);}    

    if (pic3.getTag()==("rob")){        
         pic3.setVisibility(View.INVISIBLE);
         pic4.setVisibility(View.INVISIBLE); }    

    if (pic1.getTag()==("beck") || pic2.getTag()==("beck")) {
        pic1.setTag ("boot");pic1.setBackgroundResource(R.drawable.jordboots);
        pic2.setTag ("boot");pic2.setBackgroundResource(R.drawable.jordboots);
        pic3.setTag ("boot");pic3.setBackgroundResource(R.drawable.jordboots);
        pic4.setTag ("boot");pic4.setBackgroundResource(R.drawable.jordboots); }
        }});             
        }}  

这是否更接近解决我的问题,如果是这样我如何将图像分配到图像视图的背景

ArrayList<Integer> objects = new ArrayList<Integer>();
array(R.drawable.becks);
array(R.drawable.jordboots);
array(R.drawable.becks);
array(R.drawable.robs);
array(R.drawable.robs);
Collections.shuffle(objects);

2 个答案:

答案 0 :(得分:0)

我有点看到你在这里做的事情,但我认为你的方法非常奇怪。

您应该有一个支持模型的数据结构。您的数据模型应代表每个可能的对(或甚至单个项)。该对象必须具有唯一标识符,并且还必须具有类型(beck,boot等)。应该有一种方法可以为每种类型引用正确的图像(即:beck使用R.drawable.beck)。

然后你应该有办法生成“随机”数据。即:您的数据结构(数组)包含所有图块或“图像视图数据”。

从那里开始应该会容易得多。

再次重新思考你的问题。这并不困难,但我认为你的方法让它变得非常复杂。

答案 1 :(得分:0)

这对我来说是使用列表来保存id信息然后添加shuffle方法并像往常一样命名你的按钮

List<Integer> objects = new ArrayList<Integer>();
objects.add(R.id.imageView1);  
objects.add(R.id.imageView2);       
objects.add(R.id.imageView3); 
objects.add(R.id.imageView4);
// Shuffle the collection
Collections.shuffle(objects); 

ImageView pic1 = (ImageView ) findViewById(objects.get(0));        
ImageView pic2 = (ImageView ) findViewById(objects.get(1));        
ImageView pic3 = (ImageView ) findViewById(objects.get(2));
ImageView pic4 = (ImageView ) findViewById(objects.get(3));