1. var tk = [//题库
    2. ["题目", ["正确答案", '干扰选项1', '干扰选项2'], "正确答案"],
    3. ]
    4. world.querySelectorAll(".答题机器人").forEach((e) => {
    5. e.enableInteract = true;
    6. e.interactHint = `答题机器人`;
    7. e.interactRadius = 3;
    8. e.onInteract(async ({ entity }) => {
    9. var a = await entity.player.dialog({
    10. type: "select",
    11. title: e.interactHint,
    12. content: `你好,${entity.player.name},欢迎使用本机器人。
    13. 你现在要答题吗,点击下方按钮就可以开始答题哦`,
    14. options: ['开始答题']
    15. })
    16. if (a) {
    17. entity.player.dialog({ type: "text", title: "提示", content: "开始答题" })
    18. var coins = 0;
    19. var dttk = [];
    20. var ydgtm = [];
    21. var timushu = 10;//共10道题
    22. var huodejinbi = 2;//每答对一道题获得2金币
    23. await sleep(750); entity.player.cancelDialogs()
    24. for (var i = 0; i < timushu; i++) {
    25. while (true) {
    26. var s = Math.floor(Math.random() * tk.length)
    27. if (!ydgtm.includes(s)) {//保证这次测试没有答过这题
    28. ydgtm.push(s)
    29. break
    30. }
    31. }
    32. var tiku = tk[s];
    33. var options = [];
    34. for (var c in tiku[1]) {//打乱选项
    35. var loop = true;
    36. while (loop) {
    37. var test = tiku[1][Math.floor(Math.random() * tiku[1].length)]
    38. if (!options.includes(test)) {
    39. options.push(test);
    40. loop = false;
    41. }
    42. }
    43. }
    44. var abcs = "ABCDEFGHIJKLMMOPQRSTUVWXYZ";
    45. var yldo = [];
    46. for (var c in options) {
    47. yldo.push(options[c])
    48. options[c] = abcs[c] + "、" + options[c];
    49. }
    50. var a = await entity.player.dialog({
    51. type: "select",
    52. title: `第${i + 1}题/共${timushu}题`,
    53. content: tiku[0],
    54. options,
    55. });
    56. if (a) {
    57. var dqxx = {
    58. content: tiku[0],
    59. options,
    60. opt: a.index,
    61. yes: false,
    62. yesOpt: abcs[yldo.indexOf(tiku[2])]
    63. }
    64. if (tiku[2].includes(a.value.substring(2))) {
    65. entity.coin += huodejinbi;
    66. coins++;
    67. dqxx.yes = true
    68. entity.player.dialog({ type: "text", title: "提示", content: `答对了,金币+${huodejinbi}!` });
    69. await sleep(900); entity.player.cancelDialogs();
    70. } else {
    71. entity.player.dialog({ type: "text", title: "提示", content: "答错了,继续加油!" });
    72. await sleep(900); entity.player.cancelDialogs();
    73. }
    74. dttk.push(dqxx)
    75. } else {
    76. entity.player.dialog({ type: "text", title: "提示", content: "已自动退出答题" }); return
    77. }
    78. }
    79. while (true) {
    80. var dtwc = await entity.player.dialog({
    81. type: "select",
    82. title: e.interactHint,
    83. content: `答题完成!
    84. 你答对了${coins}道题,答错了${timushu - coins}道题,\n获得了${coins * huodejinbi}金币。
    85. 你这次的答题成绩是:${coins * 10}分(等级:${['F', 'E', 'E', 'D', 'D', 'C', 'C', 'B', 'A', 'A+'][coins - 1]})`,
    86. options: ['查看详细']
    87. });
    88. if (dtwc) {
    89. for (var ck = 0; ck < dttk.length;) {
    90. var optionses = []
    91. if (ck == 0) {
    92. optionses.push("下一题")
    93. } else if (ck == dttk.length - 1) {
    94. optionses.push("上一题")
    95. } else {
    96. optionses.push("上一题")
    97. optionses.push("下一题")
    98. }
    99. optionses.push("跳转")
    100. var dqtk = dttk[ck]
    101. var ckz = await entity.player.dialog({
    102. type: "select",
    103. title: `第${ck + 1}题/共${timushu}题(${dqtk.yes ? "✔答对" : "✘答错"})`,
    104. content: `问题:${dqtk.content}
    105. 选项:\n${dqtk.options.join("\n")}
    106. 你选择了:${abcs[dqtk.opt]}
    107. 正确答案:${dqtk.yesOpt}`,
    108. options: optionses
    109. })
    110. if (ckz) {
    111. if (ckz.value == '跳转') {
    112. var options = []
    113. for (var x = 0; x < timushu; x++) {
    114. options.push(`第${x + 1}题${x == ck ? "(当前正在查看)" : `(${dttk[x].yes ? "✔答对" : "✘答错"})`}`)
    115. }
    116. var tz = await entity.player.dialog({
    117. type: "select",
    118. title: `跳转`,
    119. content: `你要跳转到第几题?`,
    120. options
    121. })
    122. if (tz) {
    123. ck = tz.index;
    124. }
    125. } else {
    126. switch (ckz.value) {
    127. case "下一题":
    128. ck++;
    129. break;
    130. case "上一题":
    131. ck--;
    132. break;
    133. }
    134. }
    135. } else {
    136. break;
    137. }
    138. }
    139. } else {
    140. return
    141. }
    142. }
    143. }
    144. })
    145. })