fork download
  1. var objects = new Array(); // associative new Array: DOMDocument.elementId -> object
  2.  
  3. function onlyDigits(s) {
  4. for (i=0; i<s.length; i++) {
  5. if (s.charCodeAt(i)<48 || s.charCodeAt(i)>57) {
  6. return false;
  7. }
  8. }
  9. return true;
  10. }
  11.  
  12. /* OBSERVER */
  13.  
  14. function Observer(notifiedObjects, id) {
  15. this.notifiedObjects = notifiedObjects;
  16. this.id = id;
  17. this.value = 0;
  18. }
  19.  
  20. Observer.prototype.notify = function() {
  21. for (i in this.notifiedObjects) {
  22. objects[this.notifiedObjects[i]].observe(this.value, this);
  23. }
  24. }
  25.  
  26. /* SUMMARIZER */
  27.  
  28. Summarizer.prototype = new Observer();
  29. Summarizer.prototype.constructor = Summarizer;
  30. Summarizer.prototype.parent = Observer.prototype;
  31.  
  32. function Summarizer(notifiedObjects, id) {
  33. this.parent.constructor.call(this, notifiedObjects, id);
  34. this.notifiers = new Array();
  35. }
  36.  
  37. Summarizer.prototype.observe = function(newValue, notifier) {
  38. if (newValue == '') newValue = 0;
  39. this.notifiers[notifier.id] = newValue;
  40. this.value = 0;
  41. for (i in this.notifiers) {
  42. this.value += parseInt(this.notifiers[i]);
  43. }
  44. this.notify();
  45. }
  46.  
  47. /* COSTCOUNTER */
  48.  
  49. CostCounter.prototype = new Observer();
  50. CostCounter.prototype.constructor = CostCounter;
  51. CostCounter.prototype.parent = Observer.prototype;
  52.  
  53. CostCounter.prototype.sqSum = function(n) {
  54. return parseInt(n*(n+1)*((2*n)+1)/6);
  55. }
  56.  
  57. CostCounter.prototype.calculate = function() {
  58. if (this.stat<this.base) {
  59. this.value = 0;
  60. }
  61. else {
  62. this.value = this.sqSum(this.stat-this.base);
  63. }
  64. }
  65.  
  66. function CostCounter(notifiedObjects, id, base, stat) {
  67. this.parent.constructor.call(this, notifiedObjects, id);
  68. this.base = base;
  69. this.stat = stat;
  70. this.calculate();
  71. this.notify();
  72. }
  73.  
  74. CostCounter.prototype.observe = function(newValue, notifier) {
  75. if (newValue=='') newValue='0';
  76. eval('this.'+notifier.type+'='+newValue+';');
  77. this.calculate();
  78. this.notify();
  79. }
  80.  
  81. /* GOALCOSTCOUNTER */
  82.  
  83. GoalCostCounter.prototype = new CostCounter();
  84. GoalCostCounter.prototype.constructor = GoalCostCounter;
  85. GoalCostCounter.prototype.parent = CostCounter.prototype;
  86.  
  87. GoalCostCounter.prototype.calculate = function() {
  88. if ((this.stat<this.base) || (this.goal<this.stat)) {
  89. this.value = 0;
  90. }
  91. else {
  92. this.value = this.sqSum(this.goal-this.base)-this.sqSum(this.stat-this.base);
  93. }
  94. }
  95.  
  96. function GoalCostCounter(notifiedObjects, id, base, stat, goal) {
  97. this.parent.parent.constructor.call(this, notifiedObjects, id);
  98. this.base = base;
  99. this.stat = stat;
  100. this.goal = goal;
  101. this.calculate();
  102. this.notify();
  103. }
  104.  
  105. /* STATINPUT */
  106.  
  107. StatInput.prototype = new Observer();
  108. StatInput.prototype.constructor = StatInput;
  109. StatInput.prototype.parent = Observer.prototype;
  110.  
  111. function StatInput(notifiedObjects, id, type) {
  112. this.parent.constructor.call(this, notifiedObjects, id);
  113. this.type = type;
  114. this.value = document.getElementById(id).value;
  115. this.isInput = true;
  116. this.notify();
  117. }
  118.  
  119. StatInput.prototype.restoreValue = function() {
  120. document.getElementById(this.id).value = this.value;
  121. }
  122.  
  123. StatInput.prototype.setValue = function(newValue) {
  124. this.value = newValue;
  125. document.getElementById(this.id).value = newValue;
  126. this.notify();
  127. }
  128.  
  129. StatInput.prototype.observe = function() {
  130. newValue = document.getElementById(this.id).value;
  131. if (!onlyDigits(newValue)) {
  132. this.restoreValue();
  133. }
  134. else if (newValue=='') {
  135. this.setValue(1);
  136. }
  137. else {
  138. value = parseInt(newValue);
  139. if (value<1) {
  140. this.setValue(1);
  141. }
  142. else if (value>999) {
  143. this.setValue(999);
  144. }
  145. else {
  146. this.setValue(value);
  147. }
  148. }
  149. }
  150.  
  151. /* SPAN */
  152.  
  153. Span.prototype = new Observer();
  154. Span.prototype.constructor = Span;
  155. Span.prototype.parent = Observer.prototype;
  156.  
  157. function Span(notifiedObjects, id) {
  158. this.parent.constructor.call(this, notifiedObjects, id);
  159. }
  160.  
  161. Span.prototype.observe = function(newValue, notifier) {
  162. this.value = parseInt(newValue);
  163. //alert (notifier.id);
  164. document.getElementById(this.id).innerHTML = newValue;
  165. this.notify();
  166. }
  167.  
  168. /* HORSES */
  169.  
  170. var horses = new Array();
  171. horses[1] = {name:"Osioł Poitou", cost:1000, defence:1, attack:1, stamina:1, level:5, premium:false};
  172. horses[2] = {name:"Kuc Dartmoor", cost:2000, defence:2, attack:2, stamina:2, level:7, premium:false};
  173. horses[3] = {name:"Welsh", cost:3000, defence:3, attack:3, stamina:3, level:8, premium:false};
  174. horses[4] = {name:"Koń fiordzki", cost:4000, defence:3, attack:4, stamina:3, level:10, premium:false};
  175. horses[5] = {name:"Koń holsztyński", cost:5000, defence:4, attack:5, stamina:3, level:15, premium:false};
  176. horses[6] = {name:"Rottaler", cost:5000, defence:5, attack:5, stamina:5, level:15, premium:true};
  177. horses[7] = {name:"Koń oldenburski", cost:10000, defence:6, attack:9, stamina:9, level:17, premium:true};
  178. horses[8] = {name:"Koń berberyjski", cost:15000, defence:8, attack:13, stamina:10, level:20, premium:false};
  179. horses[9] = {name:"Koń fryderyksborski", cost:15000, defence:9, attack:13, stamina:13, level:20, premium:true};
  180. horses[10] = {name:"Koń czystej krwi arabskiej", cost:20000, defence:10, attack:15, stamina:15, level:23, premium:false};
  181. horses[11] = {name:"Koń brabancki", cost:25000, defence:12, attack:17, stamina:17, level:25, premium:true};
  182. horses[12] = {name:"Senner", cost:30000, defence:15, attack:20, stamina:20, level:30, premium:false};
  183. horses[13] = {name:"Koń anglo-normański", cost:40000, defence:18, attack:25, stamina:25, level:33, premium:false};
  184. horses[14] = {name:"Koń Shire", cost:45000, defence:20, attack:27, stamina:27, level:37, premium:false};
  185. horses[15] = {name:"Koń pełnej krwi angielskiej", cost:50000, defence:22, attack:29, stamina:29, level:40, premium:false};
  186. horses[16] = {name:"Koń pełnej krwi perskiej", cost:60000, defence:23, attack:30, stamina:30, level:45, premium:true};
  187. horses[17] = {name:"Koń pełnej krwi arabskiej", cost:70000, defence:25, attack:32, stamina:32, level:47, premium:false};
  188. horses[18] = {name:"Koń kabardyński", cost:80000, defence:28, attack:35, stamina:35, level:50, premium:true};
  189. horses[19] = {name:"Perszeron", cost:100000, defence:30, attack:40, stamina:40, level:60, premium:false};
  190. horses[20] = {name:"Koń jutlandzki", cost:150000, defence:35, attack:50, stamina:50, level:70, premium:true};
  191. horses[21] = {name:"Koń ardeński", cost:200000, defence:40, attack:60, stamina:60, level:80, premium:false};
  192. horses[22] = {name:"Koń szwarcwaldzki", cost:300000, defence:50, attack:80, stamina:80, level:100, premium:false};
  193. horses[23] = {name:"Wierzchowiec rycerski", cost:400000, defence:53, attack:90, stamina:90, level:110, premium:true};
  194. horses[24] = {name:"Koń turniejowy", cost:520000, defence:57, attack:100, stamina:98, level:120, premium:false};
  195. horses[25] = {name:"Zgiełk bitwy", cost:640000, defence:62, attack:110, stamina:110, level:130, premium:true};
  196. horses[26] = {name:"Wierzchowiec książęcy", cost:740000, defence:66, attack:120, stamina:115, level:140, premium:false};
  197. horses[27] = {name:"Wierzchowiec bitewny", cost:880000, defence:72, attack:130, stamina:120, level:155, premium:false};
  198. horses[28] = {name:"Wierzchowiec paladyna", cost:1200000, defence:80, attack:150, stamina:140, level:178, premium:true};
  199. horses[29] = {name:"Błogosławiony koń turniejowy", cost:1500000, defence:100, attack:170, stamina:160, level:200, premium:true};
  200.  
  201. horses[30] = {name:"Świętej wojny krwi", cost:2000000, defence:130, attack:200, stamina:190, level:225, premium:true};
  202.  
  203.  
  204. horses[31] = {name:"Wyświęcony wierzchowiec książęcy -", cost:2500000, defence:160, attack:230, stamina:220, level:250, premium:true};
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: class, interface, or enum expected
 var objects = new Array(); // associative new Array: DOMDocument.elementId -> object
 ^
Main.java:3: error: class, interface, or enum expected
function onlyDigits(s) {
^
Main.java:4: error: class, interface, or enum expected
  for (i=0; i<s.length; i++) {
            ^
Main.java:4: error: class, interface, or enum expected
  for (i=0; i<s.length; i++) {
                        ^
Main.java:7: error: class, interface, or enum expected
    }
    ^
Main.java:10: error: class, interface, or enum expected
}
^
Main.java:16: error: class, interface, or enum expected
  this.id = id;
  ^
Main.java:17: error: class, interface, or enum expected
  this.value = 0;
  ^
Main.java:18: error: class, interface, or enum expected
}
^
Main.java:23: error: class, interface, or enum expected
  }
  ^
Main.java:29: error: class, interface, or enum expected
Summarizer.prototype.constructor = Summarizer;
^
Main.java:30: error: class, interface, or enum expected
Summarizer.prototype.parent = Observer.prototype;
^
Main.java:32: error: class, interface, or enum expected
function Summarizer(notifiedObjects, id) {
^
Main.java:34: error: class, interface, or enum expected
  this.notifiers = new Array();
  ^
Main.java:35: error: class, interface, or enum expected
}
^
Main.java:38: error: empty character literal
  if (newValue == '') newValue = 0;
                  ^
Main.java:38: error: unclosed character literal
  if (newValue == '') newValue = 0;
                   ^
Main.java:39: error: class, interface, or enum expected
  this.notifiers[notifier.id] = newValue;
  ^
Main.java:40: error: class, interface, or enum expected
  this.value = 0;
  ^
Main.java:41: error: class, interface, or enum expected
  for (i in this.notifiers) {
  ^
Main.java:43: error: class, interface, or enum expected
  }
  ^
Main.java:45: error: class, interface, or enum expected
}
^
Main.java:50: error: class, interface, or enum expected
CostCounter.prototype.constructor = CostCounter;
^
Main.java:51: error: class, interface, or enum expected
CostCounter.prototype.parent = Observer.prototype;
^
Main.java:53: error: class, interface, or enum expected
CostCounter.prototype.sqSum = function(n) {
^
Main.java:55: error: class, interface, or enum expected
}
^
Main.java:60: error: class, interface, or enum expected
  }
  ^
Main.java:63: error: class, interface, or enum expected
  }
  ^
Main.java:68: error: class, interface, or enum expected
  this.base = base;
  ^
Main.java:69: error: class, interface, or enum expected
  this.stat = stat;
  ^
Main.java:70: error: class, interface, or enum expected
  this.calculate();
  ^
Main.java:71: error: class, interface, or enum expected
  this.notify();
  ^
Main.java:72: error: class, interface, or enum expected
}
^
Main.java:75: error: empty character literal
  if (newValue=='') newValue='0';
                ^
Main.java:75: error: unclosed character literal
  if (newValue=='') newValue='0';
                 ^
Main.java:76: error: class, interface, or enum expected
  eval('this.'+notifier.type+'='+newValue+';');
  ^
Main.java:76: error: unclosed character literal
  eval('this.'+notifier.type+'='+newValue+';');
       ^
Main.java:76: error: unclosed character literal
  eval('this.'+notifier.type+'='+newValue+';');
             ^
Main.java:77: error: class, interface, or enum expected
  this.calculate();
  ^
Main.java:78: error: class, interface, or enum expected
  this.notify();
  ^
Main.java:79: error: class, interface, or enum expected
}
^
Main.java:84: error: class, interface, or enum expected
GoalCostCounter.prototype.constructor = GoalCostCounter;
^
Main.java:85: error: class, interface, or enum expected
GoalCostCounter.prototype.parent = CostCounter.prototype;
^
Main.java:87: error: class, interface, or enum expected
GoalCostCounter.prototype.calculate = function() {
^
Main.java:90: error: class, interface, or enum expected
  }
  ^
Main.java:93: error: class, interface, or enum expected
  }
  ^
Main.java:98: error: class, interface, or enum expected
  this.base = base;
  ^
Main.java:99: error: class, interface, or enum expected
  this.stat = stat;
  ^
Main.java:100: error: class, interface, or enum expected
  this.goal = goal;
  ^
Main.java:101: error: class, interface, or enum expected
  this.calculate();
  ^
Main.java:102: error: class, interface, or enum expected
  this.notify();
  ^
Main.java:103: error: class, interface, or enum expected
}
^
Main.java:108: error: class, interface, or enum expected
StatInput.prototype.constructor = StatInput;
^
Main.java:109: error: class, interface, or enum expected
StatInput.prototype.parent = Observer.prototype;
^
Main.java:111: error: class, interface, or enum expected
function StatInput(notifiedObjects, id, type) {
^
Main.java:113: error: class, interface, or enum expected
  this.type = type;
  ^
Main.java:114: error: class, interface, or enum expected
  this.value = document.getElementById(id).value;
  ^
Main.java:115: error: class, interface, or enum expected
  this.isInput = true;
  ^
Main.java:116: error: class, interface, or enum expected
  this.notify();
  ^
Main.java:117: error: class, interface, or enum expected
}
^
Main.java:121: error: class, interface, or enum expected
}
^
Main.java:125: error: class, interface, or enum expected
  document.getElementById(this.id).value = newValue;
  ^
Main.java:126: error: class, interface, or enum expected
  this.notify();
  ^
Main.java:127: error: class, interface, or enum expected
}
^
Main.java:131: error: class, interface, or enum expected
  if (!onlyDigits(newValue)) {
  ^
Main.java:133: error: class, interface, or enum expected
  }
  ^
Main.java:134: error: empty character literal
  else if (newValue=='') {
                     ^
Main.java:134: error: unclosed character literal
  else if (newValue=='') {
                      ^
Main.java:136: error: class, interface, or enum expected
  }
  ^
Main.java:139: error: class, interface, or enum expected
    if (value<1) {
    ^
Main.java:141: error: class, interface, or enum expected
    }
    ^
Main.java:144: error: class, interface, or enum expected
    }
    ^
Main.java:147: error: class, interface, or enum expected
    }
    ^
Main.java:154: error: class, interface, or enum expected
Span.prototype.constructor = Span;
^
Main.java:155: error: class, interface, or enum expected
Span.prototype.parent = Observer.prototype;
^
Main.java:157: error: class, interface, or enum expected
function Span(notifiedObjects, id) {
^
Main.java:159: error: class, interface, or enum expected
}
^
Main.java:164: error: class, interface, or enum expected
  document.getElementById(this.id).innerHTML = newValue;
  ^
Main.java:165: error: class, interface, or enum expected
  this.notify();
  ^
Main.java:166: error: class, interface, or enum expected
}
^
Main.java:171: error: class, interface, or enum expected
horses[1] = {name:"Osio? Poitou", cost:1000, defence:1, attack:1, stamina:1, level:5, premium:false};
^
Main.java:172: error: class, interface, or enum expected
horses[2] = {name:"Kuc Dartmoor", cost:2000, defence:2, attack:2, stamina:2, level:7, premium:false};
^
Main.java:173: error: class, interface, or enum expected
horses[3] = {name:"Welsh", cost:3000, defence:3, attack:3, stamina:3, level:8, premium:false};
^
Main.java:174: error: class, interface, or enum expected
horses[4] = {name:"Ko? fiordzki", cost:4000, defence:3, attack:4, stamina:3, level:10, premium:false};
^
Main.java:175: error: class, interface, or enum expected
horses[5] = {name:"Ko? holszty?ski", cost:5000, defence:4, attack:5, stamina:3, level:15, premium:false};
^
Main.java:176: error: class, interface, or enum expected
horses[6] = {name:"Rottaler", cost:5000, defence:5, attack:5, stamina:5, level:15, premium:true};
^
Main.java:177: error: class, interface, or enum expected
horses[7] = {name:"Ko? oldenburski", cost:10000, defence:6, attack:9, stamina:9, level:17, premium:true};
^
Main.java:178: error: class, interface, or enum expected
horses[8] = {name:"Ko? berberyjski", cost:15000, defence:8, attack:13, stamina:10, level:20, premium:false};
^
Main.java:179: error: class, interface, or enum expected
horses[9] = {name:"Ko? fryderyksborski", cost:15000, defence:9, attack:13, stamina:13, level:20, premium:true};
^
Main.java:180: error: class, interface, or enum expected
horses[10] = {name:"Ko? czystej krwi arabskiej", cost:20000, defence:10, attack:15, stamina:15, level:23, premium:false};
^
Main.java:181: error: class, interface, or enum expected
horses[11] = {name:"Ko? brabancki", cost:25000, defence:12, attack:17, stamina:17, level:25, premium:true};
^
Main.java:182: error: class, interface, or enum expected
horses[12] = {name:"Senner", cost:30000, defence:15, attack:20, stamina:20, level:30, premium:false};
^
Main.java:183: error: class, interface, or enum expected
horses[13] = {name:"Ko? anglo-norma?ski", cost:40000, defence:18, attack:25, stamina:25, level:33, premium:false};
^
Main.java:184: error: class, interface, or enum expected
horses[14] = {name:"Ko? Shire", cost:45000, defence:20, attack:27, stamina:27, level:37, premium:false};
^
Main.java:185: error: class, interface, or enum expected
horses[15] = {name:"Ko? pe?nej krwi angielskiej", cost:50000, defence:22, attack:29, stamina:29, level:40, premium:false};
^
Main.java:186: error: class, interface, or enum expected
horses[16] = {name:"Ko? pe?nej krwi perskiej", cost:60000, defence:23, attack:30, stamina:30, level:45, premium:true};
^
Main.java:187: error: class, interface, or enum expected
horses[17] = {name:"Ko? pe?nej krwi arabskiej", cost:70000, defence:25, attack:32, stamina:32, level:47, premium:false};
^
Main.java:188: error: class, interface, or enum expected
horses[18] = {name:"Ko? kabardy?ski", cost:80000, defence:28, attack:35, stamina:35, level:50, premium:true};
^
Main.java:189: error: class, interface, or enum expected
horses[19] = {name:"Perszeron", cost:100000, defence:30, attack:40, stamina:40, level:60, premium:false};
^
Main.java:190: error: class, interface, or enum expected
horses[20] = {name:"Ko? jutlandzki", cost:150000, defence:35, attack:50, stamina:50, level:70, premium:true};
^
100 errors
stdout
Standard output is empty