Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. var Entity = function(damage, accuarcy, attackSpeed, hitPoints, isBerserk){
  2. this.damage = damage;
  3. this.accuarcy = accuarcy;
  4. this.attackSpeed = attackSpeed;
  5. this.hitPoints = hitPoints;
  6. this.isBerserk = isBerserk;
  7.  
  8. this.maxHitPoints = this.hitPoints
  9.  
  10. this.logDimension = function(){
  11. Logger.log(this.damage);
  12. Logger.log(this.accuarcy);
  13. Logger.log(this.attackSpeed);
  14. Logger.log(this.hitPoints);
  15. Logger.log(this.isBerserk);
  16. }
  17.  
  18. this.getDamage = function(){
  19. if (this.isBerserk && this.hitPoints < this.maxHitPoints / 2)
  20. {
  21. Logger.log("player 2 BERSERK!!!");
  22. return this.damage * 2;
  23. }
  24. else
  25. {
  26. return this.damage;
  27. }
  28. }
  29. this.getAccuarcy = function(){
  30. return this.accuarcy;
  31. }
  32. this.getAttackSpeed = function(){
  33. return this.attackSpeed;
  34. }
  35. this.getHitPoints = function(){
  36. return this.hitPoints;
  37. }
  38. this.getIsBerserk = function(){
  39. return this.isBerserk;
  40. }
  41.  
  42. this.setDamage = function(newDamage){
  43. this.damage = newDamage;
  44. }
  45. this.setAccuarcy = function(newAccuarcy){
  46. this.accuarcy = newAccuarcy;
  47. }
  48. this.setAttackSpeed = function(newAttackSpeed){
  49. this.attackSpeed = newAttackSpeed;
  50. }
  51. this.setHitPoints = function(newHitPoints){
  52. this.hitPoints = newHitPoints;
  53. }
  54. };
  55.  
  56. function myFunction() {
  57. var spreadsheet = SpreadsheetApp.getActive();
  58. var sheet = spreadsheet.getSheetByName("1");
  59. var range = sheet.getRange("B2:C5")
  60.  
  61. var numberOfP1Wins = 0;
  62. var numberOfP2Wins = 0;
  63. var numberOfBattles = 1000;
  64.  
  65. for (var battleNumber = 1; battleNumber <= numberOfBattles; battleNumber++) {
  66. var player1 = new Entity(range.getCell(1, 1).getValue(), range.getCell(2, 1).getValue(), range.getCell(3, 1).getValue(), range.getCell(4, 1).getValue(), false);
  67. var player2 = new Entity(range.getCell(1, 2).getValue(), range.getCell(2, 2).getValue(), range.getCell(3, 2).getValue(), range.getCell(4, 2).getValue(), true);
  68. var currentSecond = 1;
  69. Logger.log("battle number = " + battleNumber);
  70. while (player1.getHitPoints() > 0 && player2.getHitPoints() > 0)
  71. {
  72. if (Math.random() < player1.getAccuarcy())
  73. {
  74. player2.setHitPoints(player2.getHitPoints() - player1.getDamage());
  75. }
  76. if (currentSecond % 2 == 0)
  77. {
  78. if (Math.random() < player2.getAccuarcy())
  79. {
  80. player1.setHitPoints(player1.getHitPoints() - player2.getDamage())
  81. }
  82. }
  83. currentSecond++;
  84. Logger.log("player 1 hitPoints = " + player1.getHitPoints());
  85. Logger.log("player 2 hitPoints = " + player2.getHitPoints());
  86. }
  87. if (player1.getHitPoints() <= 0)
  88. {
  89. numberOfP2Wins++;
  90. }
  91. else
  92. {
  93. numberOfP1Wins++;
  94. }
  95. }
  96.  
  97. Logger.log("_________________________________");
  98. Logger.log("probability of win for player 1 = " + (numberOfP1Wins / numberOfBattles));
  99. Logger.log("probability of win for player 2 = " + (numberOfP2Wins / numberOfBattles));
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement