login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > Overige > C en C++ > C++ - De beste puzzelaar

C++ - De beste puzzelaar

Auteur: Joel - 17 oktober 2006 - 20:45 - Gekeurd door: Joel - Hits: 2901 - Aantal punten: 3.38 (4 stemmen)


Code:
  1. <?
  2. /*
  3. ###############################################
  4. Auteur : Jol Verheyen
  5. Laatste wijziging : 29 Oktober 2006 - 17:24
  6. ###############################################
  7. */
  8.  
  9. #include <iostream>
  10. #include <time.h> //random functie
  11.  
  12. using namespace std;
  13.  
  14. //static variabelen zodat deze in andere functies kunnen gebruikt en gereset worden.
  15. static int aaron_gewonnen = 0;
  16. static int bob_gewonnen = 0;
  17. static int charlie_gewonnen = 0;
  18.  
  19. void shoot(bool& targetAlive, double accuracy);
  20. /*
  21. Precondition: (boolean) targetalive -> true of false
  22. (double) accuracy -> getal tussen 0.00 en 1.00
  23.  
  24. Postcondition: (boolean) targetAlive -> verandert in true of false
  25. */
  26.  
  27. void startDuel(int taktiek);
  28. /*
  29. Precondition: (int) taktiek -> 1 of 2
  30.  
  31. Postcondition: (void) aaron_gewonnen -> n van de drie wordt met 1 vermeerderd
  32. bob_gewonnen
  33. charlie_gewonnen
  34. */
  35.  
  36. int main(void)
  37. {
  38. //random
  39. srand((unsigned)time(NULL));
  40.  
  41. int i;
  42.  
  43. //we doen het duel 1000 keer, zodat we een juist resultaat krijgen.
  44. //Taktiek1 wordt toegepast!
  45. for (i=0;i<=1000;i++)
  46. {
  47. startDuel(1);
  48. }
  49.  
  50. cout << "> Taktiek 1: iedereen vecht tegen de sterkste.\n\n";
  51. cout << "Aaron heeft " << aaron_gewonnen << " keer gewonnen.\n";
  52. cout << "Bob heeft " << bob_gewonnen << " keer gewonnen.\n";
  53. cout << "Charlie heeft " << charlie_gewonnen << " keer gewonnen.\n\n";
  54.  
  55. //reset de score, en pas taktiek2 toe.
  56. aaron_gewonnen = 0;
  57. bob_gewonnen = 0;
  58. charlie_gewonnen = 0;
  59.  
  60. //Taktiek2 wordt toegepast!
  61. for (i=0;i<=1000;i++)
  62. {
  63. startDuel(2);
  64. }
  65.  
  66. cout << "> Taktiek 2: Aaron mist de eerste ronde met opzet.\n\n";
  67. cout << "Aaron heeft " << aaron_gewonnen << " keer gewonnen.\n";
  68. cout << "Bob heeft " << bob_gewonnen << " keer gewonnen.\n";
  69. cout << "Charlie heeft " << charlie_gewonnen << " keer gewonnen.\n\n";
  70.  
  71. system("pause");
  72. return 0;
  73. }
  74.  
  75. void shoot(bool& targetAlive, double accuracy)
  76. {
  77. //random getal tussen 0.00 en 1.00 aanmaken.
  78. double random = 0.1*(rand()%11);
  79.  
  80. //als accuracy kleiner is dan het random getal, verliest de tegenstander.
  81. if (random <= accuracy)
  82. {
  83. targetAlive = false;
  84. }
  85. else
  86. {
  87. targetAlive = true;
  88. }
  89. }
  90.  
  91. void startDuel(int taktiek)
  92. {
  93. //iedereen start al levend.
  94. bool aaronAlive = true;
  95. bool bobAlive = true;
  96. bool charlieAlive = true;
  97.  
  98. //starten met ronde1
  99. int ronde = 1;
  100.  
  101. //blijf dueleren tot dat er maar n iemand overblijft.
  102. do
  103. {
  104. //aaron vecht als hij nog leeft
  105. if (aaronAlive)
  106. {
  107. //bij taktiek2 mist aaron met opzet!
  108. if (!(taktiek == 2 && ronde == 1))
  109. {
  110. if (charlieAlive)
  111. {
  112. shoot(charlieAlive, 0.33);
  113. }
  114. else
  115. {
  116. shoot(bobAlive, 0.33);
  117. }
  118. }
  119. }
  120.  
  121. //bob vecht als hij nog leeft
  122. if (bobAlive)
  123. {
  124. if (charlieAlive)
  125. {
  126. shoot(charlieAlive, 0.50);
  127. }
  128. else
  129. {
  130. shoot(aaronAlive, 0.50);
  131. }
  132. }
  133.  
  134. //charlie vecht als hij nog leeft
  135. if (charlieAlive)
  136. {
  137. if (bobAlive)
  138. {
  139. shoot(bobAlive, 1.00);
  140. }
  141. else
  142. {
  143. shoot(aaronAlive, 1.00);
  144. }
  145. }
  146.  
  147. //volgende ronde
  148. ronde++;
  149. }
  150. while ( (aaronAlive && bobAlive) || (aaronAlive && charlieAlive) || (bobAlive && charlieAlive));
  151.  
  152. //wie wint krijgt +1
  153. if (aaronAlive)
  154. {
  155. aaron_gewonnen += 1;
  156. }
  157. else if (bobAlive)
  158. {
  159. bob_gewonnen += 1;
  160. }
  161. else if (charlieAlive)
  162. {
  163. charlie_gewonnen += 1;
  164. }
  165. }
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (4)
© 2002-2022 Sitemasters.be - Regels - Laadtijd: 0.022s