Commit df660829 authored by 杨泽宇's avatar 杨泽宇

更新

parent 6c4eae35
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -32,6 +32,7 @@ public class GameSystem : MonoBehaviour
private void Update()
{
UpdateTimeText();
if (!isPauseGame)
{
currentTime -= Time.deltaTime;
......
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using System.Collections;
public class MathGame : MonoBehaviour
{
[Tooltip("问题")]
public TMP_Text questionText;
[Tooltip("答案")]
public TMP_Text answerText;
[Tooltip("倒计时文本")]
public TMP_Text countdownText;
[Tooltip("倒计时时长")]
public float countdownDuration = 10f;
[Tooltip("错误机会数量")]
public int chances = 3; // 初始错误机会数量
[Tooltip("错误机会文本")]
public TMP_Text chancesText;
private int num1;
private int num2;
private char operation;
private int correctAnswer;
private bool isAnswered = false;
private Coroutine countdownCoroutine;
void Start()
{
GenerateQuestion();
countdownCoroutine = StartCoroutine(StartCountdown());
}
/// <summary>
/// 倒计时协程
/// </summary>
/// <returns></returns>
IEnumerator StartCountdown()
{
float timer = countdownDuration;
while (timer > 0f)
{
yield return new WaitForSeconds(1f);
timer -= 1f;
countdownText.text = timer.ToString();
}
if (!isAnswered)
{
Debug.Log("时间到!");
// 处理时间到的情况,例如重新生成问题
GenerateQuestion();
ReduceChances(); // 减少错误机会
}
}
/// <summary>
/// 生成问题
/// </summary>
private void GenerateQuestion()
{
// 检查错误机会是否大于零
if (chances <= 0)
{
Debug.Log("没有机会了!");
return;
}
// 生成两个随机数(1-9)
num1 = Random.Range(1, 10);
num2 = Random.Range(1, 10);
// 随机选择一个操作符
int opIndex = Random.Range(0, 4);
switch (opIndex)
{
case 0:
operation = '+';
correctAnswer = num1 + num2;
break;
case 1:
operation = '-';
correctAnswer = num1 - num2;
break;
case 2:
operation = '*';
correctAnswer = num1 * num2;
break;
case 3:
operation = '/';
correctAnswer = num1 / num2;
break;
}
// 显示问题
questionText.text = num1 + " " + operation + " " + num2 + " = ";
answerText.text = "";
// 重置倒计时
if (countdownCoroutine != null)
{
StopCoroutine(countdownCoroutine);
countdownCoroutine = StartCoroutine(StartCountdown());
}
}
/// <summary>
/// 判断答案是否正确
/// </summary>
/// <param name="userAnswer"></param>
public void CheckAnswer()
{
if (answerText.text == correctAnswer.ToString())
{
Debug.Log("正确");
isAnswered = true;
if (countdownCoroutine != null)
{
StopCoroutine(countdownCoroutine); // 停止倒计时
}
}
else
{
Debug.Log("错误");
ReduceChances(); // 减少错误机会
}
}
/// <summary>
/// 减少错误机会数量并更新显示
/// </summary>
private void ReduceChances()
{
chances--;
UpdateChancesText();
}
/// <summary>
/// 更新错误机会数量的显示
/// </summary>
private void UpdateChancesText()
{
chancesText.text = "Chances: " + chances;
}
/// <summary>
/// 点击回答按钮
/// </summary>
/// <param name="digit"></param>
public void AddDigit(int digit)
{
answerText.text += digit;
}
/// <summary>
/// 点击清除答案按钮
/// </summary>
public void ClearAnswer()
{
answerText.text = "";
}
}
fileFormatVersion: 2
guid: b022b0de637b910419cf476823b21fb3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 68690a60723f9704e9ab39534de6dd86
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment