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 = ; i < ; i++) {
// 将数组元素i保存到临时变量中
int temp = imageIds[i];
// 生成2以内的随机整数
int index = (int) (Math.random() * );
// 将随机数指定的数组元素的内容赋给数组元素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[]));
      pic1.setImageDrawable(getResources().getDrawable(imageIds[]));
      pic2.setImageDrawable(getResources().getDrawable(imageIds[]));
//判断是否猜中有小球的杯子
          if (imageIds[] == R.drawable.cup_ok) {
text.setText("恭喜你,猜对了,祝你幸福!");
} else
text.setText("很抱歉,猜错了,要不要再试一次?");
break;
case R.id.pic1:
             pic0.setImageDrawable(getResources().getDrawable(imageIds[]));
             pic1.setImageDrawable(getResources().getDrawable(imageIds[]));
             pic2.setImageDrawable(getResources().getDrawable(imageIds[]));
if (imageIds[] == R.drawable.cup_ok) {
text.setText("恭喜你,猜对了,祝你幸福!");
} else
text.setText("很抱歉,猜错了,要不要再试一次?");
break;
case R.id.pic2:
    pic0.setImageDrawable(getResources().getDrawable(imageIds[]));
           pic1.setImageDrawable(getResources().getDrawable(imageIds[]));
             pic2.setImageDrawable(getResources().getDrawable(imageIds[]));
if (imageIds[] == 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.

Android--小游戏的更多相关文章

  1. android小游戏模版—重力感应

               好久没更新博客了,今天来谈谈android小游戏---重力感应,一般在游戏里运用的比較多,比方这类游戏有:神庙逃亡.极品飞车,平衡球.三围重力迷宫,重力赛车等. 首先什么是重力感 ...

  2. 软件工程 Android小游戏 猜拳大战

    一.前言 最近学校举办的大学生程序设计竞赛,自己利用课余时间写了一个小游戏,最近一直在忙这个写这个小游戏,参加比赛,最终是老师说自己写的简单,可以做的更复杂的点的.加油 二.内容简介 自己玩过Andr ...

  3. 介绍一款Android小游戏--交互式人机对战五子棋

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6589025 学习Android系统开发之余,编 ...

  4. Android开发系列(十六):【Android小游戏成语连连看】第二篇

    写的晚了,在分工个Z市高中的一个成绩查询的系统,原系统居然是用VB写的,我不得不佩服原本写系统的那位哥们真能耐得住. 明天搭建下SVN就等着先发project款然后開始项目了.想想有工资进账,心里也为 ...

  5. Android小游戏:功夫蛇 团队开发经验总结

    前言 曾经没有代码管理的习惯,不用回版本控制工具.这种陋习虽然让原来千穿百孔的代码远离了实现,但这种逃避未必就是一件好事吧;). 于是从博客中挖出了原来的文章,并千辛万苦找到了最早的代码贴出来. 这篇 ...

  6. Android开发系列(十五):【Android小游戏成语连连看】第一篇

            学了一个多月安卓.由于暑假的时候要给朋友说写个小游戏.并且也想检測下自己的能力,所以说从7号開始就着手写这个小游戏了,前前后后带上课到今天总算是写完了,可是写的这个小游戏还是有非常多问 ...

  7. android小游戏 飞机躲子弹

    最近android老师让每人写一个小东西,因为之前学awt时写过一个java版的飞机躲子弹,所以这次想写成android版的. 文件直接导入就行http://files.cnblogs.com/fil ...

  8. 基于cocos2d开发的android小游戏——採花仙

    /*cocos 2d 已经成为了如今移动端游戏开发的强有力的工具,眼下主流游戏中多採用cocos 2d游戏引擎. 我也尝试了一下该引擎.我是用的是cocos2d-android,以后要移植到Cocos ...

  9. 第四十天 阿乐在其中—Android小游戏的飞机(四)加入敌人

    8月9日,晴. "江城如画里,山晓望晴空. 雨水夹明镜.双桥落彩虹. 人烟寒橘柚,秋色老梧桐." 上篇已经让飞机载入子弹和音效及背景音乐,本篇主要加入敌机. 本篇要用到的几个函数解 ...

  10. android 小游戏 ---- 数独(二)

    > 首先创建一个自己的View类   -->继承SurfaceView并实现SurfaceHolder.Callback接口    --> SurfaceView.getHolder ...

随机推荐

  1. XSS漏洞解析(一)

    以前写程序没有怎么关注这些网络安全问题,随着自己写的程序越来越多,开始关注了网络安全了. 一.什么是XSS XSS(Cross-Site Scripting) 跨站脚本是一种经常出现在web应用程序的 ...

  2. 【原创】《windows驱动开发技术详解》第4章实验总结一

    目录 1 实验要求 2 编写过程 2.1 确立整体架构 2.1.1 入口函数——DriverEntry 2.1.2 自定义创建设备函数——CreateDevice 2.1.3 卸载函数——Driver ...

  3. Ubuntu16.04环境下搭建基于三台主机的mysql galera cluster集群(实测有效)

    (注意: (1)文中红色字体部分不一定需要操作 (2)由于word文档编辑的原因,实际操作时部分命令需要手动输入!!直接复制粘贴会提示错误!! ) 一  搭建环境: 1 Ubuntu16.04版本(系 ...

  4. Linux官方源、镜像源汇总

    本文收录在日常运维杂烩系列 一.站点版 1.企业站 搜狐:http://mirrors.sohu.com/ 网易:http://mirrors.163.com/ 阿里云:http://mirrors. ...

  5. wget命令的几个常用选项和示例

    wget命令用来从指定的URL下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕.如果是服务器打断下 ...

  6. B树与B+详解

    承接上篇SQLite采用B树结构使得SQLite内存占用资源较少,本篇将讲述B树的具体操作(建树,插入,删除等操作).在看博客时,建议拿支笔和纸,一点一点操作,毕竟知识是自己的,自己也要消化的.本篇通 ...

  7. Java爬虫之下载全世界国家的国旗图片

    介绍   本篇博客将继续上一篇博客:Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗 的内容,将用Java来实现这个爬虫,下载全世界国家的国旗图片. ...

  8. 使用VSCode如何调试C#控制台程序_1

    A-环境安装 https://www.microsoft.com/net/download 下载 .NET Core SDK Installer: https://www.microsoft.com/ ...

  9. 【转载】Windows Server2012安装IIS服务器

    在云服务器的使用过程中,很多人由于习惯或者实际需要,会选择Windows Server系统服务器,较常用的版本有Windows Server2008.Windows Server2012.在Windo ...

  10. C#一个窗体调用另一个窗体的方法

    一个窗体调用另一个窗体的方法:例如:窗体B要调用窗体A中的方法1.首先在窗体A中将窗体A设为静态窗体public static  FormA   m_formA; //设此窗体为静态,其他窗体可调用此 ...