添加主动获取奇遇事件,奇遇添加答题逻辑

This commit is contained in:
luying
2020-10-15 18:31:36 +08:00
parent 764de8669a
commit 85940779d2
5 changed files with 1102 additions and 27 deletions

View File

@@ -1,9 +1,9 @@
import { Application, BackendSession } from 'pinus';
import { getGamedata } from '../../../util/gamedata';
import { EventRecordModel } from '../../../db/EventRecord';
import EventRecord, { EventRecordModel } from '../../../db/EventRecord';
import { RoleModel } from '../../../db/Role';
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE } from '../../../consts/consts';
import { checkEvent } from '../../../services/eventSercive';
import { EVENT_STATUS, EVENT_RECORD_STATUS } from '../../../consts/consts';
import { checkEvent, getEventTime, refreshEvent, checkEventStatus, getEventSuccessStatus } from '../../../services/eventSercive';
import { handleFixedReward } from '../../../services/rewardService';
export default function(app: Application) {
@@ -14,9 +14,38 @@ export class EventBattleHandler {
constructor(private app: Application) {
}
// 主动获取奇遇事件
async getEvents(msg: { }, session: BackendSession) {
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let eventStatus = session.get('eventStatus');
let now = new Date();
let t = getEventTime(now);
console.log(t, eventStatus)
let event: Array<EventRecord>;
if (eventStatus == EVENT_STATUS.STARTING) {
event = await EventRecordModel.getEventRecordByTime(roleId, 0);
} else if( eventStatus == EVENT_STATUS.OPEN ) {
event = await EventRecordModel.getEventRecordByTime(roleId, t);
if(event.length == 0) { // 刷新
const num = 3; // 每次刷3个
event = await refreshEvent(num, roleId, roleName, t);
}
}
return {
code: 200,
data: {
event
}
}
}
// 获取关卡列表
async receiveEventReward(msg: { eventId: number, eventCode: string, isSuccess: boolean }, session: BackendSession) {
const {eventId, eventCode, isSuccess} = msg;
async receiveEventReward(msg: { eventId: number, eventCode: string, answer: number }, session: BackendSession) {
const {eventId, eventCode, answer} = msg;
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let eventStatus = session.get('eventStatus');
@@ -25,22 +54,13 @@ export class EventBattleHandler {
if(!event) {
return { code: 202, data: '未找到记录' }
}
let { status, type, eventId: dataEventId } = event;
let flag; // 检查状态是否正确
if(type == EVENT_TYPE.BATTLE) {
if(status == EVENT_RECORD_STATUS.BATTLE_SUCCESS && isSuccess) {
flag = true;
} else if (status == EVENT_RECORD_STATUS.BATTLE_FAIL && !isSuccess) {
flag = true;
}
} else {
if(status == EVENT_RECORD_STATUS.WAITING) {
flag = true;
}
}
let { status, type, eventId: dataEventId, question } = event;
let flag = checkEventStatus(type, status);
if(!flag) {
return { code: 202, data: '状态错误' }
}
let isSuccess = getEventSuccessStatus(type, status, {id:question?question.id:0, answer});
if(dataEventId != eventId) {
return { code: 202, data: '事件id错误' }
}
@@ -66,6 +86,7 @@ export class EventBattleHandler {
return {
code: 200,
data: {
isSuccess,
eventCode: result.eventCode,
eventId: result.eventId,
status: result.status,

View File

@@ -2,8 +2,8 @@ import { Application, FrontendOrBackendSession } from 'pinus';
import { getGamedata } from '../util/gamedata';
import { EventRecordModel } from '../db/EventRecord';
import { RoleModel } from '../db/Role';
import { genCode, decodeStrSingle } from '../util/util';
import { EVENT_STATUS, EVENT_RECORD_STATUS } from '../consts/consts';
import { genCode, decodeStrSingle, decodeStr } from '../util/util';
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE } from '../consts/consts';
export async function setBattleStatus(app: Application, session: FrontendOrBackendSession, roleId: string, battleId: number , isSuccess: boolean, battleCode: string) {
@@ -78,6 +78,7 @@ export async function checkEvent(app: Application, session: FrontendOrBackendSes
} else if( eventStatus == EVENT_STATUS.OPEN ) {
let event = await EventRecordModel.getEventRecordByTime(roleId, t);
if(event.length == 0) { // 刷新
const num = 3; // 每次刷3个
event = await refreshEvent(num, roleId, roleName, t);
@@ -98,7 +99,7 @@ export async function checkEvent(app: Application, session: FrontendOrBackendSes
}
}
async function refreshEvent(num: number, roleId: string, roleName: string, t) {
export async function refreshEvent(num: number, roleId: string, roleName: string, t) {
let event = new Array();
let dicEvent = getGamedata('dic_zyz_event');
let role = await RoleModel.findByRoleId(roleId);
@@ -125,18 +126,27 @@ async function refreshEvent(num: number, roleId: string, roleName: string, t) {
let index = Math.floor(Math.random() * randomList.length);
let dic = randomList[index];
let position = randomPosition(dic.position);
let question = dic.eventType == EVENT_TYPE.QUIZ?randomQuestion(): undefined;
let eventCode = genCode(8);
let data = await EventRecordModel.saveEventRecord(eventCode, {
roleId, refTime: t, eventId: dic.eventID,
roleName, turn, type: dic.eventType, battleId: dic.warId||0, quality: dic.quality,
status: EVENT_RECORD_STATUS.WAITING
status: EVENT_RECORD_STATUS.WAITING,
position, question
});
event.push(data)
event.push(data);
randomList.splice(index, 1);
}
return event;
}
function randomPosition(positionStr: string) {
let positionArr = decodeStr('position', positionStr);
let index = Math.floor(Math.random() * positionArr.length);
return positionArr[index]
}
function pushEventMsg(app, roleId, channelName, msg ) {
console.log('***pushEventMsg', channelName)
let channelService = app.get('channelService');
@@ -151,4 +161,57 @@ function pushEventMsg(app, roleId, channelName, msg ) {
sid: tsid
}]);
}
}
export function checkEventStatus(type: number, status: number) {
let flag: boolean; // 检查状态是否正确
if(type == EVENT_TYPE.BATTLE) {
if(status == EVENT_RECORD_STATUS.BATTLE_SUCCESS) {
flag = true;
} else if (status == EVENT_RECORD_STATUS.BATTLE_FAIL) {
flag = true;
} else {
flag = false;
}
} else {
if(status == EVENT_RECORD_STATUS.WAITING) {
flag = true;
} else {
flag = false;
}
}
return flag
}
export function getEventSuccessStatus(type: number, status: number, question: {id: number, answer: number}) {
let isSuccess: boolean; // 检查状态是否正确
if(type == EVENT_TYPE.BATTLE) {
if(status == EVENT_RECORD_STATUS.BATTLE_SUCCESS) {
isSuccess = true;
} else if (status == EVENT_RECORD_STATUS.BATTLE_FAIL) {
isSuccess = false;
}
} else if(type == EVENT_TYPE.BOX) {
isSuccess = true;
} else if (type == EVENT_TYPE.QUIZ) {
isSuccess = checkQuiz(question)
}
return isSuccess
}
function randomQuestion() {
let questions = getGamedata('Questions');
let index = Math.floor(Math.random() * questions.length);
let result = questions[index];
let {id, question, a1, a2, a3, a4, correct} = result;
return {id, question, answer: [a1, a2, a3, a4], correct};
}
function checkQuiz(obj: {id: number, answer: number }) {
let {id, answer} = obj;
let questions = getGamedata('Questions');
let result = questions[id - 1];
return !!result && result.correct == answer;
}

View File

@@ -63,6 +63,12 @@ const moment = require('moment');
result = { id: parseInt(id), value: parseInt(value) };
break;
}
case 'position': {
let [x, y] = arr;
if(isNaN(x) || isNaN(y)) throw new Error('格式错误');
result = { x: parseInt(x), y: parseInt(y) };
break;
}
}
return result;
};

View File

@@ -1,6 +1,14 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop } from '@typegoose/typegoose';
class Question {
@prop({ required: true })
id: number;
@prop({ required: true })
question: string;
@prop({ required: false, type: String })
answer: [string];
}
/**
* 战斗记录接口
*/
@@ -30,10 +38,14 @@ export default class EventRecord extends BaseModel {
battleCode: string; // 关卡类型关卡code
@prop({ required: true, default: 0 })
turn: number; // 随机的轮数保证每个event_id都能随机到一次再进行下一轮
@prop({ required: true })
position: {x:number, y: number}; // 位置
@prop({ required: true })
question: Question; // 题库id
public static async getEventRecordByTime(roleId: string, refTime: number, lean=true ) {
let data = await EventRecordModel.find({roleId, refTime}).select('eventCode eventId type quality status battleId').lean(lean);
let data = await EventRecordModel.find({roleId, refTime}).select('eventCode eventId type quality status battleId position question').lean(lean);
return data;
}
@@ -48,10 +60,10 @@ export default class EventRecord extends BaseModel {
return {history: result, turn};
}
public static async saveEventRecord(eventCode: string, params: {roleId: string, refTime: number, eventId: number, roleName:string, turn?: number, type: number, quality: number, battleId?: number, status: number } , lean=true ) {
public static async saveEventRecord(eventCode: string, params: {roleId: string, refTime: number, eventId: number, roleName:string, turn?: number, type: number, quality: number, battleId?: number, status: number, position: {x:number, y:number}, question?: any } , lean=true ) {
let doc = new EventRecordModel();
let update = Object.assign(params, doc.toJSON(), {eventCode});
let data = await EventRecordModel.findOneAndUpdate({eventCode}, { $set: update }, {upsert: true, new: true}).select('eventCode eventId type quality status battleId').lean(lean);
let update = Object.assign(doc.toJSON(), params, {eventCode});
let data = await EventRecordModel.findOneAndUpdate({eventCode}, { $set: update }, {upsert: true, new: true}).select('eventCode eventId type quality status battleId position question').lean(lean);
return data;
}

View File

@@ -0,0 +1,973 @@
[
{
"id": 1,
"question": "袁紹字",
"a1": "本初",
"a2": "文台",
"a3": "玄德",
"a4": "公台",
"correct": 1
},
{
"id": 2,
"question": "圍殺十常侍時,少帝與陳留王流落在外,最先被誰收留?",
"a1": "崔毅",
"a2": "崔烈",
"a3": "段珪gui",
"a4": "閔貢",
"correct": 1
},
{
"id": 3,
"question": "袁紹的父親是?",
"a1": "袁隗",
"a2": "袁逢",
"a3": "袁術",
"a4": "袁天罡",
"correct": 2
},
{
"id": 4,
"question": "袁隗與袁紹的關系是?",
"a1": "父子",
"a2": "兄弟",
"a3": "叔侄",
"a4": "師徒",
"correct": 3
},
{
"id": 5,
"question": "董卓第一次召集百官廢帝立陳留王,誰獻反對?",
"a1": "李儒",
"a2": "盧植",
"a3": "丁原",
"a4": "曹操",
"correct": 3
},
{
"id": 6,
"question": "呂布最先為誰的義子?",
"a1": "董卓",
"a2": "王允",
"a3": "李儒",
"a4": "丁原",
"correct": 4
},
{
"id": 7,
"question": "誰替董卓勸說呂布稱為義子?",
"a1": "李肅",
"a2": "李儒",
"a3": "盧植",
"a4": "丁原",
"correct": 1
},
{
"id": 8,
"question": "李肅送了什麼勸降呂布為董卓義子?",
"a1": "赤兔馬",
"a2": "刀劍",
"a3": "美女",
"a4": "城池",
"correct": 1
},
{
"id": 9,
"question": "董卓廢少帝為:",
"a1": "陳留王",
"a2": "弘農王",
"a3": "平原王",
"correct": 2
},
{
"id": 10,
"question": "董卓廢少帝,李儒讀策完畢時,誰怒呼“吾當以頸血濺之!”?",
"a1": "盧植",
"a2": "丁原",
"a3": "曹操",
"a4": "丁管",
"correct": 4
},
{
"id": 11,
"question": "劉協字",
"a1": "伯和",
"a2": "伯牙",
"a3": "仲伯",
"a4": "伯符",
"correct": 1
},
{
"id": 12,
"question": "獻帝登基時幾歲?",
"a1": "十二歲",
"a2": "六歲",
"a3": "九歲",
"a4": "十一歲",
"correct": 3
},
{
"id": 13,
"question": "“朝堂殺賊名猶在,萬古堪稱大丈夫!”說的是誰?",
"a1": "曹操",
"a2": "伍孚",
"a3": "關羽",
"a4": "李儒",
"correct": 2
},
{
"id": 14,
"question": "曹操刺殺董卓未遂,逃至中牟縣,誰擒住他又與他一同逃走?",
"a1": "陳登",
"a2": "呂伯奢",
"a3": "陳宮",
"a4": "王允",
"correct": 3
},
{
"id": 15,
"question": "陳宮字什麼?",
"a1": "公覆",
"a2": "文台",
"a3": "文公",
"a4": "公台",
"correct": 4
},
{
"id": 16,
"question": "殺豬沽酒欲寬帶曹操陳宮卻遭殺害的是誰?",
"a1": "呂伯奢",
"a2": "伍孚",
"a3": "王允",
"a4": "丁原",
"correct": 1
},
{
"id": 17,
"question": "曹操刺殺董卓未遂,逃至陳留,得誰家資相助?",
"a1": "樂進",
"a2": "衛弘",
"a3": "陳宮",
"a4": "夏侯惇",
"correct": 2
},
{
"id": 18,
"question": "樂進字?",
"a1": "文謙",
"a2": "文公",
"a3": "文台",
"a4": "文遠",
"correct": 1
},
{
"id": 19,
"question": "樂進哪裡人?",
"a1": "陽平衛國人",
"a2": "山陽巨鹿人",
"a3": "沛國譙人",
"a4": "常山真定人",
"correct": 1
},
{
"id": 20,
"question": "李典字?",
"a1": "公台",
"a2": "曼城",
"a3": "德謀",
"a4": "元讓",
"correct": 2
},
{
"id": 21,
"question": "夏侯惇字?",
"a1": "文台",
"a2": "公台",
"a3": "元讓",
"a4": "德謀",
"correct": 3
},
{
"id": 22,
"question": "諸侯聯軍討伐董卓,誰為前鋒抵汜水關挑戰?",
"a1": "孫堅",
"a2": "袁紹",
"a3": "李儒",
"a4": "華雄",
"correct": 1
},
{
"id": 23,
"question": "華雄哪裡人?",
"a1": "關東人",
"a2": "關南人",
"a3": "關西人",
"a4": "關北人",
"correct": 3
},
{
"id": 24,
"question": "華雄身高多少?",
"a1": "六尺",
"a2": "七尺",
"a3": "八尺",
"a4": "九尺",
"correct": 4
},
{
"id": 25,
"question": "程普字什麼?",
"a1": "大榮",
"a2": "德謀",
"a3": "公覆",
"a4": "義公",
"correct": 2
},
{
"id": 26,
"question": "韓當字什麼?",
"a1": "義公",
"a2": "文公",
"a3": "公台",
"a4": "文謙",
"correct": 1
},
{
"id": 27,
"question": "黃蓋字什麼?",
"a1": "義公",
"a2": "文公",
"a3": "公覆",
"a4": "文謙",
"correct": 3
},
{
"id": 28,
"question": "祖茂字什麼?",
"a1": "文謙",
"a2": "義公",
"a3": "文公",
"a4": "大榮",
"correct": 4
},
{
"id": 29,
"question": "韓當哪裡人?",
"a1": "遼西令支人",
"a2": "零陵人",
"a3": "吳郡富春人",
"a4": "常山真定人",
"correct": 1
},
{
"id": 30,
"question": "黃蓋哪裡人?",
"a1": "遼西令支人",
"a2": "零陵人",
"a3": "吳郡富春人",
"a4": "常山真定人",
"correct": 2
},
{
"id": 31,
"question": "祖茂哪裡人?",
"a1": "遼西令支人",
"a2": "零陵人",
"a3": "吳郡富春人",
"a4": "常山真定人",
"correct": 3
},
{
"id": 32,
"question": "胡軫是誰的副將?",
"a1": "華雄",
"a2": "程普",
"a3": "孫堅",
"a4": "袁術",
"correct": 1
},
{
"id": 33,
"question": "祖茂為救誰而死?",
"a1": "袁術",
"a2": "孫堅",
"a3": "袁紹",
"a4": "華雄",
"correct": 2
},
{
"id": 34,
"question": "祖茂被誰一刀砍於馬下?",
"a1": "董卓",
"a2": "張飛",
"a3": "關羽",
"a4": "華雄",
"correct": 4
},
{
"id": 35,
"question": "祖茂用什麼辦法救了孫堅?",
"a1": "更換脫幘ze與頭盔",
"a2": "更換軍服",
"a3": "易容之術",
"a4": "躲在兵士屍體之中",
"correct": 1
},
{
"id": 36,
"question": "溫酒斬華雄,關羽是第幾個出站?",
"a1": 1,
"a2": 2,
"a3": 3,
"a4": 4,
"correct": 3
},
{
"id": 37,
"question": "俞涉是誰的手下?",
"a1": "袁術",
"a2": "袁紹",
"a3": "袁隗",
"a4": "袁逢",
"correct": 1
},
{
"id": 38,
"question": "潘鳳是誰的上將?",
"a1": "曹操",
"a2": "袁術",
"a3": "韓馥",
"a4": "孫堅",
"correct": 3
},
{
"id": 39,
"question": "袁隗被誰所殺?",
"a1": "李榷、呂布",
"a2": "李榷、郭汜",
"a3": "李肅、呂布",
"a4": "郭汜、呂布",
"correct": 2
},
{
"id": 40,
"question": "李儒勸董卓遷都哪裡?",
"a1": "洛陽",
"a2": "長安",
"a3": "滎xing陽",
"a4": "桂陽",
"correct": 2
},
{
"id": 41,
"question": "誰勸董卓遷都長安?",
"a1": "李儒",
"a2": "李肅",
"a3": "楊彪",
"a4": "呂布",
"correct": 1
},
{
"id": 42,
"question": "董卓遷都長安程中,曹操勸袁紹做什麼?",
"a1": "一同遷走",
"a2": "劫走天子",
"a3": "乘勢追擊",
"a4": "登基稱帝",
"correct": 3
},
{
"id": 43,
"question": "董卓遷都長安程中,曹操追襲險些被捉,誰保其性命?",
"a1": "曹丕",
"a2": "曹植",
"a3": "曹嵩",
"a4": "曹洪",
"correct": 4
},
{
"id": 44,
"question": "曹操與曹洪的關系?",
"a1": "兄弟",
"a2": "叔侄",
"a3": "父子",
"a4": "師徒",
"correct": 1
},
{
"id": 45,
"question": "堅得玉璽別袁紹,紹寫書給誰教路上截而奪之?",
"a1": "劉禪",
"a2": "劉備",
"a3": "劉表",
"a4": "劉焉",
"correct": 3
},
{
"id": 46,
"question": "劉表字",
"a1": "公覆",
"a2": "景升",
"a3": "大榮",
"a4": "文謙",
"correct": 2
},
{
"id": 47,
"question": "劉表是哪裡人?",
"a1": "山陽高平人",
"a2": "山陽巨鹿人",
"a3": "吳郡富春人",
"a4": "常山真定人",
"correct": 1
},
{
"id": 48,
"question": "喬瑁被誰殺死的?",
"a1": "劉表",
"a2": "劉岱",
"a3": "陳翔",
"a4": "公孫瓚",
"correct": 2
},
{
"id": 49,
"question": "喬瑁為何被殺死?",
"a1": "謀害主公",
"a2": "諫言不納",
"a3": "借糧不予",
"a4": "以下犯上",
"correct": 3
},
{
"id": 50,
"question": "蒯良蒯越是哪裡人?",
"a1": "延平人",
"a2": "襄陽人",
"a3": "汝南人",
"a4": "南陽人",
"correct": 1
},
{
"id": 51,
"question": "蔡瑁是哪裡人?",
"a1": "延平人",
"a2": "襄陽人",
"a3": "汝南人",
"a4": "南陽人",
"correct": 2
},
{
"id": 52,
"question": "“玉璽得來無用處,反因此寶動刀兵”說的是誰與誰交戰?",
"a1": "袁紹與董卓",
"a2": "劉表與曹操",
"a3": "曹操與孫堅",
"a4": "劉表與孫堅",
"correct": 4
},
{
"id": 53,
"question": "袁紹使計奪取冀州,當時誰是冀州牧?",
"a1": "韓馥",
"a2": "公孫瓚",
"a3": "耿武",
"a4": "袁術",
"correct": 1
},
{
"id": 54,
"question": "韓馥欲請袁紹同治冀州事,誰諫言不可?",
"a1": "荀諶",
"a2": "田豐",
"a3": "耿武",
"a4": "辛評",
"correct": 3
},
{
"id": 55,
"question": "公孫瓚和公孫越的關系是?",
"a1": "父子",
"a2": "兄弟",
"a3": "叔侄",
"a4": "朋友",
"correct": 2
},
{
"id": 56,
"question": "誰殺死了公孫越?",
"a1": "袁紹",
"a2": "劉備",
"a3": "曹操",
"a4": "袁術",
"correct": 1
},
{
"id": 57,
"question": "殺死公孫越的一彪均碼稱自己是誰的家將?",
"a1": "袁紹",
"a2": "董卓",
"a3": "曹操",
"a4": "劉備",
"correct": 2
},
{
"id": 58,
"question": "趙雲字什麼?",
"a1": "子達",
"a2": "子仲",
"a3": "子伯",
"a4": "子龍",
"correct": 4
},
{
"id": 59,
"question": "趙雲是哪裡人?",
"a1": "山陽高平人",
"a2": "遼西令支人",
"a3": "常山真定人",
"a4": "陽平衛國人",
"correct": 3
},
{
"id": 60,
"question": "公孫瓚號稱什麼?",
"a1": "白馬將軍",
"a2": "天公將軍",
"a3": "車騎將軍",
"a4": "驃騎將軍",
"correct": 1
},
{
"id": 61,
"question": "公孫瓚被袁紹部下在磐河打得狼狽時,是為誰所救?",
"a1": "趙雲",
"a2": "劉表",
"a3": "曹操",
"a4": "董卓",
"correct": 1
},
{
"id": 62,
"question": "假天子之詔,和解袁紹與公孫瓚是誰的主意",
"a1": "李肅",
"a2": "李儒",
"a3": "袁術",
"a4": "曹操",
"correct": 2
},
{
"id": 63,
"question": "袁術與袁紹的關系不睦的起因?",
"a1": "術借兵,紹不予",
"a2": "術願與紹共治冀州",
"a3": "術借馬,紹不予",
"a4": "術借錢,紹不予",
"correct": 3
},
{
"id": 64,
"question": "孫策字什麼?",
"a1": "伯仲",
"a2": "伯和",
"a3": "伯牙",
"a4": "伯符",
"correct": 4
},
{
"id": 65,
"question": "孫權字什麼?",
"a1": "仲謀",
"a2": "子仲",
"a3": "仲德",
"a4": "仲達",
"correct": 1
},
{
"id": 66,
"question": "吳夫人生了幾個兒子?",
"a1": 1,
"a2": 2,
"a3": 3,
"a4": 4,
"correct": 4
},
{
"id": 67,
"question": "孫策在吳夫人所生幾子中排行老幾?",
"a1": "一",
"a2": "二",
"a3": "三",
"a4": "四",
"correct": 1
},
{
"id": 68,
"question": "孫權在吳夫人所生幾子中排行老幾?",
"a1": "一",
"a2": "二",
"a3": "三",
"a4": "四",
"correct": 2
},
{
"id": 69,
"question": "下列哪個不是吳夫人所生親胞兄弟?",
"a1": "孫策",
"a2": "孫翊",
"a3": "孫靜",
"a4": "孫匡",
"correct": 3
},
{
"id": 70,
"question": "孫堅與孫靜的關系是?",
"a1": "叔侄",
"a2": "兄弟",
"a3": "父子",
"a4": "師徒",
"correct": 2
},
{
"id": 71,
"question": "孫靜的字?",
"a1": "公禮",
"a2": "早安",
"a3": "季佐",
"a4": "幼台",
"correct": 4
},
{
"id": 72,
"question": "孫堅欲伐劉表,表先派誰在江邊抵擋而兵敗?",
"a1": "韓當",
"a2": "蒯良",
"a3": "黃祖",
"a4": "蒯良",
"correct": 3
},
{
"id": 73,
"question": "孫堅在討伐誰期間死的?",
"a1": "劉備 ",
"a2": "袁紹",
"a3": "劉表",
"a4": "袁術",
"correct": 3
},
{
"id": 74,
"question": "孫堅死時幾歲?",
"a1": 36,
"a2": 37,
"a3": 38,
"a4": 39,
"correct": 2
},
{
"id": 75,
"question": "孫堅是怎麼死的?",
"a1": "亂箭射死",
"a2": "撞階而死",
"a3": "氣死",
"a4": "中毒身亡",
"correct": 1
},
{
"id": 76,
"question": "孫堅在哪裡死的?",
"a1": "赤壁",
"a2": "夷陵",
"a3": "峴xian山",
"a4": "五丈原",
"correct": 3
},
{
"id": 77,
"question": "哪個是吳夫人所生?",
"a1": "孫翊",
"a2": "孫朗",
"a3": "孫仁",
"a4": "孫韶",
"correct": 1
},
{
"id": 78,
"question": "“司徒妙算托紅裙,不用干戈不用兵”中紅裙是指?",
"a1": "大喬",
"a2": "小喬",
"a3": "孫尚香",
"a4": "貂蟬",
"correct": 4
},
{
"id": 79,
"question": "是誰殺死了王允?",
"a1": "呂布、董卓",
"a2": "李榷、郭汜",
"a3": "胡赤兒、牛輔",
"a4": "張濟、樊稠",
"correct": 2
},
{
"id": 80,
"question": "王允死後,誰問獻帝要封爵車騎將軍?",
"a1": "李榷",
"a2": "郭汜",
"a3": "張濟",
"a4": "樊稠",
"correct": 1
},
{
"id": 81,
"question": "馬騰與馬超的關系是什麼?",
"a1": "兄弟",
"a2": "叔侄",
"a3": "父子",
"a4": "師徒",
"correct": 3
},
{
"id": 82,
"question": "“面如冠玉,眼若流星,虎體猿臂,彪腹狼腰”說的是誰?",
"a1": "馬騰",
"a2": "馬超",
"a3": "張飛",
"a4": "關羽",
"correct": 2
},
{
"id": 83,
"question": "馬超字什麼?",
"a1": "孟起",
"a2": "孟德",
"a3": "玄德",
"a4": "翼德",
"correct": 1
},
{
"id": 84,
"question": "樊稠被誰所殺?",
"a1": "郭汜",
"a2": "張濟",
"a3": "李別",
"a4": "李榷",
"correct": 4
},
{
"id": 85,
"question": "荀彧字什麼?",
"a1": "文台",
"a2": "文若",
"a3": "公台",
"a4": "文謙",
"correct": 2
},
{
"id": 86,
"question": "荀攸字什麼?",
"a1": "公台",
"a2": "公達",
"a3": "仲謀",
"a4": "仲德",
"correct": 2
},
{
"id": 87,
"question": "程昱字什麼?",
"a1": "玄德",
"a2": "孟德",
"a3": "仲謀",
"a4": "仲德",
"correct": 4
},
{
"id": 88,
"question": "荀彧和荀攸是什麼關系?",
"a1": "兄弟",
"a2": "父子",
"a3": "叔侄",
"a4": "師徒",
"correct": 3
},
{
"id": 89,
"question": "荀彧投奔曹操之前是誰舊部?",
"a1": "袁紹",
"a2": "袁術",
"a3": "孫堅",
"a4": "劉表",
"correct": 1
},
{
"id": 90,
"question": "郭嘉是誰舉薦給曹操的?",
"a1": "程昱",
"a2": "荀彧",
"a3": "荀攸",
"a4": "荀緄gun",
"correct": 1
},
{
"id": 91,
"question": "郭嘉舉薦了誰給曹操?",
"a1": "劉曄",
"a2": "滿寵",
"a3": "呂虔",
"a4": "於禁",
"correct": 1
},
{
"id": 92,
"question": "劉曄字?",
"a1": "子仲",
"a2": "子陽",
"a3": "子達",
"a4": "子龍",
"correct": 2
},
{
"id": 93,
"question": "滿寵字什麼?",
"a1": "伯符",
"a2": "伯和",
"a3": "伯牙",
"a4": "伯寧",
"correct": 4
},
{
"id": 94,
"question": "呂虔字什麼?",
"a1": "子恪",
"a2": "子龍",
"a3": "子陽",
"a4": "子達",
"correct": 1
},
{
"id": 95,
"question": "毛玠字什麼?",
"a1": "孟德",
"a2": "孝先",
"a3": "奉孝",
"a4": "奉先",
"correct": 2
},
{
"id": 96,
"question": "於禁字什麼?",
"a1": "文台",
"a2": "文若",
"a3": "文謙",
"a4": "文則",
"correct": 4
},
{
"id": 97,
"question": "典韋哪裡人?",
"a1": "陳留人",
"a2": "山陽巨鹿人",
"a3": "山陽昌邑人",
"a4": "關西人",
"correct": 1
},
{
"id": 98,
"question": "典韋所使兵器兩枝鐵戟有多重?",
"a1": "七十斤",
"a2": "八十斤",
"a3": "九十斤",
"a4": "一百斤",
"correct": 2
},
{
"id": 99,
"question": "誰殺死了曹操的父親曹嵩?",
"a1": "陶謙",
"a2": "呂伯奢",
"a3": "張闓kai",
"a4": "應劭",
"correct": 3
},
{
"id": 100,
"question": "陶謙字什麼?",
"a1": "公台",
"a2": "恭祖",
"a3": "公禮",
"a4": "恭敬",
"correct": 2
},
{
"id": 101,
"question": "糜竺字什麼?",
"a1": "子仲",
"a2": "子陽",
"a3": "子達",
"a4": "子龍",
"correct": 1
},
{
"id": 102,
"question": "陳登字什麼?",
"a1": "子龍",
"a2": "元龍",
"a3": "子義",
"a4": "伯符",
"correct": 2
},
{
"id": 103,
"question": "孔融字什麼?",
"a1": "文若",
"a2": "文謙",
"a3": "文舉",
"a4": "文則",
"correct": 3
},
{
"id": 104,
"question": "曹操欲屠徐州,誰給陶謙獻計向孔融求救?",
"a1": "陳登",
"a2": "糜竺",
"a3": "張闓kai",
"a4": "李膺ying",
"correct": 2
},
{
"id": 105,
"question": "“座上客常滿,樽中酒不空”說的是誰?",
"a1": "陶謙",
"a2": "劉備",
"a3": "曹操",
"a4": "孔融",
"correct": 4
},
{
"id": 106,
"question": "太史慈字什麼?",
"a1": "子恪",
"a2": "子龍",
"a3": "子義",
"a4": "子達",
"correct": 3
},
{
"id": 107,
"question": "北海被圍,孔融派誰向劉備求救?",
"a1": "太史慈",
"a2": "糜竺",
"a3": "管亥",
"a4": "陳登",
"correct": 1
},
{
"id": 108,
"question": "管亥被誰殺死?",
"a1": "劉備",
"a2": "關羽",
"a3": "張飛",
"a4": "趙雲",
"correct": 2
}
]