名将擂台:刷新方式修改
This commit is contained in:
@@ -139,8 +139,8 @@ function randOppRankNumbers(myRank: number) {
|
||||
let dicLadderMatch = getDicLadderMatchByMyRank(myRank);
|
||||
if(!dicLadderMatch) return new Array(5).fill(3001);
|
||||
|
||||
let beforeRanks = randomRank(true, myRank, dicLadderMatch.rangeBeforeMax, dicLadderMatch.rangeBeforeNum, dicLadderMatch.gap.min, dicLadderMatch.gap.max);
|
||||
let afterRanks = randomRank(false, myRank, dicLadderMatch.rangeAfterMax, dicLadderMatch.rangeAfterNum, dicLadderMatch.gap.min, dicLadderMatch.gap.max);
|
||||
let beforeRanks = randomRank(true, myRank, dicLadderMatch.rangeBeforeMax, dicLadderMatch.rangeBeforeNum);
|
||||
let afterRanks = randomRank(false, myRank, dicLadderMatch.rangeAfterMax, dicLadderMatch.rangeAfterNum);
|
||||
|
||||
let topTen = getNumberArr(1, 10);
|
||||
let ranks = [...topTen, ...beforeRanks, ...afterRanks];
|
||||
@@ -160,32 +160,20 @@ export function getNumberArr(from: number, to: number) {
|
||||
return arr;
|
||||
}
|
||||
|
||||
function randomRank(isBefore: boolean, myRank: number, range: number, len: number, gapMin: number, gapMax: number) {
|
||||
if(gapMin > range) gapMin = range;
|
||||
if(gapMax < range) gapMax = range;
|
||||
let arr: number[] = [], result = myRank;
|
||||
while(arr.length < len) {
|
||||
let min = isBefore? result - gapMax: result + gapMin;
|
||||
let max = isBefore? result - gapMin: result + gapMax;
|
||||
let num = getRandValueByMinMax(min, max, 0); // [min, max)
|
||||
if(isOver(isBefore, myRank, range, num)) break;
|
||||
result = num;
|
||||
arr.push(result);
|
||||
function randomRank(isBefore: boolean, myRank: number, range: number, len: number) {
|
||||
if(range == 0 || len == 0) return [];
|
||||
let arr: number[] = [];
|
||||
let n = Math.floor(range / len);
|
||||
for(let i = 0; i < len; i++) {
|
||||
let rand = getRandValueByMinMax(n * i + 1, n * (i + 1) + 1, 0); // 因为这个的范围是[min, max),而想要的是 (n * i, n * (i - 1)]
|
||||
if(rand) {
|
||||
let ratio = isBefore? -1: 1;
|
||||
arr.push(myRank + ratio * rand);
|
||||
}
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
// 超出匹配范围
|
||||
function isOver(isBefore: boolean, myRank: number, range: number, result: number) {
|
||||
if(isBefore) {
|
||||
// console.log('before', result, myRank, range, myRank - range, result < myRank - range)
|
||||
return result < myRank - range;
|
||||
} else {
|
||||
// console.log('after', result, myRank, range, myRank + range, result > myRank + range)
|
||||
return result > myRank + range;
|
||||
}
|
||||
}
|
||||
|
||||
export function checkRank(myRank: number, targetRank: number) {
|
||||
let dicLadderMatch = getDicLadderMatchByMyRank(myRank);
|
||||
if(!dicLadderMatch) {
|
||||
|
||||
Reference in New Issue
Block a user