private async Task HandleLocationTestingPictureClick(MemoryPictureItem memoryPictureItem) { ////如果选中的图片,超过限制,则直接返回 //if (_selectedLocationTestingPictureList.Count >= TrainingStageSetting.ClickMaxLimit || // _selectedLocationTestingPictureList.Any(i => i == memoryPictureItem) || // _selectedLocationTestingPictureList.Any(i => i.IsHighlighted)) //{ // return; //} //await SetMemoryPictureMarkedStatus(memoryPictureItem); ////添加序列 //if (memoryPictureItem.IsHighlighted) //{ // if (_selectedLocationTestingPictureList.All(i => i != memoryPictureItem)) // { // _selectedLocationTestingPictureList.Add(memoryPictureItem); // } //} //else //{ // if (_selectedLocationTestingPictureList.Any(i => i == memoryPictureItem)) // { // _selectedLocationTestingPictureList.Remove(memoryPictureItem); // } //} //YesButton.IsEnabled = memoryPictureItem.IsHighlighted; }
private void MemoryPictureList_OnPictureLocationComfirmed(object sender, LocationMemoryPictureItem item) { try { _selectedLocationTestingPictureList.Add(item); //提示结果 var resultTipText = _memorizedPictureList.Any(i => i.PictureItem == item.PictureItem && i.Location == item.Location) ? "正确" : "错误"; SetResultTip(resultTipText); if (sender is MemoryPictureListControl memoryPictureListControl && _selectedLocationTestingPictureList.Count >= memoryPictureListControl.TrainingStageSetting.ClickMaxLimit) { TestingCompleted?.Invoke(this, EventArgs.Empty); } else { var memorizedPictureList = _memorizedPictureList; var random = new Random(); MemoryPictureItem visibileRandomPictureItem = null; while (visibileRandomPictureItem == null) { var visibileRandomIndex = random.Next(memorizedPictureList.Count); var randomPictureItem = memorizedPictureList[visibileRandomIndex].PictureItem; if (_selectedLocationTestingPictureList.All(i => i.PictureItem != randomPictureItem)) { visibileRandomPictureItem = randomPictureItem; } } visibileRandomPictureItem.IsPictureVisibile = true; } }
public async Task SetMemoryPictureMarkedStatus(MemoryPictureItem item, int delayedMilliseconds = 500) { if (item.IsHighlighted) { item.IsPictureVisibile = false; await Task.Delay(TimeSpan.FromMilliseconds(delayedMilliseconds)); item.IsHighlighted = false; } else { item.IsHighlighted = true; await Task.Delay(TimeSpan.FromMilliseconds(delayedMilliseconds)); item.IsPictureVisibile = true; } }
/// <summary> /// 学习时,处理图片的点击 /// </summary> /// <param name="listBoxItem"></param> /// <param name="memoryPictureItem"></param> /// <returns></returns> private async Task HandleLearningPictureClick(ListBoxItem listBoxItem, MemoryPictureItem memoryPictureItem) { //禁用多图片翻开;同一图片,禁止再次翻开 if (_memorizedPictureList.Count >= TrainingStageSetting.ClickMaxLimit || _memorizedPictureList.Any(i => i.PictureItem == memoryPictureItem) || MemoryPictureItems.Any(i => i != memoryPictureItem && i.IsHighlighted)) { return; } var isPreviousPictureVisibile = memoryPictureItem.IsPictureVisibile; await SetMemoryPictureMarkedStatus(memoryPictureItem); //第一次翻开 if (!isPreviousPictureVisibile && memoryPictureItem.IsPictureVisibile) { _testRecordInfo.LearningClickInfos.Add(new LearningClickInfo() { ClickToVisibleTime = DateTime.Now, PictureName = Path.GetFileNameWithoutExtension(memoryPictureItem.ImageUri), Location = MemoryPictureItems.IndexOf(memoryPictureItem) }); } else { var learningClickInfo = _testRecordInfo.LearningClickInfos.First(i => i.PictureName == memoryPictureItem.PictureName); learningClickInfo.ClickToCollapsedTime = DateTime.Now; } //如果由显示改为关闭,则说明已经记忆过此图片 if (isPreviousPictureVisibile && !memoryPictureItem.IsPictureVisibile) { //添加到已记忆列表 _memorizedPictureList.Add(new MemorizedMemoryPictureItem() { PictureItem = memoryPictureItem, Location = MemoryPictureItems.IndexOf(memoryPictureItem) }); //图片记忆完成 if (_memorizedPictureList.Count >= TrainingStageSetting.ClickMaxLimit) { PictureMemorized?.Invoke(this, _memorizedPictureList); } } }
private void MemoryPictureList_OnPictureLocationComfirmed(object sender, LocationMemoryPictureItem checkedPictureItem) { try { //记录位置测试结果 var memorizedPictureList = GetLastThreeMemorizedPictures(); var memorizedMemoryPictureItem = memorizedPictureList.First(i => i.PictureItem == checkedPictureItem.PictureItem); var isRightLocation = checkedPictureItem.Location == memorizedMemoryPictureItem.Location; _currentTestRecordInfo.LocationTestingClickInfos.Add(new TestingClickInfo() { PictureName = Path.GetFileNameWithoutExtension(memorizedMemoryPictureItem.PictureItem.ImageUri), Location = checkedPictureItem.Location, IsMatchedByUserComfirmed = checkedPictureItem.IsMatchedByUserComfirmed, IsRight = isRightLocation ? checkedPictureItem.IsMatchedByUserComfirmed : !checkedPictureItem.IsMatchedByUserComfirmed }); _selectedLocationTestingPictureList.Add(checkedPictureItem); if (sender is MemoryPictureListControl memoryPictureListControl && _selectedLocationTestingPictureList.Count >= memoryPictureListControl.TrainingStageSetting.ClickMaxLimit) { ////完成一轮测试 _selectedLocationTestingPictureList.Clear(); CompleteOneRoundTest(); } else { var random = new Random(); MemoryPictureItem visibileRandomPictureItem = null; while (visibileRandomPictureItem == null) { //var visibileRandomIndex = random.Next(memorizedPictureList.Count); var randomPictureItem = memorizedPictureList[_selectedLocationTestingPictureList.Count].PictureItem; if (_selectedLocationTestingPictureList.All(i => i.PictureItem != randomPictureItem)) { visibileRandomPictureItem = randomPictureItem; } } visibileRandomPictureItem.IsPictureVisibile = true; } }
private async Task HandleSequentialTestingPictureClick(MemoryPictureItem memoryPictureItem) { //如果选中的图片,超过限制,则直接返回 if (_selectedSequentialPictureList.Count >= TrainingStageSetting.ClickMaxLimit && _selectedSequentialPictureList.Any(i => i != memoryPictureItem) && !memoryPictureItem.IsHighlighted) { return; } //设置高亮状态 memoryPictureItem.IsHighlighted = !memoryPictureItem.IsHighlighted; //添加序列 if (memoryPictureItem.IsHighlighted) { if (_selectedSequentialPictureList.All(i => i != memoryPictureItem)) { _selectedSequentialPictureList.Add(memoryPictureItem); //记录顺序点击信息 _testRecordInfo.SequentialTestingClickInfos.Add(new TestingClickInfo() { PictureName = Path.GetFileNameWithoutExtension(memoryPictureItem.ImageUri), Location = MemoryPictureItems.IndexOf(memoryPictureItem) }); } } else { if (_selectedSequentialPictureList.Any(i => i == memoryPictureItem)) { _selectedSequentialPictureList.Remove(memoryPictureItem); var testingClickInfo = _testRecordInfo.SequentialTestingClickInfos.First(i => i.PictureName == Path.GetFileNameWithoutExtension(memoryPictureItem.ImageUri)); _testRecordInfo.SequentialTestingClickInfos.Remove(testingClickInfo); } } SequentialConfirmPanel.IsEnabled = _selectedSequentialPictureList.Count >= TrainingStageSetting.ClickMaxLimit; }