Advertisement
Ami777

Challange walki robotow, JS ES2015 klasowosc lub TypeScript.

Jun 12th, 2018
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Stwórz klasę reprezentującą robota. Powinien on przyjmować w konstruktorze swoje ID, imię, atak oraz obronę.
  2. // Jeżeli w konstruktorze podano atak lub obronę mniejszą niż 1 lub większą niż 10 to wyrzuć błąd (throw new Error("Złe statystyki!")).
  3. // Dodatkowo każdy robot powinien posiadać pole prywatne level, które na początku wynosi 1.
  4. // Wszystkie pola powinny być prywatne. ID powinno być tylko do odczytu. Do każdego pola zastosuj tam gdzie pasują settery i gettery (możesz zmienić nazwy pól na takie z podkreślnikami, żeby nie było konfliktów nazw).
  5. // Robot powinien mieć dodatkowo metodę levelUp(), która zwiększa losowo jego obronę lub atak o 1. Dodatkowo zwiększa to level o 1.
  6. // Następnie stwórz metodę fight(anotherRobot), która przyjmuje jako argument innego robota.
  7. // Sprawdź kto wygrał walkę, według wzoru: hitpoints = atakAtakujacego - obronaAtakowanego.
  8. // Wygrywa ten robot, który zadał więcej hitpoints. Jeżeli równo, to walka kończy się remisem.
  9. // Jeżeli nie było remisu, wykonaj na wygranym metodę .levelUp().
  10. // Wypisz w konsoli jaki był wynik. Zwróć ID zwycięzcy lub null w przypadku remisu.
  11. // Jeżeli chcesz i Cię to ciekawi to stwórz funkcję genRobot(), która wygeneruje nowego robota, z losowymi statystykami w zakresie 1-10, dowolnym ID i losowym imieniem.
  12. //Imię możesz wylosować za pomocą:
  13. function randRoboName(){
  14.     const roboNameParts = ['robo', 'mech', 'zord', 'mega', 'tron', 'zulu', 'johnny5', 'x-512', 'bot', 'auto', 'prime', 'ultra', 'war', 'supreme', 'master', 'alpha', 'beta'];
  15.     const roboNameJoins = [' ', '-', '', '.'];
  16.     const partsCount = ~~(Math.random()*4+1);
  17.     let name = '';
  18.     for(let i = 0; i < partsCount; i++){
  19.         const joiner = i === (partsCount-1) ? '' : roboNameJoins[~~(Math.random()*roboNameJoins.length)];
  20.         name += roboNameParts[~~(Math.random()*roboNameParts.length)] + joiner;
  21.     }
  22.     return name.substr(0, 1).toUpperCase() + name.substr(1);
  23. }
  24. //Teraz stwórz arenę: wygeneruj 10 botów, następnie wykonaj walkę każdego z każdym.
  25. //Spróbuj wymyślić taki sposób, żeby walka była uczciwa, tzn. aby każdy robot zaczynał walkę z innym robotem, który też jeszcze nie walczył itp. i wypisz w konsoli obiekt zwycięzkiego robota. Wygrywa ten robot, który ma największy level.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement