Commit cba2428d authored by 李维's avatar 李维

添加纵横字谜游戏历史记录展示

parent 15844363
...@@ -761,7 +761,7 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -761,7 +761,7 @@ export default class SceneComponent extends MyCocosSceneComponent {
validater = this.setTextInput(configItem, this.data.hotZoneItemArr[configItem.linkHotZoneIndex], isDebug); validater = this.setTextInput(configItem, this.data.hotZoneItemArr[configItem.linkHotZoneIndex], isDebug);
this.scoreValidater.push(validater); this.scoreValidater.push(validater);
break; break;
// 纵横字谜游戏 // 纵横字谜游戏 [做题 - 显示]
case CROSSWORD_PUZZLE: case CROSSWORD_PUZZLE:
validater = this.setCrosswordPuzzleInput(configItem, isDebug); validater = this.setCrosswordPuzzleInput(configItem, isDebug);
this.scoreValidater.push(validater); this.scoreValidater.push(validater);
...@@ -859,6 +859,10 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -859,6 +859,10 @@ export default class SceneComponent extends MyCocosSceneComponent {
case TEXTINPUT: case TEXTINPUT:
this.showTextInput(configItem, resultData); this.showTextInput(configItem, resultData);
break; break;
// 纵横字谜游戏
case CROSSWORD_PUZZLE:
this.showCrosswordPuzzleInput(configItem, resultData);
break;
} }
}) })
...@@ -1283,6 +1287,94 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -1283,6 +1287,94 @@ export default class SceneComponent extends MyCocosSceneComponent {
} }
} }
// 纵横字谜 - 历史记录
showCrosswordPuzzleInput(configItem, resultData) {
const debugMode = false;
const lineLetters = [];
const allCrosswordData = [];
// 该题型需要配置一个显示正确错误符号的热区
const resultIconShowData = this.data.hotZoneItemArr[configItem.linkResultShowHotZoneIndex];
const resultIconRect = this.newRectNode(resultIconShowData, layer_2, debugMode);
// 初始化回显区域 - 可不配置
let endShowNode = null;
let endShowText = null
if(configItem.linkHotZoneShowIndex != null && !isNaN(Number(configItem.linkHotZoneShowIndex)) && Number(configItem.linkHotZoneShowIndex) >= 0) {
const endShowHotZoneData = this.data.hotZoneItemArr[configItem.linkHotZoneShowIndex];
endShowNode = this.newRectNode(endShowHotZoneData, layer_4, debugMode);
endShowText = this.newTextNode("");
endShowText.x = endShowNode.width / 2;
endShowText.y = endShowNode.height / 2;
endShowNode.addChild(endShowText);
}
configItem.contentList.forEach((option, index) => {
if(allCrosswordData[option.selectHotZoneIndex + ""] == undefined) {
allCrosswordData[option.selectHotZoneIndex + ""] = {
inited: false,
rect: null,
border: null,
currentLetter: "",
correctLetter: "",
}
}
const letterData = allCrosswordData[option.selectHotZoneIndex + ""];
lineLetters.push(letterData);
// 如果数据没有被初始化过 则初始化各种实例
if(!letterData.inited) {
letterData.inited = true;
// 存储正确的字符 用于提交时比对
letterData.correctLetter = option.letter;
const hotZoneData = this.data.hotZoneItemArr[option.selectHotZoneIndex];
letterData.rect = this.newRectNode(hotZoneData, layer_4, debugMode);
letterData.decorativeFrame = this.newDecorativeFrame(hotZoneData, layer_1, "#FFFFFF", "#6dbef6", debugMode);
letterData.textNode = this.newTextNode("");
letterData.textNode.x = letterData.rect.width / 2;
letterData.textNode.y = letterData.rect.height / 2;
letterData.rect.addChild(letterData.textNode);
letterData.decorativeFrame.active = false;
}
})
let currentWord = "";
const inputText = resultData[0].inputWord;
if(inputText) {
// 把用户输入的内容填入格子
lineLetters.forEach((letter, index) => {
letter.currentLetter = inputText.charAt(index);
letter.decorativeFrame.active = true;
letter.textNode.getComponent(cc.Label).string = letter.currentLetter == "^" ? "" : letter.currentLetter;
})
} else {
// 把用户输入的内容填入格子
lineLetters.forEach((letter, index) => {
letter.currentLetter = "";
letter.decorativeFrame.active = false;
letter.textNode.getComponent(cc.Label).string = "";
})
}
// 如果设置了回显区域,设置回显字符
if(endShowText != null) {
endShowText.getComponent(cc.Label).string = inputText.replace(/\^/g, " ");
}
// 对错号
const errIcon = getSprNode("icon_answer_wrong");
const rightIcon = getSprNode("icon_answer_right");
// 图标太大 缩小一半
errIcon.scale = rightIcon.scale = 0.5;
// 显示在热区的中间
errIcon.x = rightIcon.x = resultIconRect.width / 2;
errIcon.y = rightIcon.y = resultIconRect.height / 2;
if(resultData[0].right) {
resultIconRect.addChild(rightIcon);
} else {
resultIconRect.addChild(errIcon);
}
}
// 初始化分数牌 // 初始化分数牌
subScorePanels = []; subScorePanels = [];
totalScorePanel = null; totalScorePanel = null;
...@@ -3119,7 +3211,7 @@ export default class SceneComponent extends MyCocosSceneComponent { ...@@ -3119,7 +3211,7 @@ export default class SceneComponent extends MyCocosSceneComponent {
result.detail.inputWord = ""; result.detail.inputWord = "";
lineLetters.forEach((letter, index) => { lineLetters.forEach((letter, index) => {
result.detail.correctWord += letter.correctLetter; result.detail.correctWord += letter.correctLetter;
result.detail.inputWord += letter.currentLetter; result.detail.inputWord += letter.currentLetter ? letter.currentLetter : "^";
if(letter.currentLetter != letter.correctLetter) { if(letter.currentLetter != letter.correctLetter) {
result.allRight = false; result.allRight = false;
result.detail.right = false; result.detail.right = false;
......
This diff is collapsed.
This diff is collapsed.
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