Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.44 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Schneckenrennen</title>
  6. </head>
  7. <body>
  8.  
  9. <script>
  10.  
  11. /**
  12. * Klasse Rennen
  13. *
  14. * @param {string} name Name des Rennens
  15. * @param {number} laenge Länge der Rennstrecke
  16. * @constructor
  17. *
  18. * @since 1.0.0
  19. * @author Laura
  20. */
  21. var Rennen = function(name, laenge) {
  22.  
  23. /**
  24. * Name des Rennens
  25. *
  26. * @type {string}
  27. **/
  28. this.name = name;
  29.  
  30. /**
  31. * Länge der Rennstrecke
  32. *
  33. * @type {number}
  34. **/
  35. this.laenge = laenge;
  36.  
  37. /**
  38. * Anzahl der Teilnehmer
  39. *
  40. * @type {number}
  41. **/
  42. this.anzahlTeilnehmer = 0;
  43.  
  44. /**
  45. * Teilnehmer
  46. *
  47. * @type {Rennschnecke[]}
  48. **/
  49. this.teilnehmer = [];
  50.  
  51. /**
  52. * Fügt eine Schnecke zu den Teilnehmern hinzu
  53. *
  54. * @param {Rennschnecke} schnecke Eine Schnecke
  55. */
  56. this.addRennschnecke = function(schnecke) {
  57. this.teilnehmer.push(schnecke);
  58. this.anzahlTeilnehmer++;
  59. };
  60.  
  61. /**
  62. * Entfernt eine Schnecke von den Teilnehmern
  63. *
  64. * @param {string} schneckenName Name einer Schnecke
  65. */
  66. this.removeRennschnecke = function(schneckenName) {
  67. for (var i = 0; i < this.anzahlTeilnehmer; i++) {
  68. var schnecke = this.teilnehmer[i];
  69.  
  70. if (schnecke.name == schneckenName) {
  71. this.teilnehmer.splice(i, 1);
  72. this.anzahlTeilnehmer--;
  73. }
  74. }
  75. };
  76.  
  77. /**
  78. * Gibt Schneckeninformationen zurück
  79. *
  80. * @returns {string} Infos der Schnecke
  81. */
  82. this.toString = function () {
  83. var schneckenInfo = '';
  84. for (var i = 0; i < this.anzahlTeilnehmer; i++) {
  85. var schnecke = this.teilnehmer[i];
  86. schneckenInfo = schneckenInfo + schnecke.toString() + '<br />';
  87. }
  88. return this.name + ' ' + this.laenge + ' ' + this.anzahlTeilnehmer + ' <br />' + schneckenInfo;
  89. };
  90.  
  91. /**
  92. * Stellt fest, ob es einen Gewinner gibt
  93. *
  94. * @returns {Rennschnecke|null} Gewinnerschnecke oder null
  95. */
  96. this.ermittleGewinner = function () {
  97. for (var i = 0; i < this.anzahlTeilnehmer; i++) {
  98. var schnecke = this.teilnehmer[i];
  99. if (schnecke.position >= this.laenge) {
  100. return schnecke;
  101. }
  102. }
  103.  
  104. return null;
  105. };
  106.  
  107. /**
  108. * Lässt die Schnecken kriechen
  109. */
  110. this.lasseSchneckenKriechen = function () {
  111. for ( var i = 0; i < this.anzahlTeilnehmer; i++) {
  112. var schnecke = this.teilnehmer[i];
  113. schnecke.krieche();
  114. }
  115. };
  116.  
  117. /**
  118. * Führt das Rennen durch
  119. */
  120. this.durchfuehren = function () {
  121. while (this.ermittleGewinner() == null) {
  122. this.lasseSchneckenKriechen();
  123. }
  124. };
  125. };
  126.  
  127. /**
  128. * Klasse Rennschnecke
  129. *
  130. * @param {string} name Name der Rennschnecke
  131. * @param {string} rasse Rasse der Rennschnecke
  132. * @param {number} maximalgeschwindigkeit Maximale Geschwindigkeit der Rennschnecke
  133. * @constructor
  134. *
  135. * @since 1.0.0
  136. * @author Laura
  137. */
  138. var Rennschnecke = function(name, rasse, maximalgeschwindigkeit) {
  139.  
  140. /**
  141. * Name der Rennschnecke
  142. *
  143. * @type {string}
  144. **/
  145. this.name = name;
  146.  
  147. /**
  148. * Rasse der Rennschnecke
  149. *
  150. * @type {string}
  151. **/
  152. this.rasse = rasse;
  153.  
  154. /**
  155. * Maximalgeschwindigkeit der Rennschnecke
  156. *
  157. * @type {number}
  158. **/
  159. this.maximalgeschwindigkeit = maximalgeschwindigkeit;
  160.  
  161. /**
  162. * Position der Rennschnecke
  163. *
  164. * @type {number}
  165. **/
  166. this.position = 0;
  167.  
  168. /**
  169. * Lässt die Schnecke kriechen und ändert die Position
  170. */
  171. this.krieche = function () {
  172. var ergebnis = this.maximalgeschwindigkeit * Math.random();
  173. this.position = this.position + ergebnis;
  174. };
  175.  
  176. /**
  177. * Gibt die Informationen der Schnecke zurück
  178. *
  179. * @returns {string}
  180. */
  181. this.toString = function () {
  182. return this.name + ' ' + this.rasse + ' (' + this.maximalgeschwindigkeit + ') ' + this.position;
  183. };
  184. };
  185.  
  186. /**
  187. * Klasse Wette
  188. *
  189. * @param {string} schneckenName Name der Rennschnecke
  190. * @param {string} wettEinsatz Eingesetzter Wettbetrag
  191. * @param {string} spieler Name des Spielers
  192. * @constructor
  193. *
  194. * @since 1.0.0
  195. * @author Laura
  196. */
  197. var Wette = function(schneckenName, wettEinsatz, spieler) {
  198. this.schneckenName = schneckenName;
  199. this.wettEinsatz = wettEinsatz;
  200. this.spieler = spieler;
  201. };
  202.  
  203. /**
  204. * Klasse Wettbüro
  205. *
  206. * @param {string} rennen Informationen zum Rennen
  207. * @param {string} faktor Faktor mit dem der Wetteinsatz faktorisiert wird
  208. * @constructor
  209. *
  210. * @since 1.0.0
  211. * @author Laura
  212. */
  213. var Wettbuero = function(rennen, faktor) {
  214.  
  215. /**
  216. * Name des Rennens
  217. *
  218. * @type {string}
  219. **/
  220. this.rennen = rennen;
  221.  
  222. /**
  223. * Zu berechnender Faktor für Wetteinsatz bei Gewinn
  224. *
  225. * @type {number}
  226. **/
  227. this.faktor = faktor;
  228.  
  229. /**
  230. * Betreffende Wetten
  231. *
  232. * @type {Wette[]}
  233. **/
  234. this.wetten = [];
  235.  
  236. this.wetteAnnehmen = function (schneckenName, wettEinsatz, spieler) {
  237. var wette = new Wette (schneckenName, wettEinsatz, spieler);
  238. this.wetten.push(wette);
  239. };
  240.  
  241. this.rennenDurchfuehren = function () {
  242. this.rennen.durchfuehren();
  243. };
  244.  
  245. this.toString = function () {
  246. var wettinfo = '';
  247. for (var i = 0; i < this.wetten.length; i++) {
  248. var wette = this.wetten[i];
  249. wettinfo = wettinfo + wette.spieler + ' hat ' + wette.wettEinsatz + ' EUR auf ' + wette.schneckenName + ' gesetzt. <br />';
  250. }
  251. return 'Faktor: ' + this.faktor + '<br />' + this.rennen.toString() + '<br />' + wettinfo;
  252. };
  253.  
  254. this.printGewinner = function () {
  255. var sieger = this.rennen.ermittleGewinner();
  256. for (var i = 0; i < this.wetten.length; i++) {
  257. var wette = this.wetten[i];
  258. if (wette.schneckenName == sieger.name) {
  259. document.write('Spieler ' + wette.spieler + ' hat ' + (wette.wettEinsatz * this.faktor) + ' EUR gewonnen.')
  260. }
  261. }
  262. }
  263.  
  264. };
  265.  
  266. var inge = new Rennschnecke('Inge', 'Weinbergschnecke1', 10);
  267. var thomas = new Rennschnecke('Thomas', 'Weinbergschnecke2', 10);
  268. var hans = new Rennschnecke('Hans', 'Weinbergschnecke3', 10);
  269.  
  270. document.write(inge.toString() + '<br />');
  271.  
  272. inge.krieche();
  273. thomas.krieche();
  274. hans.krieche();
  275.  
  276. document.write(inge.toString() + '<br />');
  277.  
  278. var nuerburg = new Rennen('Nürburgring', 1000);
  279. nuerburg.addRennschnecke(inge);
  280. nuerburg.addRennschnecke(thomas);
  281. nuerburg.addRennschnecke(hans);
  282.  
  283. console.log(nuerburg.teilnehmer);
  284.  
  285. // nuerburg.removeRennschnecke('Thomas');
  286.  
  287. console.log(nuerburg.teilnehmer);
  288.  
  289. console.log(nuerburg.anzahlTeilnehmer);
  290.  
  291. document.write(nuerburg.toString());
  292.  
  293. /*
  294. nuerburg.durchfuehren();
  295.  
  296. var sieger = nuerburg.ermittleGewinner();
  297.  
  298. console.log(sieger);
  299.  
  300. document.write(sieger.toString());
  301.  
  302. */
  303.  
  304. var schulz = new Wettbuero(nuerburg, 3);
  305.  
  306. schulz.wetteAnnehmen('Inge', 10, 'Laura');
  307. schulz.wetteAnnehmen('Thomas', 9, 'Thilo');
  308. schulz.wetteAnnehmen('Hans', 8, 'Yves');
  309.  
  310. document.write(schulz.toString() + '<br />');
  311.  
  312. schulz.rennenDurchfuehren();
  313.  
  314. document.write(schulz.toString() + '<br />');
  315.  
  316. schulz.printGewinner();
  317.  
  318.  
  319. </script>
  320.  
  321. </body>
  322. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement