Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 87 additions & 77 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import QuizModel from './models/quiz'
const options = {
method: 'POST',
hostname: 'question.hortor.net',
path: '/question/fight/intoRoom',
path: '/question/bat/intoRoom',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
Expand All @@ -23,12 +23,12 @@ const options = {
*/
const userForgeInfo = {
player1: {
uid: '这里填入用户1的uid',
token: '这里填入用户1的token'
uid: '填写UID',
token: '填写TOKEN'
},
player2: {
uid: '这里填入用户2的uid',
token: '这里填入用户2的token'
uid: '填写UID',
token: '填写TOKEN'
}
}

Expand All @@ -50,43 +50,37 @@ const createSignature = (params, token) => {
let roomID = -1

const intoRoom = async (player) => {
try {
let params = {
roomID,
uid: userForgeInfo[player].uid,
t: new Date().getTime()
}
let sign = createSignature(params, userForgeInfo[player].token)
params.sign = sign
console.log(params)
const res = await rp.post(
'https://question.hortor.net/question/fight/intoRoom',
{ form: params })
console.log('intoRoom', res)
roomID = JSON.parse(res).data.roomId
} catch (err) {
console.error(err.message)
}
let params = {
roomID,
uid: userForgeInfo[player].uid,
t: new Date().getTime()
}
let sign = createSignature(params, userForgeInfo[player].token)
params.sign = sign
//console.log(params)
const res = await rp.post(
'https://question.hortor.net/question/bat/intoRoom',
{ form: params })
console.log('intoRoom: '+player)
//console.log(res)
roomID = JSON.parse(res).data.roomId
}

const leaveRoom = async (player) => {
try {
let params = {
roomID,
uid: userForgeInfo[player].uid,
t: new Date().getTime()
}
let sign = createSignature(params, userForgeInfo[player].token)
params.sign = sign
console.log(params)
const res = await rp.post(
'https://question.hortor.net/question/fight/leaveRoom',
{ form: params })
console.log(res)
// roomID = JSON.parse(res).data.roomId
} catch (err) {
console.error(err.message)
}
let params = {
roomID,
uid: userForgeInfo[player].uid,
t: new Date().getTime()
}
let sign = createSignature(params, userForgeInfo[player].token)
params.sign = sign
//console.log(params)
const res = await rp.post(
'https://question.hortor.net/question/bat/leaveRoom',
{ form: params })
console.log('leaveRoom: '+player);
console.log(res)
// roomID = JSON.parse(res).data.roomId
}

const beginFight = async () => {
Expand All @@ -100,7 +94,7 @@ const beginFight = async () => {
params.sign = sign

const res = await rp.post(
'https://question.hortor.net/question/fight/beginFight',
'https://question.hortor.net/question/bat/beginFight',
{ form: params }
)
console.log('beginFight: ', res)
Expand All @@ -122,10 +116,10 @@ const findQuiz = async (num) => {
params.sign = sign

const res = await rp.post(
'https://question.hortor.net/question/fight/findQuiz',
'https://question.hortor.net/question/bat/findQuiz',
{ form: params }
)
console.log('findQuiz: ', res)
console.log('findQuiz')
return JSON.parse(res)
} catch (err) {
console.error(err.message)
Expand All @@ -145,34 +139,30 @@ const chooseAnswer = async (player, num, answer = 0) => {
params.sign = sign

const res = await rp.post(
'https://question.hortor.net/question/fight/choose',
'https://question.hortor.net/question/bat/choose',
{ form: params }
)
console.log('chooseAnswer: ', res)
console.log('chooseAnswer: '+player)
return JSON.parse(res)
} catch (err) {
console.error(err.message)
}
}

const getResults = async (player) => {
try {
let params = {
roomID,
uid: userForgeInfo[player].uid,
t: new Date().getTime()
}
let sign = createSignature(params, userForgeInfo[player].token)
params.sign = sign
let params = {
roomID,
uid: userForgeInfo[player].uid,
t: new Date().getTime()
}
let sign = createSignature(params, userForgeInfo[player].token)
params.sign = sign

const res = await rp.post(
'https://question.hortor.net/question/fight/fightResult',
{ form: params }
)
console.log('getResults')
} catch (err) {
console.error(err.message)
}
const res = await rp.post(
'https://question.hortor.net/question/bat/fightResult',
{ form: params }
)
console.log('getResults: '+player)
}

const sleep = (numberMillis) => {
Expand Down Expand Up @@ -202,16 +192,17 @@ const startAnswer = async () => {
++success
}
let result = await chooseAnswer('player1', i + 1, answer)
sleep(300)
// 玩家2是否可以不作答?
await chooseAnswer('player2', i + 1)
await chooseAnswer('player2', i + 1, answer)

let params = Object.assign(quiz.data, {answer: result.data.answer})
if (!one) {
const quizModel = new QuizModel(params)
const saved = await quizModel.save()
console.log(saved)
}
sleep(200)
sleep(300)
}
let count = await QuizModel.count()
console.log(`success: ${success} total: ${count}`)
Expand All @@ -222,24 +213,43 @@ const startAnswer = async () => {
}

const start = async () => {
// let i = 100
while (1) {
//异常流程保证完成退出操作,保护token不失效
let failed = false
//加入一个控制设置
fs.writeFileSync('./control.ini', '1')
while (fs.readFileSync('./control') == '1' || failed) {
// 1. 有可能上一次流程异常,则会无法进行下一次的阶段
// 2. 有可能initRoom超时,则需要重新initRoom
// play1创建房间
roomID = -1
await intoRoom('player1')
// play2加入房间
await intoRoom('player2')
// 开始答题
await beginFight()
// 获取题目, 进行答题
await startAnswer()
await getResults('player1')
await getResults('player2')
await leaveRoom('player1')
await leaveRoom('player2')
sleep(1000)
if(!failed){
try{
roomID = -1
await intoRoom('player1')
sleep(100)
// play2加入房间
await intoRoom('player2')
sleep(100)
}catch (err){
console.error(err.message)
continue
}
}
try{
await getResults('player1')
sleep(100)
await getResults('player2')
sleep(100)
await leaveRoom('player1')
sleep(100)
await leaveRoom('player2')
sleep(100)
failed = false
}catch (err) {
console.error(err.message)
failed = true
}
console.log('loop end.')
sleep(500)
}
}

Expand Down