Showing
1 changed file
with
118 additions
and
0 deletions
js/generate.js
0 → 100644
| 1 | +var totalJob = [] | ||
| 2 | + | ||
| 3 | +for (i=0; i<jobs.length; i++) { | ||
| 4 | + totalJob = totalJob.concat(jobs[i]) | ||
| 5 | +} | ||
| 6 | + | ||
| 7 | +function generate (varName, varLocation, targetID) { | ||
| 8 | + if (isLimitedCheckbox.checked && isLimitedNumInput.value >= 12) { | ||
| 9 | + result = 'N'.repeat(isLimitedNumInput.value + 2) | ||
| 10 | + while (result.length > isLimitedNumInput.value) { | ||
| 11 | + result = generateResult(varName, varLocation) | ||
| 12 | + } | ||
| 13 | + } else { | ||
| 14 | + result = generateResult(varName, varLocation) | ||
| 15 | + } | ||
| 16 | + | ||
| 17 | + document.getElementById(targetID).innerHTML = result | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +function generateResult (varName, varLocation) { | ||
| 21 | + var result = '' | ||
| 22 | + | ||
| 23 | + if (Math.random() < 0.8) { /* 일반 장소 처리 */ | ||
| 24 | + var randomDetailLocation = locations[0][Math.floor(Math.random() * locations[0].length)] | ||
| 25 | + var randomDetailJob = totalJob[Math.floor(Math.random() * totalJob.length)] | ||
| 26 | + // debug: console.log(randomDetailLocation, randomDetailJob) | ||
| 27 | + | ||
| 28 | + // 특별한 문장 정의 | ||
| 29 | + if (randomDetailLocation === '시내버스') { | ||
| 30 | + if (Math.random() > 0.3) { | ||
| 31 | + randomDetailLocation = (Math.floor(Math.random() * 999)+1) + '번' + randomDetailLocation | ||
| 32 | + } | ||
| 33 | + } else if (randomDetailLocation.indexOf('학교') >=0) { | ||
| 34 | + if (Math.random() > 0.5) { | ||
| 35 | + randomDetailLocation = randomDetailLocation + (Math.floor(Math.random() * 2)+1) + '학년' + (Math.floor(Math.random() * 9)+1) + '반' | ||
| 36 | + } | ||
| 37 | + } | ||
| 38 | + if ((randomDetailLocation === '지하철' || randomDetailLocation === '지하철역') && randomDetailJob === '앞에서절두번하는' ) { | ||
| 39 | + // debug: console.log('지하철', '절두번하는') | ||
| 40 | + while (randomDetailJob === '앞에서절두번하는') { | ||
| 41 | + // debug: console.log('지하철', '절두번하는', '루프') | ||
| 42 | + randomDetailJob = totalJob[Math.floor(Math.random() * totalJob.length)] | ||
| 43 | + } | ||
| 44 | + // debug: console.log('지하철', '절두번하는', randomDetailJob) | ||
| 45 | + } | ||
| 46 | + // 특별한 문장 정의 완료 | ||
| 47 | + | ||
| 48 | + if (jobs[0].indexOf(randomDetailJob) >= 0) { | ||
| 49 | + result = generateSpecificCase(1, [varLocation, randomDetailLocation, randomDetailJob, varName]) | ||
| 50 | + } else if (jobs[1].indexOf(randomDetailJob) >= 0) { | ||
| 51 | + result = generateSpecificCase(2, [varLocation, randomDetailLocation, randomDetailJob, varName]) | ||
| 52 | + } | ||
| 53 | + } else { /* 특별한 위치 변수 정의 처리 */ | ||
| 54 | + var randomDetailLocation = locations[1][Math.floor(Math.random() * locations[1].length)] | ||
| 55 | + // 여기서 문제가 발생한다면 특별한 위치 변수를 제대로 정의하지 않은것. | ||
| 56 | + // debug: console.log('specificLocations', specificLocations[randomDetailLocation], randomDetailLocation) | ||
| 57 | + if (specificLocations[randomDetailLocation][1]) { | ||
| 58 | + result = generateSpecificCase(2, [varLocation, randomDetailLocation, specificLocations[randomDetailLocation][0], varName]) | ||
| 59 | + } else { | ||
| 60 | + result = generateSpecificCase(3, [varLocation, randomDetailLocation, specificLocations[randomDetailLocation][0], varName]) | ||
| 61 | + } | ||
| 62 | + } | ||
| 63 | + //debug: console.log(randomDetailLocation, randomDetailJob, result) | ||
| 64 | + | ||
| 65 | + return result | ||
| 66 | +} | ||
| 67 | + | ||
| 68 | +/* params = [varLocation, randomDetailLocation, randomDetailJob, varName] */ | ||
| 69 | +function generateSpecificCase (caseCode, params) { | ||
| 70 | + if (caseCode === 1) { | ||
| 71 | + var randomObject = objects[Math.floor(Math.random() * objects.length)] | ||
| 72 | + | ||
| 73 | + // 특별한 문장 정의 | ||
| 74 | + if (params[1] === '산채비빔밥먹는스님앞에서') { | ||
| 75 | + return params[1] + randomObject + '먹는' + params[3] | ||
| 76 | + } | ||
| 77 | + if (params[2] === '교제사실을들킨'){ | ||
| 78 | + return params[0] + params[1] + josa.r(randomObject, '와/과') + params[2] + params[3] | ||
| 79 | + } | ||
| 80 | + // 특별한 문장 정의 완료 | ||
| 81 | + | ||
| 82 | + return params[0] + params[1] + randomObject + params[2] + params[3] | ||
| 83 | + } else if (caseCode === 2) { | ||
| 84 | + | ||
| 85 | + // 특별한 문장 정의 | ||
| 86 | + if (params[1] === '납골당') { | ||
| 87 | + params[2] = ['유골항아리도둑', '유골항아리파괴자'][Math.floor(Math.random() * 2)] | ||
| 88 | + } | ||
| 89 | + // 특별한 문장 정의 완료 | ||
| 90 | + | ||
| 91 | + return params[0] + params[1] + params[2] + params[3] | ||
| 92 | + } else if (caseCode === 3) { | ||
| 93 | + | ||
| 94 | + // 특별한 문장 정의 | ||
| 95 | + if (params[1] === '틀니') { | ||
| 96 | + params[1] = (Math.floor(Math.random() * 11)+1) + '주' + params[1] | ||
| 97 | + } | ||
| 98 | + // 특별한 문장 정의 완료 | ||
| 99 | + | ||
| 100 | + if (params[0] === '' || Math.floor(Math.random() * 2) === 0) { | ||
| 101 | + return params[1] + params[2] + params[3] | ||
| 102 | + } else { | ||
| 103 | + if (Math.floor(Math.random() * 2) === 0) { | ||
| 104 | + return params[1] + params[2] + params[0] + '의아들' + params[3] | ||
| 105 | + } else { | ||
| 106 | + return params[1] + params[2] + params[0] + '의딸' + params[3] | ||
| 107 | + } | ||
| 108 | + } | ||
| 109 | + } else { | ||
| 110 | + return undefined | ||
| 111 | + } | ||
| 112 | +} | ||
| 113 | + | ||
| 114 | +function debug (a, b, c) { | ||
| 115 | + for (i=0; i<100; i++) { | ||
| 116 | + generate(a, b, c) | ||
| 117 | + } | ||
| 118 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment