摘要:功能描述猜小球是一个简单的愉悦身心的小游戏,它的功能结构如图所示。成功运行后将显示如图游戏主界面。图例如单击中间的杯子,如果小球在这个杯子里,将显示如图所示的运行结果否则,将显示如图所示的效果。
GitHub:https://github.com/vinieo/game 功能描述“猜小球”是一个简单的愉悦身心的小游戏,它的功能结构如图a-1所示。
构建开发环境在开发本游戏时,首先需要下载安装Android SDK 4.3,设置系统属性环境变量,启动Eclipse,创建和配置AVD模拟器,创建Android应用程序。
准备资源在实现本游戏前,首先需要准备游戏中所需的图片资源,包括游戏背景图片、图标、默认显示的杯子、有小球的杯子和没有小球的杯子5张图片,如图a-2所示。把它们放置在项目根目录的res/drawable-mdpi文件夹中。
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所示。
实现过程
实现游戏规则的代码全部编写在主活动的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游戏主界面。单击其中的任意一个杯子,将打开杯子显示里面是否有小球,根据单击的杯子里面是否有小球显示对应的结果。
图a-4
例如单击中间的杯子,如果小球在这个杯子里,将显示如图a-5所示的运行结果;否则,将显示如图a-6所示的效果。单击“再玩一次”按钮,重新开始游戏。
图a-5 图a-6
参考文献
[1]李文琴,李翠霞编著.Android开发与实践.2014.8.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/2682.html
摘要:因此在完成前面的优化适配后,您只需考虑以下四个关键事项最大宽高比支持全屏模式对于确保游戏玩家获得最佳的沉浸式体验至关重要。showImg(https://user-gold-cdn.xitu.io/2019/5/20/16ad2fac98c557d9); 作者 / Ben Gable, Partner Developer Advocate 让我们继续《让您的应用适配更多屏幕》中的话题,不...
摘要:因此在完成前面的优化适配后,您只需考虑以下四个关键事项最大宽高比支持全屏模式对于确保游戏玩家获得最佳的沉浸式体验至关重要。showImg(https://user-gold-cdn.xitu.io/2019/5/20/16ad2fac98c557d9); 作者 / Ben Gable, Partner Developer Advocate 让我们继续《让您的应用适配更多屏幕》中的话题,不...
摘要:市场分析在中国上线的游戏的机型适配难度有多大根据工信部数据,年全年的上市智能手机中,有款采用操作系统,出货量亿部。单个碎片面积越大表明其单品占有率越高,比如三星和小米的,分别在该视图上占据面积超过。 市场分析 在中国上线的Android游戏的机型适配难度有多大?根据工信部数据,2014年全年的上市智能手机中,有1604款采用Android操作系统,出货量3.49亿部。这也就意味着201...
摘要:市场分析在中国上线的游戏的机型适配难度有多大根据工信部数据,年全年的上市智能手机中,有款采用操作系统,出货量亿部。单个碎片面积越大表明其单品占有率越高,比如三星和小米的,分别在该视图上占据面积超过。 市场分析 在中国上线的Android游戏的机型适配难度有多大?根据工信部数据,2014年全年的上市智能手机中,有1604款采用Android操作系统,出货量3.49亿部。这也就意味着201...
摘要:在升级后,将同时支持和端。此外,还在应用中引入了游戏礼品卡服务。由于每名用户中就有个游戏玩家,所以无论对于游戏开发商还是来说,都是一个重要的平台。所以,在的大力支持下,接下来平台上的游戏来有望变得更加有趣好玩。 Google今天在游戏开发者大会上宣布了若干与Google Play游戏服务的相关更新,其中和游戏玩家关系最大的也许就是Google Play Game Services将支持...
阅读 420·2021-10-08 10:20
阅读 1348·2021-09-23 11:22
阅读 3042·2019-08-30 15:55
阅读 1163·2019-08-28 18:25
阅读 1721·2019-08-28 18:14
阅读 1107·2019-08-26 11:37
阅读 2790·2019-08-26 10:18
阅读 2321·2019-08-23 18:39