fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. static int hp1=100;//ilosc hp 1 gracza
  11. static int hp2=100;//ilosc hp 2 gracza
  12. static int obrazenia=5;//zadawane obrazenia
  13. static Random losuj = new Random();
  14.  
  15. public static void main (String[] args) throws java.lang.Exception
  16. {
  17.  
  18. int zwyciestwaMieczPierwszy=0;
  19. int zwyciestwaMieczDrugi=0;
  20. int remisy=0;
  21.  
  22. for (int iloscWalk=1;iloscWalk<10000;iloscWalk++){ //ilosc symulacji
  23. int wynikWalki = walka(hp1,hp2);
  24. if (wynikWalki==0) remisy++;
  25. if (wynikWalki==1) zwyciestwaMieczPierwszy++;
  26. if (wynikWalki==2) zwyciestwaMieczDrugi++;
  27. }//iloscWalk
  28.  
  29. System.out.println("Zasady gry:");
  30. System.out.println("trafienie = strata przez przeciwnika 5hp");
  31. System.out.println("stan początkowy: 100 hp");
  32. System.out.println("zwyciestwo = przeciwnik ma 0 hp");
  33. System.out.println("Miecz pierwszy uderza sto razy na sekunde z prawdopodobienstwem 1%");
  34. System.out.println("Miecz drugi uderza jeden raz na sekunde z prawdopodobienstwem 100%(zawsze trafia)");
  35. System.out.println("Wyniki:");
  36. System.out.println("Zwyciestwa przy uzyciu miecza pierwszego="+zwyciestwaMieczPierwszy);
  37. System.out.println("Zwyciestwa przy uzyciu miecza drugiego="+zwyciestwaMieczDrugi);
  38. System.out.println("remisy="+remisy);
  39. }
  40.  
  41. //zwracamy 0 dla remisu, 1 wygral pierwszy, 2 wygral drugi;
  42. public static int walka(int zycie1, int zycie2){
  43.  
  44. while(true){
  45.  
  46. //99 prob uderzen pierwszym mieczem
  47. for (int ilosc=1;ilosc<100;ilosc++) {
  48. if (mieczPierwszy()) { // gdy trafilismy mieczem nr 1
  49. zycie2=zycie2-obrazenia;
  50. if (zycie2<=0) return 1;
  51. }
  52. }
  53.  
  54. // po sekundzie - uderzają równoczesnie - drugi ZAWSZE trafia (czyli 100%)
  55. if (mieczPierwszy()) zycie2=zycie2-obrazenia; // jak trafil pierwszy
  56. zycie1=zycie1-obrazenia; // drugi trafil bez sprawdzania (zawsze trafia)
  57. if (zycie1<=0 && zycie2<=0) return 0; // obydwoje maja 0 hp wiec remis
  58. if (zycie1<=0) return 2; // pierwszy ma 0 hp wygral drugi
  59. if (zycie2<=0) return 1; // drugi ma 0 hp wygral pierwszy
  60. }//while
  61. }
  62.  
  63.  
  64. public static boolean mieczPierwszy(){
  65. int wynik = losuj.nextInt(100) + 1;
  66. if (wynik==1)return true;
  67. return false;
  68. }
  69.  
  70. }
Success #stdin #stdout 1.17s 320576KB
stdin
Standard input is empty
stdout
Zasady gry:
trafienie = strata przez przeciwnika 5hp
stan początkowy: 100 hp
zwyciestwo = przeciwnik ma 0 hp
Miecz pierwszy uderza sto razy na sekunde z prawdopodobienstwem 1%
Miecz drugi uderza jeden raz na sekunde z prawdopodobienstwem 100%(zawsze trafia)
Wyniki:
Zwyciestwa przy uzyciu miecza pierwszego=5288
Zwyciestwa przy uzyciu miecza drugiego=4707
remisy=4