Android骰子游戏开发教程:使用Java和XML构建两人对战骰子游戏
在本文里,我们会在 Android 里运用 Java 和 XML 来构建一个骰子游戏项目。骰子游戏是以两人为基础的。两名玩家要掷骰子,要是哪位玩家获得的相位值最高,那么他就会赢得游戏。在这个应用程序中会存在一个活动。这个活动会把两位玩家的姓名以及他们的骰子展示出来。结果会在顶部显示,而底部会有一个滚动按钮。下面给出了一个示例 GIF,以此来明白我们在这篇文章里将要做什么。需要注意的是,我们会运用 Java 语言来完成这个项目。

分步实施
第 1 步:创建一个新项目
要在 Android Studio 中创建新项目,需参阅如何在 Android Studio 中创建新项目或启动新项目。要注意,需选择 Java 作为编程语言。
第 2 步:在进入编码部分之前,您必须先做一些准备工作
修改colors.xml文件:XML实现
#6200EE
#3700B3
#03DAC5
#0F9D58
#FFFFFF
XML实现
这是一个特定的网址格式,其中“http://schemas.android.com/apk/res/android”表示与 Android 应用相关的资源路径。它通常用于在 Android 开发中引用各种资源,如布局文件、字符串资源、图片资源等。这个路径是 Android 系统定义的标准格式,用于在应用中定位和访问相关的资源。">
安卓系统的角度属性被设置为 90 度。 安卓系统中角度被设定为 90 度。 安卓系统的角度为 90 度。 角度在安卓系统中被设置为 90 度。 90 度被设定为安卓系统的角度。 角度属性在安卓系统中为 90 度。 安卓系统的该角度是 90 度。 90 度是安卓系统的角度。 角度在安卓系统里被设为 90 度。 安卓系统的角度被设定成 90 度。 该角度在安卓系统中为 90 度。 90 度被设定在安卓系统的角度中。 安卓系统的角度被规定为 90 度。 角度在安卓系统中被规定为 90 度。 安卓系统的角度被确定为 90 度。 角度在安卓系统中被确定成 90 度。
android 的起始颜色为“#0E5131”。
android 的结束颜色为“#0F9D58”。
android 的类型为“线性”。
XML实现
xmlns:android="http://schemas.android.com/apk/res/android"
android 的形状为矩形。
android 的 topRightRadius 属性值为 20dp 。
android 的 bottomLeftRadius 属性值为 20dp 。
android 的 bottomRightRadius 属性值为 20dp 。
android:width="2dp"/>
第 3 步:使用 activity_main.xml 文件
XML 代码的作用是构建活动的结构以及其样式部分。在活动的最顶端有一个 TextView,此 TextView 用于显示游戏结果。接着包含两个 ImageView,每个 ImageView 都带有一个 TextView,分别用于显示播放器名称和掷骰子的图像。在活动的底部,存在一个按钮,该按钮用于掷骰子。以下是 activity_main.xml 文件的代码。
XML实现
http://schemas.android.com/apk/res/android"
android 的 layout_width 属性被设置为“match_parent”。
android 的 layout_height 属性被设置为 match_parent 。
android 的背景设置为“@drawable/background”。
android:padding="20dp">
android 的 id 为“@+id/tvVar2”
android 的 layout_width 属性值为 wrap_content 。
android 的 layout_height 属性被设置为 wrap_content 。
安卓的 layout_centerHorizontal 属性被设置为 true 。
android 的 layout_marginBottom 属性值为 40dp 。
安卓系统的字体族设置为“无衬线字体-黑体”。
安卓的重力属性设置为居中。
android 的文本内容为 "GFG | Android"
android 的文本大小设置为 40dp 。
在 android 中,文本的样式是加粗的。
android 的 id 为“@+id/tvVar1”
android 的 layout_width 属性值为 match_parent 。
android 的 layout_height 属性被设置为 60dp 。
android 的 layout_below 属性的值为 @+id/tvVar2
安卓系统的字体族设置为“无衬线小写大写字体”。
android:gravity="center"
android 的文本内容为“WINNER : Player 1”
android 的 textAlignment 属性值为 center 。
文字颜色设置为“@color/white”。
android 的 textSize 属性值为 35dp 。
android:layout_width="match_parent"
android:layout_height="wrap_content"
android 的 layout_below 属性值为 @+id/tvVar1
android 的 layout_marginTop 设置为 40dp 。
安卓的方向设置为垂直。 或者 安卓的方向被设定为垂直。 或者 安卓的方向为垂直这一情况。 或者 安卓的方向是垂直的。 或者 安卓的方向处于垂直状态。 或者 安卓的方向具备垂直的属性。 或者 安卓的方向呈现出垂直的态势。 或者 安卓的方向以垂直的方式设定。 或者 安卓的方向按垂直来进行设置。 或者 安卓的方向被规定为垂直。 或者 安卓的方向被确定为垂直。 或者 安卓的方向被设定成垂直。 或者 安卓的方向被指定为垂直。 或者 安卓的方向被标注为垂直。 或者 安卓的方向被标识为垂直。 或者 安卓的方向被表明为垂直。 或者 安卓的方向被显示为垂直。 或者 安卓的方向被体现为垂直。 或者 安卓的方向被展现为垂直。 或者 安卓的方向被呈现出垂直的模样。 或者 安卓的方向被呈现出垂直的形式。 或者 安卓的方向被呈现出垂直的状态。 或者 安卓的方向被呈现出垂直的特性。 或者 安卓的方向被呈现出垂直的特质。 或者 安卓的方向被呈现出垂直的倾向。 或者 安卓的方向被呈现出垂直的趋势。
android 的 layout_width 属性值为 wrap_content
android 的 layout_height 属性值为 50dp 。
android 的 layout_gravity 属性设置为“center”,即将其布局在中心位置。
android 的 layout_marginBottom 设置为 40dp 。
安卓的方向设置为水平方向。 安卓的方向被设定为水平方向。 安卓的方向是以水平方向呈现的。 安卓的方向呈现为水平方向。 安卓的方向被规定为水平方向。 安卓的方向被设置成水平方向。 安卓的方向被确定为水平方向。 安卓的方向被指定为水平方向。 安卓的方向被安排为水平方向。 安卓的方向被调整为水平方向。 安卓的方向被设定成横向。 安卓的方向被确定为横向。 安卓的方向被指定为横向。 安卓的方向被安排为横向。 安卓的方向被调整为横向。
android 的 layout_width 属性值为 140dp 。
android 的 layout_height 属性值为 50dp 。
安卓的 layout_gravity 属性值为 center ,即布局在中心位置。
android 的 gravity 属性值为 center 。
安卓的内边距设置为“10dp”。
android 的文本内容为“Player 1”。
android 的 textAlignment 属性值为 center 。
android 的文字颜色为“#000000”。
设置文字大小为 25dp 。 其属性为 android:textSize 。 该属性的值为 25dp 。 最后以 /> 结束。
android:layout_width="140dp"
android:layout_height="50dp"
android:layout_gravity="center"
android 的 gravity 属性设置为 center 。
android:padding="10dp"
android 的文本内容为“Player 2”。
android 的 textAlignment 属性设置为“center”。
android:textColor="#000000"
android:textSize="25dp" />
android:layout_width="wrap_content"
android 的 layout_height 属性被设置为 wrap_content 。
android:layout_gravity="center"
android:orientation="horizontal">
android 的 id 为“@+id/ivVar1”
android:layout_width="140dp"
android 的 layout_height 属性被设置为 140dp 。
android:padding="10dp"
安卓系统的资源引用为“@drawable/dice6”,用于指定某个图形资源,该图形资源将在相应的界面中显示。
android 的 id 为“@+id/ivVar2”。
android:layout_width="140dp"
android:layout_height="140dp"
android:padding="10dp"
android:src="@drawable/dice6" />
android 的 id 为“@+id/btVar1”。
android:layout_width="wrap_content"
android 的布局高度设置为 65dp 。
android:layout_gravity="center"
android 的 layout_marginTop 属性值为 60dp 。
安卓的背景设置为“@drawable/btn_bg”。
android:gravity="center"
android 的内边距设置为 12dp 。
android 的文本内容为“Roll the Dice”。
android:textAlignment="center"
android 的文本颜色为白色,具体颜色代码是 #ffffff 。
将文字大小设定为 30dp 。
第 4 步:使用 MainActivity.java 文件
我们会在 Java 文件里创建一个数组,这个数组包含所有的骰子图像。接着,我们会给按钮调用 onClickListener(),并且使用 Random 函数来生成两个随机数。之后,我们要检查这两个数字,并且分别把结果显示出来。另外,我们还会从数组中设置两个图像。以下是 MainActivity.java 文件的代码。代码中添加了注释,以便更详细地理解代码。
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
引入了 Android 中的 ImageView 组件。
在 Android 开发中,使用了 TextView 这个类,它属于 android.widget 包。
导入 androidx.appcompat.app.AppCompatActivity 类;
import java.util.Random;
公共类 MainActivity 是 AppCompatActivity 的子类。
定义了一个名为 button 的静态 Button 对象。 它是一个公共的静态变量。 用于在程序中表示一个按钮。 可以通过该变量来操作和引用这个按钮。 例如在界面布局中添加该按钮等操作。 它在整个程序的生命周期内都存在。 可以在不同的方法和类中访问和使用它。
定义了一个静态的 TextView 类型的变量 textView 。
公共的静态的 ImageView 为 img1 以及 img2 。
@Override
在创建活动时进行保护操作。在创建活动时会接收到一个 Bundle 类型的参数 savedInstanceState,用于保存活动的状态信息。在 onCreate 方法内部会进行一系列与活动创建相关的初始化和设置工作。这些工作包括设置布局、初始化视图、加载数据等。通过这些操作,使活动能够在屏幕上正确显示和交互。
super 调用了 onCreate 方法并传入了 savedInstanceState 参数。
将布局文件设置为 R.layout.activity_main 。
存储骰子图像的数组
final int dice[] 包含 R.drawable.dice1、R.drawable.dice2、R.drawable.dice3
将滚动按钮与它的 id 进行关联。
通过 findViewById 方法找到 id 为 R.id.btVar1 的按钮并赋值给 button 变量。
从其 id 关联结果文本视图。
通过 findViewById 方法找到了 id 为 R.id.tvVar1 的视图,并将其赋值给了 textView。
将连接图像视图的两者进行了关联。
从它的 id 中获取的骰子图像。
通过 findViewById 方法找到 R.id.ivVar1 对应的视图,并将其赋值给 img1 。
通过 findViewById 方法找到 id 为 R.id.ivVar2 的视图,并将其赋值给 img2 。
调用点击函数。
button 被设置了一个点击事件监听器,这个监听器是一个新创建的 View.OnClickListener 实例。
@Override
视图 v 被点击时,就会调用这个公共的 onClick 方法。
生成两个随机数。
使用随机函数。
创建了一个名为 random 的 Random 对象。
随机生成一个 0 到 5 之间的整数并赋值给变量 num1 。
创建了一个名为 random1 的 Random 对象。
定义一个整数变量 num2,它的值是通过调用 random 对象的 nextInt(6)方法生成的随机整数。
较大的数字将在……中显示。 // 数字较大的将在……中予以展示。 // 那个更大的数字会在……里被显示出来。
如果 textView 获胜,否则就是平局。
如果 num1 大于 num2 ,那么 ;如果 num1 不大于 num2 ,则 。
textView 对 "WINNER : Player 1" 进行了文本设置。
如果 num2 大于 num1 ,那么 ;如果 num2 不大于 num1 ,则
textView 将文本设置为 "WINNER : Player 2" 。
} else {
textView 被设置为显示 "RESULT : Draw" ;textView 的文本被设定为 "RESULT : Draw" ;textView 的内容被设置为 "RESULT : Draw" 。
}
通过索引从数组中设置图像。
生成数字的位置
将图片 img1 的资源设置为 dice 数组中索引为 num1 的元素所对应的图片资源。
img2 把骰子数组 dice 中索引为 num2 的元素所对应的资源设置为其图像资源。
}
});
}
}
输出: