开发者社区> 光仔december> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

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

效果图:

用户未选择箱子的时候:

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


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


强制横屏方法:
在AndroidManifest.xml的配置文件里面的<activity
里面加入:
android:screenOrientation="landscape" //横屏
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"//去掉状态栏及标题栏

具体实现方法:
res/layout/main.xml:
表格布局:共分上下中三层,分别放置游戏信息,游戏的三个箱子,"再来一次"的按钮
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:id="@+id/tableLayout1"
	android:background="@drawable/background">
	<TableRow android:id="@+id/tableRow1"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:gravity="center"
	    android:layout_weight="2">
	    <TextView android:text="@string/title"
	        android:padding="10px"
	        android:gravity="center"
	        android:textSize="35px"
	        android:textColor="#FFFFFF"
	        android:id="@+id/textView1"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"/>
	</TableRow>
	<TableRow android:id="@+id/tableRow2"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:gravity="center"
	    android:layout_weight="1">
	    <LinearLayout android:orientation="horizontal"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content">
	        <ImageView android:id="@+id/imageview1"
	            android:src="@drawable/box_default"
	            android:paddingLeft="30px"
	            android:layout_width="wrap_content"
	            android:layout_height="wrap_content"/>
	        <ImageView android:id="@+id/imageview2"
	            android:src="@drawable/box_default"
	            android:paddingLeft="30px"
	            android:layout_width="wrap_content"
	            android:layout_height="wrap_content"/>
	        <ImageView android:id="@+id/imageview3"
	            android:src="@drawable/box_default"
	            android:paddingLeft="20px"
	            android:layout_width="wrap_content"
	            android:layout_height="wrap_content"/>
	    </LinearLayout>
	</TableRow>
	<LinearLayout android:orientation="horizontal"
	    	android:layout_weight="1"
	    	android:gravity="center_horizontal"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content">
	    <Button android:text="再玩一次"
	        android:id="@+id/button1"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"/>
	</LinearLayout>
</TableLayout>

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开发秘籍(第2版)》——导读
本节书摘来自异步社区《Android开发秘籍(第2版)》一书中的目录,作者 【美】Ronan Schwarz , Phil Dutson , James Steele , Nelson To,更多章节内容可以访问云栖社区“异步社区”公众号查看
1334 0
《Android平板电脑开发秘籍》——导读
本节书摘来自异步社区《Android平板电脑开发秘籍》一书中的目录,作者 【印度】B.M. Harwani,更多章节内容可以访问云栖社区“异步社区”公众号查看
1456 0
+关注
光仔december
目前致力于JavaEE(struts/hibernate/spring/MyBatis等框架)、数据库(Mysql/oracle)、静态页面(Html/Css)技术和脚本(JavaSript/JQuery/Ajax)等技术方面的研究
文章
问答
文章排行榜
最热
最新
相关电子书
更多
复杂环境下的视觉同时定位与地图构建
立即下载
Android插件化:从入门到放弃
立即下载
Facebook iOS App技术演化十年之路
立即下载