【Android开发】范例4-猜猜宝石放在哪个箱子里

实现"猜猜宝石放在哪个箱子"的小游戏:主界面中有三个箱子,单击其中任意一个箱子,将打开箱子,显示里面是否有宝石,并且将没有被单击的箱子设为半透明显示,被单击的箱子正常显示,同时根据单击的箱子是否有宝石显示对应的结果。如果单击的箱子没有宝石,将显示"很抱歉,猜错了,要不要再来一次?"的提示文字,如果猜对了,就会将所有箱子透明化,并显示"恭喜您,猜对了,祝您幸福!"

效果图:

用户未选择箱子的时候:

【Android开发】范例4-猜猜宝石放在哪个箱子里_第1张图片

用户选中带宝石的箱子的效果:

【Android开发】范例4-猜猜宝石放在哪个箱子里_第2张图片

用户没有选中带宝石的箱子的效果:

【Android开发】范例4-猜猜宝石放在哪个箱子里_第3张图片

强制横屏方法:
在AndroidManifest.xml的配置文件里面的

具体实现方法:
res/layout/main.xml:
表格布局:共分上下中三层,分别放置游戏信息,游戏的三个箱子,"再来一次"的按钮

	
	    
	
	
	    
	        
	        
	        
	    
	
	
	    

MainActivity:

package com.example.test;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;


public class MainActivity extends Activity {
	//定义一个保存全部图片id的数组
	int[] imageIds=new int[]{R.drawable.box_default,R.drawable.box_default,R.drawable.box_ok};
	private ImageView image1;
	private ImageView image2;
	private ImageView image3;
	private TextView result;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		image1=(ImageView)findViewById(R.id.imageview1);//获取ImageView1组件
		image2=(ImageView)findViewById(R.id.imageview2);//获取ImageView2组件
		image3=(ImageView)findViewById(R.id.imageview3);//获取ImageView3组件
		result=(TextView)findViewById(R.id.textView1);////获取TextView1组件
		reset();//将箱子的顺序打乱
		
		//为第一个箱子添加单击事件监听
		image1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				isRight(v,0);//判断结果
				
			}
		});
		//为第二个箱子添加单击事件监听
				image2.setOnClickListener(new OnClickListener() {
					
					@Override
					public void onClick(View v) {
						isRight(v,1);//判断结果
						
					}
				});
		//为第三个箱子添加单击事件监听
		image3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				isRight(v,2);//判断结果
				
			}
		});
		
		//获取“再玩一次”按钮
		Button button=(Button)findViewById(R.id.button1);
		//为“再玩一次”按钮添加事件监听器
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				reset();
				result.setText(R.string.title);//将标题恢复为默认值
				//图片透明度回复
				image1.setAlpha(255);
				image2.setAlpha(255);
				image3.setAlpha(255);
				//设置图片能够点击
				image1.setClickable(true);
				image2.setClickable(true);
				image3.setClickable(true);
				image1.setImageDrawable(getResources().getDrawable(R.drawable.box_default));
				image2.setImageDrawable(getResources().getDrawable(R.drawable.box_default));
				image3.setImageDrawable(getResources().getDrawable(R.drawable.box_default));
			}
		});
	}
	
	/*
	 * 判断猜出的结果
	 * param v
	 * param index
	 * */
	private void isRight(View v, int index) {
		//使用随机数组中图片资源ID设置每个ImageView
		image1.setImageDrawable(getResources().getDrawable(imageIds[0]));
		image2.setImageDrawable(getResources().getDrawable(imageIds[1]));
		image3.setImageDrawable(getResources().getDrawable(imageIds[2]));
		//为每个imageView设置半透明效果
		/*Alpha通道是一个8位的灰度通道,该通道用256级灰度
		 * 来记录图像中的透明度信息,定义透明、不透明和半透明区域*/
		image1.setAlpha(100);
		image2.setAlpha(100);
		image3.setAlpha(100);
		ImageView v1=(ImageView)v;
		v1.setAlpha(255);
		//设置图片不再能够点击
		image1.setClickable(false);
		image2.setClickable(false);
		image3.setClickable(false);
		if(imageIds[index]==R.drawable.box_ok){
			result.setText("恭喜您,猜对了,祝您幸福!");
		}else{
			result.setText("很抱歉,猜错了,要不要再来一次?");
		}
	}


	//使用随机数指定宝石所在的箱子
	private void reset(){
		for (int i = 0; i <3; i++) {
			int temp=imageIds[i];
			int index=(int)(Math.random()*2);
			imageIds[i]=imageIds[index];
			imageIds[index]=temp;
		}
	}
}

转载请注明出处:http://blog.csdn.net/acmman/article/details/44851479

你可能感兴趣的:(【Android开发】范例4-猜猜宝石放在哪个箱子里)