北京理工大学珠海学院计算机学院《Android移动开发技术》课内实验指导书任课教师:魏志軍《Android移动开发技术》实验(三)指导书一、实践目的综合运用布局组件、小部件,完成一个猜鸡蛋的小游戏。二、实践主要内容及要求本实践课程要求学生运用布局组件、小部件的基本知识,完成一个猜鸡蛋的小游戏,通过随机函数来进行简单的算法设计,可以使鸡蛋随机出现在不同的鞋子里;玩家可以点击不同的鞋子来猜测鸡蛋所处的位置。猜中,则显示‘恭喜您,猜对了,祝你幸福!’信息;猜错,则提示‘很抱歉,猜错了,要不要再试一次?’。可以通过‘再玩一次’按钮,进行下一轮游戏。三、实践基本步骤1)创建主界面主界面布局如下图所示:界面设计时,整体可以采用一个背景图片background.jpg使用合理的布局对整个界面垂直方向划分3个区域:区域1:一个TextView,用于显示游戏信息,初始显示:猜猜鸡蛋在哪只鞋子里?,在猜测的过程中,显示相应的猜测提示信息。区域2:使用合理的布局,在水平方向上划分3等分,每个布局中使用ImgView来显示不同的图片。在游戏初始阶段和‘再玩一次’按钮被点击之后,显示shoe_default.png图片区域3:放置‘再玩一次’按钮2)算法设计:布局设计中的3个ImageView,在玩家猜测之后,将要显示一个结果界面,如下所示:其中一个有蛋,两外两个没蛋。而且图片是半透明的即在玩家点击之后,要显示猜测的实际结果,此时3个ImageView显示的图片需要进行重新设定,其设定的值来自于res中的png图片shoe_sorry.pngshoe_ok.png3个ImageView所显示的顺序,可以预先在数组中进行预设定。int[]imageIds=newint[]{R.drawable.shoe_ok,R.drawable.shoe_sorry,R.drawable.shoe_sorry};//定义一个保存全部图片ID的数组然后在程序运行的过程中,通过随机函数重新设定它们在数组中的顺序。for(inti=0;i3;i++){inttemp=imageIds[i];//将数组元素i保存到临时变量中intindex=(int)(Math.random()*2);//生成一个随机数imageIds[i]=imageIds[index];//将随机数指定的数组元素的内容赋给数组元素iimageIds[index]=temp;//将临时变量的值赋值给随机数组指定的那个数组元素}玩家猜测时点击图片,即可根据所点击的图片的序号与数组中相对应的序号的实际图片进行判断,如果该图片是shoe_ok.png,则猜测正确,提示‘恭喜您,猜对了,祝你幸福!’;否则,提示‘很抱歉,猜错了,要不要再试一次?’1)“再玩一次”按钮点击之后,显示页面如初始页面所示:publicclassMainActivityextendsActivity{int[]imageIds=newint[]{R.drawable.shoe_ok,R.drawable.shoe_sorry,R.drawable.shoe_sorry};//定义一个保存全部图片ID的数组privateImageViewimage1;//ImageView组件1privateImageViewimage2;//ImageView组件2privateImageViewimage3;//ImageView组件3privateTextViewresult;//显示结果listenermlisttenter=newlistener();@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);image1=(ImageView)findViewById(R.id.imageView1);image2=(ImageView)findViewById(R.id.imageView2);image3=(ImageView)findViewById(R.id.imageView3);result=(TextView)findViewById(R.id.textView1);Buttonbutton=(Button)findViewById(R.id.button1);//获取“再玩一次”按钮reset();//将鞋子的顺序打乱//为第一只鞋子添加单击事件监听image1.setOnClickListener(mlisttenter);//为第二只鞋子添加单击事件监听image2.setOnClickListener(mlisttenter);//为第三只鞋子添加单击事件监听image3.setOnClickListener(mlisttenter);//为“再玩一次”按钮添加事件监听器button.setOnClickListener(mlisttenter);}publicclasslistenerimplementsOnClickListener{@OverridepublicvoidonClick(Viewarg0){//TODOAuto-generatedmethodstubswitch(arg0.getId()){caseR.id.imageView1:isRight(arg0,0);//判断结果break;caseR.id.imageView2:isRight(arg0,1);//判断结果break;caseR.id.imageView3:isRight(arg0,2);//判断结果break;caseR.id.button1:reset();result.setText(R.string.title);//将标题恢复为默认值image1.setAlpha(255);image2.setAlpha(255);image3.setAlpha(255);image1.setImageDrawable(getResources().getDrawable(R.drawable.shoe_default));image2.setImageDrawable(getResources().getDrawable(R.drawable.shoe_default));image3.setImageDrawable(getResources().getDrawable(R.drawable.shoe_default));break;}}}/***判断猜出的结果**@paramv*@paramindex*/privatevoidisRight(Viewv,intindex){//使用随机数组中图片资源ID设置每个ImageViewimage1.setImageDrawable(getResources().getDrawable(imageIds[0]));image2.setImageDrawable(getResources().getDrawable(imageIds[1]));image3.setImageDrawable(getResources().getDrawable(imageIds[2]));//为每个ImageView设置半透明效果image1.setAlpha(100);image2.setAlpha(100);image3.setAlpha(100);ImageViewv1=(ImageView)v;//获取被单击的图像视图v1.setAlpha(255);//设置图像视图的透明度if(imageIds[index]==R.drawable.shoe_ok){//判断是否猜对result.setText(恭喜您,猜对了,祝你幸福!);}else{result.setText(很抱歉,猜错了,要不要再试一次?);}}/***重新开始*/privatevoidreset(){for(inti=0;i3;i++){inttemp=imageIds[i];//将数组元素i保存到临时变量中intindex=(int)(Math.random()*2);//生成一个随机数imageIds[i]=imageIds[index];//将随机数指定的数组元素的内容赋值给数组元素iimageIds[index]=temp;//将临时变量的值赋值给随机数组指定的那个数组元素}}