Android-小游戏

news/2025/1/3 6:52:10/

Android:打地鼠游戏

前端界面(布局文件) :TableLayout(表格布局)+TableRow(行)+TextView(文本框)+ImageView(图片框)
java代码:Handler(消息处理)+Runnable(建子线程)+setOnClickListener(开始结束按钮监听事件)+CountDownTimer(倒计时类)
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置横屏

布局文件

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent" android:layout_height="match_parent"android:layout_marginLeft="30dp"><TableRow><TextViewandroid:id="@+id/tvCount"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="打到个数:" /><ImageViewandroid:background="#0000"android:id="@+id/img12"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:background="#0000"android:id="@+id/img13"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:background="#0000"android:id="@+id/img14"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:background="#0000"android:id="@+id/img15"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/d1"/><TextViewandroid:id="@+id/tvRemainTime"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="倒计时:" />
</TableRow><TableRow><ImageViewandroid:id="@+id/img21"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img22"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img23"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img24"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img25"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img26"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/d1"/></TableRow><TableRow><ImageViewandroid:id="@+id/img31"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img32"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img33"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img34"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img35"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img36"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/d1"/></TableRow><TableRow><ImageViewandroid:id="@+id/img41"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img42"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img43"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img44"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img45"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img46"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/d1"/></TableRow><TableRow><Buttonandroid:id="@+id/btnPlay"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="开始"/><ImageViewandroid:id="@+id/img52"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img53"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img54"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/d1"/><ImageViewandroid:id="@+id/img55"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/d1"/><Buttonandroid:id="@+id/btnFinish"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="结束"/></TableRow></TableLayout>

Java代码

package com.example.qq.myfirstgame;import android.content.pm.ActivityInfo;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;public class MainActivity extends AppCompatActivity implements View.OnClickListener {//声明组件private TextView tvCount, tvRemainTime;private Button btnPlay, btnFinish;private ImageView[] images = new ImageView[26];public int[] ids = {R.id.img12, R.id.img13, R.id.img14, R.id.img15,R.id.img21, R.id.img22, R.id.img23, R.id.img24, R.id.img25, R.id.img26,R.id.img31, R.id.img32, R.id.img33, R.id.img34, R.id.img35, R.id.img36,R.id.img41, R.id.img42, R.id.img43, R.id.img44, R.id.img45, R.id.img46,R.id.img52, R.id.img53, R.id.img54, R.id.img55};//flag判断游戏是否结束,count记录打中地鼠的个数,oldID,newID记录位置boolean flag = true;int count = 0;int oldID = 0, newID = 0;//子线程与主线程通过Handler来进行通信。子线程可以通过Handler来通知主线程进行UI更新Handler handler = new Handler() {//创建一个Handler,消息处理,在handler中捕获所需消息,实现响应@Override//设置地洞,地鼠随机出洞public void handleMessage(Message message) {images[oldID].setImageResource(R.mipmap.d1);//设置背景图片为地洞newID = (int) (Math.random() * 26);//地鼠随机出洞位置images[newID].setImageResource(R.mipmap.d3);//设置背景图片为地鼠oldID=newID;}};//创建子线程用于数秒,计时器Runnable runnable = new Runnable() {@Overridepublic void run() {while (flag) {try {Message message = Message.obtain();//当前的Handler中获取指定的Message以供再次使用,得到msg不会产生内存开销handler.sendMessage(message);//从子线程中发出消息Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.game);this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置横屏initView();//初始化页面//按钮,组件绑定监听事件btnPlay.setOnClickListener(this);btnFinish.setOnClickListener(this);for (int j = 0; j < images.length; j++) {images[j].setOnClickListener(this);}}@Overridepublic void onClick(View v) {//按钮重玩/开始的监听方法重写switch (v.getId()) {case R.id.btnPlay://若单击开始按钮就开始倒计时(新建线程)new MyCount(20 * 1000, 1000).start();Thread thread1 = new Thread(runnable);thread1.start();flag=true;break;case R.id.btnFinish://若单击重玩按钮就就开始倒计时(新建线程)images[oldID].setBackgroundResource(R.mipmap.d1);flag=false;break;default://游戏未结束时,点击到有地鼠的图片位置击中个数就+1if (images[oldID].getId() == v.getId() && flag == true) {count++;tvCount.setText("击中数:" + count);}}}//倒计时功能private class MyCount extends CountDownTimer {//继承倒计时类并重写倒计时方法public MyCount(long millisInFuture, long countDownInterval) {super(millisInFuture, countDownInterval);}@Overridepublic void onTick(long l) {//每个时间间隔会回调一次(上面设置的是1秒)long hour = l / 1000 / 3600;long minute = l / 1000 % 3600 / 60;long second = l / 1000 % 3600 % 60;tvRemainTime.setText("倒计时" + hour + ":" + minute + ":" + second);}@Overridepublic void onFinish() {//在整个计时器结束之后回调该方法,并将flag置为false,游戏结束。tvRemainTime.setText("游戏时间到了!");flag = false;images[oldID].setBackgroundResource(R.mipmap.d1);//图片背景置为地洞count=0;}}public void initView(){//初始化组件tvCount= (TextView) this.findViewById(R.id.tvCount);tvRemainTime=(TextView) this.findViewById(R.id.tvRemainTime);btnPlay=(Button)this.findViewById(R.id.btnPlay);btnFinish=(Button)this.findViewById(R.id.btnFinish);for(int i=0;i<images.length;i++){images[i]=(ImageView)this.findViewById(ids[i]);}}
}

运行效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/296413.html

相关文章

游戏类型分类

游戏的类型&#xff1a; ACT 动作游戏&#xff08;Action Game&#xff09; 玩家通过控制游戏人物&#xff0c;使用各种武器消灭敌人&#xff0c;从而过关的游戏&#xff0c;不求任何故事情节。 1. 动作 2. 平台动作 3. 动作射击 PTG格斗游戏 玩家操作各种…

laya oppo小游戏发布相关问题

1、发布失败&#xff0c;提示primordials is not defined 解释&#xff1a;Node版本过高&#xff0c;需要换成低版本&#xff08;官方建议换成8.x的版本&#xff0c;自己卸载了之前的node.js&#xff0c;重新安装一个8.x版本的就行了&#xff09; 建议卸载原来的node&#xff…

小角色游戏-RPG游戏

一. 问题描述 1.功能描述&#xff1a;几乎所有的RPG游戏&#xff08;一种源自《龙与地下城》的游戏类型&#xff09;在进入游戏时都会让用户自己来创建自己喜欢的角色。本次上机要求编写一个简化的创建游戏角色的程序。 2.游戏角色应有的属性本题目要求的游戏角色应有以下属性&…

游戏分类Game Categories

wy游学游戏分类 以下内容均为转载&#xff0c;资料全部来自网易游学 动作类&#xff08;ACT/ARPG&#xff09; 动作类游戏是强调操作对抗与博弈&#xff0c;并以动作操控达成特定目标的游戏&#xff0c;如ACT游戏及APRG游戏。 ACT游戏 动作游戏是一种广义上的游戏类型。以“动…

手机游戏游戏隐私政策

手机游戏隐私政策 更新时间&#xff1a;2021年10月26日 生效时间&#xff1a;2021年10月08日 实丰&#xff08;深圳&#xff09;网络科技有限公司是本游戏的开发商&#xff0c;已授权深圳市奇兔软件技术有限公司&#xff08;以下简称“我们”&#xff09;作为本游戏的运营商。…

手机游戏的简介和分类

其实说的简单一点&#xff0c;手机游戏就是能在手机上操作并进行的游戏。在早期的手机游戏中&#xff0c;“俄罗斯方块”与“贪吃蛇”的风光相信是不需要我在向大家介绍的了。 但是随着科技水平的进步&#xff0c;广大的手机用户早已不能满足与现状了&#xff0c;这个时候各种类…

游戏类型介绍

1.1 RPG&#xff1a;角色扮演游戏&#xff08;Role-playing game&#xff09;&#xff0c;简称为RPG。游戏类型的一种&#xff0c;宽泛的游戏类型。在游戏中&#xff0c;玩家负责扮演这个角色在一个写实或虚构世界中活动。玩家负责扮演一个或多个角色&#xff0c;并在一个结构化…

游戏...

《格斗之王2003》运行环境 Win9X/Win2000/WinXP/Win2003/ 软件星级 软件语言 简体中文  世界最大规模和最高水准的格斗大会。「KingOfFighters」卢卡尔死了&#xff0c;大蛇被封印了&#xff0c;nest也解体了。很多的谜团正在揭开。然而&#xff0c;很多时候很多幕后的东西&am…