掷骰子,RT
比较基础的图片交互qwq,因为没提前看老师的demo所以自己直接糊了一个: 利用ImageView放置骰子的图片,当用户在EditText输入(1…6)的数字后,点击确认按钮后先random一个当做机器猜的数,再次random一个当做骰子实际的结果。根据实际的结果改变图片,根据谁猜得到距离实际结果近判断输赢,怪简陋的(
package com.example.testapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.*
import java.lang.Math.abs
class MainActivity : AppCompatActivity() {
//全局变量(并不
lateinit var diceImage : ImageView
lateinit var guassNum : EditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
diceImage = findViewById(R.id.diceImage)
guassNum = findViewById(R.id.guassNum)
//确认按钮和游戏的显示信息
val submitBtn = findViewById<Button>(R.id.submitBtn)
val gameInfo = findViewById<TextView>(R.id.gameInfo)
submitBtn.setOnClickListener {
if(guassNum.text.isBlank()) {
//空输入时弹窗提示
Toast.makeText(this,"请输入猜的数字",Toast.LENGTH_SHORT).show()
}
else {
//利用EditText限制用户输入只能为数字
var guessNumber = guassNum.text.toString().toInt()
//皮?
if(guessNumber == 0 || guessNumber > 6)
Toast.makeText(this,"我家的骰子只有1-6",Toast.LENGTH_SHORT).show()
else {
var machineGuess = (1..6).random()
var result = rollDice()
gameInfo.text = "您猜的数字: ${guessNumber},机器猜的数字:${machineGuess}"
//根据两边猜的数 哪边距离实际产生的数近就判断谁赢
if(abs(result - guessNumber) < abs(result - machineGuess))
Toast.makeText(this,"你赢了",Toast.LENGTH_SHORT).show()
else if(abs(result - guessNumber) > abs(result - machineGuess))
Toast.makeText(this,"你输了",Toast.LENGTH_SHORT).show()
else Toast.makeText(this,"平局",Toast.LENGTH_SHORT).show()
}
}
}
}
fun rollDice() : Int {
//掷骰子 并且返回掷骰子的结果
var randomInt = (1..6).random()
when(randomInt) {
1 -> diceImage.setImageResource(R.drawable.one)
2 -> diceImage.setImageResource(R.drawable.two)
3 -> diceImage.setImageResource(R.drawable.three)
4 -> diceImage.setImageResource(R.drawable.four)
5 -> diceImage.setImageResource(R.drawable.five)
6 -> diceImage.setImageResource(R.drawable.six)
}
return randomInt
}
}