android实现打地鼠游戏

今天上课老师用Java实现了打地鼠游戏的界面和具体逻辑,那么我也尝试使用Android语言实现其功能。

首先是打地鼠游戏的玩法

1.每隔1秒或者0.5秒地鼠会出现在九宫格中的任一位置
2.点击界面,如果地鼠出现的位置与点击位置相同,则认为打中地鼠。否则游戏继续。
3.打中地鼠后,游戏立即停止。

先上两张效果图

布局实现

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >

 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal" >

 <Button
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:onClick="start"
  android:text="开始" />

 <Button
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:onClick="end"
  android:text="暂停" />
 </LinearLayout>

 <TableLayout
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:layout_weight="1" >

 <TableRow android:layout_weight="1" >

  <TextView
  android:id="@+id/text11"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_margin="3dp"
  android:layout_weight="1"
  android:background="#d2b48c"
  android:gravity="center" />

  <TextView
  android:id="@+id/text12"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_margin="3dp"
  android:layout_weight="1"
  android:background="#d2b48c"
  android:gravity="center" />

  <TextView
  android:id="@+id/text13"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_margin="3dp"
  android:layout_weight="1"
  android:background="#d2b48c"
  android:gravity="center" />
 </TableRow>

 <TableRow android:layout_weight="1" >

  <TextView
  android:id="@+id/text21"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_margin="3dp"
  android:layout_weight="1"
  android:background="#d2b48c"
  android:gravity="center" />

  <TextView
  android:id="@+id/text22"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_margin="3dp"
  android:layout_weight="1"
  android:background="#d2b48c"
  android:gravity="center" />

  <TextView
  android:id="@+id/text23"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_margin="3dp"
  android:layout_weight="1"
  android:background="#d2b48c"
  android:gravity="center" />
 </TableRow>

 <TableRow android:layout_weight="1" >

  <TextView
  android:id="@+id/text31"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_margin="3dp"
  android:layout_weight="1"
  android:background="#d2b48c"
  android:gravity="center" />

  <TextView
  android:id="@+id/text32"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_margin="3dp"
  android:layout_weight="1"
  android:background="#d2b48c"
  android:gravity="center" />

  <TextView
  android:id="@+id/text33"
  android:layout_width="wrap_content"
  android:layout_height="match_parent"
  android:layout_margin="3dp"
  android:layout_weight="1"
  android:background="#d2b48c"
  android:gravity="center" />
 </TableRow>
 </TableLayout>

</LinearLayout>

逻辑代码

需要实现每隔1秒绘制一次界面,且得确定更新地鼠的位置(这里我用的handler来发送循环消息实现的)

ArrayList<TextView>texts;//用来存放九个TextView
Handler handler = new Handler(new Callback() {
 @Override
 public boolean handleMessage(Message msg) {
  number = (int) (Math.random() * 8);
  System.out.println(number);
  for (int i = 0; i < arrays.length; i++) {
  if (i==number) {
   texts.get(i).setText("地鼠");
  }else {
   texts.get(i).setText("");
  }
  }
  handler.sendEmptyMessageDelayed(0, 500);
  return false;
 }
 });

这里单独写一个TextView的点击事件(一共九个),这里需要注意的是,我给每个textview都赋给了一个值a,从0-8,当点击的textview值 a=(地鼠出现的位置)时,我们就可以认为打中了地鼠。

public void onClick(View v) {
 // TODO Auto-generated method stub
 switch (v.getId()) {
 case R.id.text11:
  if (number==0) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();

  handler.removeMessages(0);
  }
  break;
 }
 }

最后贴上全部代码。

package com.example.dadishu;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

 private int number;
 private TextView text11;
 private TextView text12;
 private TextView text13;
 private TextView text21;
 private TextView text22;
 private TextView text23;
 private TextView text31;
 private TextView text32;
 private TextView text33;

 private int[] arrays = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 ArrayList<TextView> texts;
 Handler handler = new Handler(new Callback() {

 @Override
 public boolean handleMessage(Message msg) {
  number = (int) (Math.random() * 8);
  System.out.println(number);
  for (int i = 0; i < arrays.length; i++) {
  if (i == number) {
   texts.get(i).setText("地鼠");
  } else {
   texts.get(i).setText("");
  }
  }
  handler.sendEmptyMessageDelayed(0, 500);
  return false;
 }
 });

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 requestWindowFeature(Window.FEATURE_NO_TITLE);
 setContentView(R.layout.activity_main);
 text11 = (TextView) findViewById(R.id.text11);
 text12 = (TextView) findViewById(R.id.text12);
 text13 = (TextView) findViewById(R.id.text13);
 text21 = (TextView) findViewById(R.id.text21);
 text22 = (TextView) findViewById(R.id.text22);
 text23 = (TextView) findViewById(R.id.text23);
 text31 = (TextView) findViewById(R.id.text31);
 text32 = (TextView) findViewById(R.id.text32);
 text33 = (TextView) findViewById(R.id.text33);

 texts = new ArrayList<TextView>();
 for (int i = 0; i < arrays.length; i++) {
  texts.add(text11);
  texts.add(text12);
  texts.add(text13);
  texts.add(text21);
  texts.add(text22);
  texts.add(text23);
  texts.add(text31);
  texts.add(text32);
  texts.add(text33);

 }
 for (TextView text : texts) {
  text.setOnClickListener(this);
 }
 }

 public void start(View v) {

 TimerTask task = new TimerTask() {
  @Override
  public void run() {
  handler.sendEmptyMessage(0);

  }
 };
 Timer timer = new Timer();
 timer.schedule(task, 500);
 }

 public void end(View v) {
 handler.removeMessages(0);
 }

 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 switch (v.getId()) {
 case R.id.text11:
  if (number == 0) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();

  handler.removeMessages(0);
  }
  break;
 case R.id.text12:
  if (number == 1) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();
  handler.removeMessages(0);
  }
  break;
 case R.id.text13:
  if (number == 2) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();
  handler.removeMessages(0);
  }
  break;
 case R.id.text21:
  if (number == 3) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();
  handler.removeMessages(0);
  }
  break;
 case R.id.text22:
  if (number == 4) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();
  handler.removeMessages(0);
  }
  break;
 case R.id.text23:
  if (number == 5) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();
  handler.removeMessages(0);
  }
  break;
 case R.id.text31:
  if (number == 6) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();
  handler.removeMessages(0);
  }
  break;
 case R.id.text32:
  if (number == 7) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();
  handler.removeMessages(0);
  }
  break;
 case R.id.text33:
  if (number == 8) {
  Toast.makeText(this, "打中地鼠了!。。。", 1).show();
  handler.removeMessages(0);
  }
  break;
 default:
  break;
 }
 }

 @Override
 protected void onDestroy() {
 // TODO Auto-generated method stub
 super.onDestroy();
 player.release();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android实现简易版打地鼠

    本文实例为大家分享了Android实现简易版打地鼠的具体代码,供大家参考,具体内容如下 目标效果: 1.activity_main.xml页面: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schema

  • Android使用Handler实现打地鼠游戏

    本文实例为大家分享了Android使用Handler实现打地鼠的具体代码,供大家参考,具体内容如下 1.实现效果 如下图所示: 2.代码实现 新建一个名为DiglettDemo的项目,activity_main.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/a

  • Android实现打地鼠小游戏

    本文实例为大家分享了Android实现打地鼠小游戏的具体代码,供大家参考,具体内容如下 实现结果 代码实现 playmouse.java package com.example.playmouse; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; impor

  • android实现打地鼠游戏

    今天上课老师用Java实现了打地鼠游戏的界面和具体逻辑,那么我也尝试使用Android语言实现其功能. 首先是打地鼠游戏的玩法 1.每隔1秒或者0.5秒地鼠会出现在九宫格中的任一位置 2.点击界面,如果地鼠出现的位置与点击位置相同,则认为打中地鼠.否则游戏继续. 3.打中地鼠后,游戏立即停止. 先上两张效果图 布局实现 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to

  • android利用handler实现打地鼠游戏

    本文实例为大家分享了android利用handler实现打地鼠游戏的具体代码,供大家参考,具体内容如下 xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

  • Android实现完整游戏循环的方法

    本文实例讲述了Android实现完整游戏循环的方法.分享给大家供大家参考.具体如下: 1. DroidzActivity.java: package net.obviam.droidz; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Window; import android.view.WindowManager; public class

  • 基于Android实现数独游戏

    本文实例为大家分享了Android实现数独游戏的具体代码,供大家参考,具体内容如下 1.在src中有4个Java类: 其中代码分别是: Game.java: package com.example.test1; import android.R.integer; public class Game { public final String str="360000000004230800000004200" +"070460003820000014500013020"

  • 基于vue实现简易打地鼠游戏

    本文实例为大家分享了vue实现简易打地鼠游戏的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>打地鼠简易版</title> <script src="js/vue.js"></script> <style type="text/css"&g

  • C++实现打地鼠游戏设计

    本文实例为大家分享了C++实现打地鼠游戏的具体代码,供大家参考,具体内容如下 代码: #include <afxwin.h> class CMyWnd :public CFrameWnd { private: CDC *m_pmdc; CBitmap *m_pbitmap[5]; CRect myRect[6]; CString picPath[5]; int hit; BOOL m_state[6]; int counter; int num; int hammer_x; int hamme

  • QT实现简单打地鼠游戏

    本文实例为大家分享了QT实现简单打地鼠游戏的具体代码,供大家参考,具体内容如下 开发工具:VS2017,qt5.9.8 开发语言:c++ 实现功能: 有若干地鼠洞,每次出现一只地鼠,当击中地鼠后,分数加1,地鼠更换位置.当分数大于20时,游戏结束. 实现思路: 1.先初始化一个页面,放一只地鼠和若干个地鼠洞,为地鼠和地鼠洞添加槽函数.  2.当点击时就执行相应函数.判断是否击中,从而对其进行加分或者减分.  3.当击中地鼠后,应该刷新页面,让地鼠换个位置出现.  4.重复2.3,直到分数到达一定

  • JavaScript实现打地鼠游戏

    本文实例为大家分享了JavaScript实现打地鼠游戏的具体代码,供大家参考,具体内容如下 游戏说明: 点击"开始游戏"按钮,在图中随机产生老鼠,老鼠消失前单击老鼠进行击打,打中一次即可获得100的积分,没有打中老鼠,扣取100积分 css模块 <style> #div0{ text-align: center; width: 1360px; height: 600px; margin: 60px auto; background-image: url("imag

  • JavaScript实现简单打地鼠游戏

    本文实例为大家分享了JavaScript实现打地鼠游戏的具体代码,供大家参考,具体内容如下 效果如下: html代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/index.js"></script> <link rel="s

随机推荐