安卓开发学习日记第四天_会爬就会跑_莫韵乐的欢乐笔记

安卓开发学习日记第四天_会爬就会跑

前情提要

安卓开发学习日记第一天Android Studio3.6安装
安卓开发学习日记第二天_破坏陷阱卡之sync的坑
安卓开发学习日记第三天_新手怪button

经历了之前的学习,我们从出生到眨眼睛,然后会爬了

今天就开始跑吧!

在这里插入图片描述
这个小游戏其实就是我们小时候经常玩的关灯游戏
在这里插入图片描述

首先我们明确一下项目所需的文件

主活动:MainActivity.class

主布局:activity_main.xml

首先我们从主布局开始

第一步,将屏幕分割成九宫格

放置垂直指导线,并拖至33%处(没有33.3,强迫症表示很难受)
在这里插入图片描述
同理,放下水平指导线
在这里插入图片描述
最后我们要得到一个九宫格
在这里插入图片描述

第二步,放置按钮

把按钮放置到屏幕里面,然后添加约束
在这里插入图片描述
用按钮填充格子在这里插入图片描述
如此类推,最后九宫格如下
在这里插入图片描述
activity_main的代码如下

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.33" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.66" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.33" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.66" />

    <Button
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/guideline3"
        app:layout_constraintEnd_toStartOf="@+id/guideline"
        app:layout_constraintHorizontal_bias="0.625"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.474" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/guideline3"
        app:layout_constraintEnd_toStartOf="@+id/guideline2"
        app:layout_constraintHorizontal_bias="0.666"
        app:layout_constraintStart_toStartOf="@+id/guideline"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button3"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/guideline3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@+id/guideline2"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button4"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/guideline4"
        app:layout_constraintEnd_toStartOf="@+id/guideline"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline3" />

    <Button
        android:id="@+id/button5"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/guideline4"
        app:layout_constraintEnd_toStartOf="@+id/guideline2"
        app:layout_constraintStart_toStartOf="@+id/guideline"
        app:layout_constraintTop_toTopOf="@+id/guideline3" />

    <Button
        android:id="@+id/button6"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/guideline4"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@+id/guideline2"
        app:layout_constraintTop_toTopOf="@+id/guideline3" />

    <Button
        android:id="@+id/button7"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/guideline"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline4" />

    <Button
        android:id="@+id/button8"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/guideline2"
        app:layout_constraintStart_toStartOf="@+id/guideline"
        app:layout_constraintTop_toTopOf="@+id/guideline4" />

    <Button
        android:id="@+id/button9"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@+id/guideline2"
        app:layout_constraintTop_toTopOf="@+id/guideline4" />
</androidx.constraintlayout.widget.ConstraintLayout>

接着就是实现这个小游戏逻辑的地方了

第一步:声明变量
	//声明一个对象数组类型是Button,名字是button
	public Button[] button = new Button[10];
	//按钮的标签,用于判断按钮是否可见,用布尔数组表示
    private boolean[] flag = {true,true,true,true,true,true,true,true,true,true};
    //用于存放布局中按钮的ID,我们可以看出R.id.XX的类型是整数
    private int[] buttonID ={0,R.id.button1,R.id.button2,R.id.button3,R.id.button4,R.id.button5,R.id.button6,R.id.button7,R.id.button8,R.id.button9};
    //用于计算你点击了多少次
    private int count = 0;
第二步:实例化对象数组

将刚刚声明的Button对象实例化

	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //利用循环简化赋值过程
        for(int i=1; i<=9; i++){
            button[i] = findViewById(buttonID[i]);
        }
        //需要传入接口实现类的实例。
        //此时接口实现类的实例为MainActivity
        for(int i=1; i<=9; i++) {
            button[i].setOnClickListener(this);
        }
    }
第三步:写出转换按钮状态的函数
 	public void convertBoolean(int a, int b, int c, int d, int e){
        int[] flagx = {a,b,c,d,e};
        for(int i=0; i<5; i++)
            if(flagx[i]!=0) {
                flag[flagx[i]] = !flag[flagx[i]];
            }
    }
第四步:实现按钮显示和隐藏的函数,在内部检测游戏是否结束
	public void showbutton(){
        int i,tag=0;
        for(i = 1; i <= 9; i++) {
            if (flag[i]) {
            	//使按钮可见
                button[i].setVisibility(View.VISIBLE);
                tag-=1;
            } else {
            	//使按钮不可见
                button[i].setVisibility(View.INVISIBLE);
                tag+=1;
            }
        }
        count++;
        if(tag == 9){
        	//在屏幕中弹出消息
            Toast.makeText(MainActivity.this,"恭喜你赢得了游戏!\n本次游戏你一共点击了"+count+"次!",Toast.LENGTH_LONG).show();
        }
    }
第五步:设置点击事件(有两种方式可以实现点击事件,如下方式为实现监听接口)
	@Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button1:
            	convertBoolean(1,2,4,0,0);//改变对于按钮的状态标签            
                showbutton();//改变按钮的状态
                break;
            case R.id.button2:
                convertBoolean(1,2,3,5,0);//改变对于按钮的状态标签
                showbutton();//改变按钮的状态
                break;
            case R.id.button3:
                convertBoolean(2,3,6,0,0);//改变对于按钮的状态标签
                showbutton();//改变按钮的状态
                break;
            case R.id.button4:
                convertBoolean(1,4,5,7,0);//改变对于按钮的状态标签
                showbutton();//改变按钮的状态
                break;
            case R.id.button5:
                convertBoolean(2,4,5,6,8);//改变对于按钮的状态标签
                showbutton();//改变按钮的状态
                break;
            case R.id.button6:
                convertBoolean(3,5,6,9,0);//改变对于按钮的状态标签
                showbutton();//改变按钮的状态
                break;
            case R.id.button7:
                convertBoolean(4,7,8,0,0);//改变对于按钮的状态标签
                showbutton();//改变按钮的状态
                break;
            case R.id.button8:
                convertBoolean(5,7,8,9,0);//改变对于按钮的状态标签
                showbutton();//改变按钮的状态
                break;
            case R.id.button9:
                convertBoolean(6,8,9,0,0);//改变对于按钮的状态标签
                showbutton();//改变按钮的状态
                break;
            default:
        }
    }

那么这个简单小游戏就完成了

如果觉得还不错就点个赞,收藏一下,感谢您的观看

第四天日记番外篇

发布了7 篇原创文章 · 获赞 14 · 访问量 467

猜你喜欢

转载自blog.csdn.net/MO_AT_FI/article/details/105500524