欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android--小游戏

程序员文章站 2022-04-09 14:53:19
GitHub:猜猜小球在哪个杯子里 功能描述 “猜小球”是一个简单的愉悦身心的小游戏,它的功能结构如图a-1所示。 构建开发环境 在开发本游戏时,首先需要下载安装Android SDK 4.3,设置系统属性环境变量,启动Eclipse,创建和配置AVD模拟器,创建Android应用程序。 准备资源 ......

github:

功能描述

  “猜小球”是一个简单的愉悦身心的小游戏,它的功能结构如图a-1所示。

Android--小游戏

构建开发环境

在开发本游戏时,首先需要下载安装android sdk 4.3,设置系统属性环境变量,启动eclipse,创建和配置avd模拟器,创建android应用程序。

准备资源

在实现本游戏前,首先需要准备游戏中所需的图片资源,包括游戏背景图片、图标、默认显示的杯子、有小球的杯子和没有小球的杯子5张图片,如图a-2所示。把它们放置在项目根目录的res/drawable-mdpi文件夹中。

 Android--小游戏 Android--小游戏 Android--小游戏 Android--小游戏          Android--小游戏

  background.png    cup_default.png cup_ok.png   cup_sorry.png       ic_launcher.png

之后系统将自动在gen目录下的com.example_game包中的r.java文件中添加对应的图片和id。打开r.java文件,可以看到下面图片id。

public static final int background=0x7f020000;

public static final int cup_default=0x7f020001;

public static final int cup_ok=0x7f020002;

public static final int cup_sorry=0x7f020003;

public static final int ic_launcher=0x7f020004;

业务流程

当玩家开始游戏时,屏幕将显示3个杯子,单击其中的任意一个杯子,程序判断该杯子中是否有小球,并且打开杯子显示结果,有小球显示猜对了,没有则显示猜错了询问是否再玩一次,此时可通过单击“再玩一次”按钮重新开始游戏。具体系统流程如图a-3所示。

Android--小游戏实现过程

实现游戏规则的代码全部编写在主活动的mainactivity中:

(1)  在主活动mainactivity中,定义一个保存全部图片id的数组、3个imageview类型的对象和一个textview类型的对象。具体代码如下:

//显示结果
private textview text; 
// imageview组件
private imageview pic0;  
private imageview pic1;  
private imageview pic2;  
//定义一个保存全部图片id的数组
int[] imageids = new int[]{r.drawable.cup_ok,
r.drawable.cup_sorry,r.drawable.cup_sorry};

(2)  编写一个无返回值的方法replay(),用于随机指定小球所在的杯子。具体代码如下:

public void replay() {    
        for (int i = 0; i < 3; i++) {  
// 将数组元素i保存到临时变量中
            int temp = imageids[i];  
// 生成2以内的随机整数
            int index = (int) (math.random() * 2);  
// 将随机数指定的数组元素的内容赋给数组元素i  
            imageids[i] = imageids[index]; 
// 将临时变量的值赋值给随机数组指定的那个数组元素  
            imageids[index] = temp; 
        }  
}

(3)  编写drawable资源对应的xml文件button_state.xml,用于设置当鼠标按下时显示的图片,以及鼠标没有按下时显示的图片。具体代码如下:

//获取imageview组件
pic0 = (imageview) findviewbyid(r.id.pic0);  
pic1 = (imageview) findviewbyid(r.id.pic1); 
pic2 = (imageview) findviewbyid(r.id.pic2);
//获取textview组件
text = (textview) findviewbyid(r.id.text);  
//开局先将杯子顺序打乱
replay();

(4)  为3个显示杯子的imageview组件添加单击事件监听器,用于将杯子打开,并显示猜猜看的结果。具体代码如下:

//为杯子添加单击事件监听
pic0.setonclicklistener(this);  
pic1.setonclicklistener(this);  
pic2.setonclicklistener(this);

(5)  编写onclick()方法,用于显示打开的杯子,并显示判断结果。具体代码如下:

public void onclick(view view) {  
        switch (view.getid()) {  
            //设置已打乱顺序的杯子图片
case r.id.pic0:  
      pic0.setimagedrawable(getresources().getdrawable(imageids[0]));
      pic1.setimagedrawable(getresources().getdrawable(imageids[1]));
      pic2.setimagedrawable(getresources().getdrawable(imageids[2])); //判断是否猜中有小球的杯子           if (imageids[0] == r.drawable.cup_ok) { text.settext("恭喜你,猜对了,祝你幸福!"); } else text.settext("很抱歉,猜错了,要不要再试一次?"); break; case r.id.pic1:
             pic0.setimagedrawable(getresources().getdrawable(imageids[0]));
             pic1.setimagedrawable(getresources().getdrawable(imageids[1]));
             pic2.setimagedrawable(getresources().getdrawable(imageids[2])); if (imageids[1] == r.drawable.cup_ok) { text.settext("恭喜你,猜对了,祝你幸福!"); } else text.settext("很抱歉,猜错了,要不要再试一次?"); break; case r.id.pic2:
    pic0.setimagedrawable(getresources().getdrawable(imageids[0]));
           pic1.setimagedrawable(getresources().getdrawable(imageids[1]));              pic2.setimagedrawable(getresources().getdrawable(imageids[2])); if (imageids[2] == r.drawable.cup_ok) { text.settext("恭喜你,猜对了,祝你幸福!"); } else text.settext("很抱歉,猜错了,要不要再试一次?"); break; case r.id.butplay: replay(); default: break; } }

(6)  获取“再玩一次”按钮,并为该按钮添加单击事件监听器。在其单击事件中,将标题和3个imageview的图像恢复为默认值。具体代码如下:

//获取“再玩一次”按钮
button butplay = (button) findviewbyid(r.id.butplay); 
//为“再玩一次”按钮添加事件监听器
butplay.setonclicklistener(this);  

public void replay() {  
//点击再玩一次,恢复原有标题和杯子图片  
  text.settext(r.string.cup);
  pic0.setimagedrawable(getresources().getdrawable(r.drawable.cup_default));
  pic1.setimagedrawable(getresources().getdrawable(r.drawable.cup_default));
  pic2.setimagedrawable(getresources().getdrawable(r.drawable.cup_default)); }
(7)  在androidmanifest.xml中设置activity让游戏横屏显示。具体代码如下:
android:screenorientation="landscape"

运行调试

项目开发完成后,就可以在模拟器中运行该项目了。成功运行后将显示如图a-4游戏主界面。单击其中的任意一个杯子,将打开杯子显示里面是否有小球,根据单击的杯子里面是否有小球显示对应的结果。

Android--小游戏

图a-4

例如单击中间的杯子,如果小球在这个杯子里,将显示如图a-5所示的运行结果;否则,将显示如图a-6所示的效果。单击“再玩一次”按钮,重新开始游戏。

Android--小游戏            Android--小游戏

图a-5                                 图a-6

参考文献

[1]李文琴,李翠霞编著.android开发与实践.2014.8.