Błąg logiczny - gdzie jest?

2011-10-06 20:06
von_ilnicki
0

Czy wiecie dlaczego w tym:

if (!bendstop3) {
                                   nLogic = rand() % 100 + 1;
                                   // nLogic z dwójką zainicjonowany NIE PRZYPADKOWO, by pokazać, że dla kompilatora 2 <= 5 to fałsz ?! 
                                   nLogic = 2;
                                   cout << nLogic << " ? " << ostrzal << "; " << nLogic << " ? " << fastdead << endl << endl;
                                  if (nLogic > ostrzal) cout << "- Bandyci chyba maja zeza. Auto nie odnosi obr. od ostrzalu!" << endl;
                                  else if (nLogic <= ostrzal) {
                                       cout << "- Bandyci ostrzeliwuja twoje auto: -" << obrazenia << " HP samochodu!" << endl;
                                       zycieauto -= obrazenia;
                                  }
                                  nLogic = rand() % 100 + 1;
                                  if (nLogic > fastdead) {
                                     nLogic3 = rand() % 5 + 1;
                                     switch (nLogic3) {
                                                      case 1: cout << "- Niemalze obok ciebie wybucha rakieta z F-18! Cud!" << endl; break;
                                                      case 2: cout << "- Kilka metrow dalej wybucha rakieta. Masz szczescie!" << endl; break;
                                                      case 3: cout << "- W lusterku dostrzegasz wybuch rakiety. Ufff...." << endl; break;
                                                      case 4: cout << "- Wystrzelona z F-18 rakieta omija twoj samochod. Uff..." << endl; break;
                                                      case 5: cout << "- Masz farta. Tym razem piloci zle cie namierzyli i nie trafili!" << endl; break;
                                     }
                                  }

                                  // i tu się pojawia felerna instrukcja, gdzie 2 <= 5 to fałsz...
                                  else if (nLogic <= fastdead) {
                                       cout << "- Rakieta! Uwazaj... aj... kopnales w kalendarz..." << endl;
                                       Koniec(true, false, "none", 67, 23);
                                  }
                   }

warunek else if (nLogic <= fastdead) nigdy się nie spełnia, nawet pomimo testowego przypisania do wartości nLogic wartości 2 - czyli mniejszej od zakładanej wartości 5 przy fastdead?

P.S zmienna prawda/fałsz bendstop3 odpowiada za określenie sytuacji, czy gracz załapał bonusa na 3 tury bez ryzyka ostrzelania. Tak dla wyjaśnienia.

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-10-06 20:14
0
  1. Nigdzie nie widzę przypisania do fastdead wartości 5 w tym kodzie.
  2. Popatrz DOKŁADNIE jaka linijka jest przed tą: if (nLogic > fastdead) {
  3. Wiesz co to debugger i jak się go używa?

Pozdro & poćwicz!

Pozostało 580 znaków

2011-10-06 20:19
von_ilnicki
0
  1. jest, wcześniej. fastdead = 5;
  2. nLogic w moich zamiarach ma być w zakresie 1-100 i być liczbą losową (srand było wywołane na początku programu, tu go nie widać). Fastdead to prawdopodobieństwo natychmiastowego zestrzelenia (5% szans czyli 5, bo w zakresie 1-100). Dlatego w linijce nLogic = rand() % 100 + 1; nie widzę nic złego.
  3. debugger mi się nie uruchamia, jakiś bład wywala ale to inny temat.

Pozostało 580 znaków

2011-10-06 20:43
2
  1. No chłopie, popatrz dokładnie co robisz ze zmienną nLogic i kiedy do niej coś przypisujesz. Robisz tak:
    • najpierw: nLogic = rand() % 100 + 1;
    • później: nLogic = 2;
    • następnie: nLogic = rand() % 100 + 1;
      Teraz sprawdzasz czy nLogic > fastdead, gdy nie, to sprawdzasz czy nLogic <= fastdead (co jest bez sensu, bo skoro nie jest większe to musi być mniejsze lub równe).

Rozumiesz? Najpierw przypisujesz losową liczbę, później 2, a później znów losową i dopiero PO przypisaniu LOSOWEJ liczby SPRAWDZASZ warunek.

  1. No to zrób tak, żeby się zaczął uruchamiać. 90% swoich problemów logicznych rozwiążesz sam. Satysfakcja gwarantowana.

Pozdro & poćwicz!
edytowany 2x, ostatnio: stfu, 2011-10-06 20:43

Pozostało 580 znaków

2011-10-06 21:02
von_ilnicki
0

okej, dzięki. no tak. nie zauważyłem.

Pozostało 580 znaków

2011-10-06 21:10
1

Po formatowaniu tego kodu i po tym, że debuber Ci się sypie wnioskuję, że używasz dev-c++ => weź ten shit wywal i zainstaluj coś normalnego, bo w dev'ie debuger się do niczego nie nadaje, zresztą jak cały ten program


Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0