当前位置: 移动技术网 > 移动技术>移动开发>Android > android实现打地鼠游戏

android实现打地鼠游戏

2020年06月23日  | 移动技术网移动技术  | 我要评论

今天上课老师用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();
 }
}

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网