이찬

수정 예정

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