Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: ohjelman sammuttaminen

Grimmi [04.06.2005 15:11:35]

#

Elikkästä, mulla on yks tekstipohjainen peli, ms-dos kehotteessa. Koitan saada ohjelman sammumaan kun se tulostaa tekstin Busted, tässä on tällä hetkellä koko 'pelin' source.

/*
#########################
Kökkö 'hack' systeemi-peli
Koodaaja: Grim Gurnarok
#########################
*/

#include <iostream.h>
#include <stdlib.h>
#include <windows.h>

int hack(void);

int main(void)
{

 char login[255];
 int command;

 // ns. login ikkuna
 system("CLS");
 cout << "Please insert your login name: ";
 cin >> login;

 cout << "Welcome " << login << " to the purgatory hack system.\n\n";

 cout << "To get help, press 1.\n\n";
 cin >> command;
 system("CLS");

 do {
       if ( command == 1)
          {
           cout << "  +--------------------------+\n";
           cout << "  |                          |\n";
           cout << "  |       HELP SCREEN        |\n";
           cout << "  |                          |\n";
           cout << "  | 1 - Display help screen. |\n";
           cout << "  | 2 - Program info.        |\n";
           cout << "  | 3 - Start hack system.   |\n";
           cout << "  | 4 - Exit program.        |\n";
           cout << "  |                          |\n";
           cout << "  +--------------------------+\n\n";
          }
       else if ( command == 2)
          {
           cout << "  +----------------+\n";
           cout << "  | Purgatory INC  |\n";
           cout << "  | Hack interface |\n";
           cout << "  | Version: Alpha |\n";
           cout << "  +----------------+\n\n";
          }
       else if ( command == 3)
          {
           hack();
          }
       else
          {
           cout << "Invalid command.\n";
           cout << "Press 1 to get help.\n";
          }

       cout << "\nCommand: ";
       cin >> command;
       system("CLS");
     }
     while (command != 4);
}

int hack(void)
{
 // Alustetaan IP:t
 int ip_part1;
 int ip_part2;
 int ip_part3;
 int ip_part4;

 int yhteys;

 srand(GetTickCount());
 // Randomit IP-numerot väliltä 1-255
 ip_part1 = (255 * rand() / RAND_MAX) + 1;
 ip_part2 = (255 * rand() / RAND_MAX) + 1;
 ip_part3 = (255 * rand() / RAND_MAX) + 1;
 ip_part4 = (255 * rand() / RAND_MAX) + 1;

 yhteys = (10 * rand() / RAND_MAX) + 1;
 if (yhteys > 4)
 {
    cout << "Connecting to: " << ip_part1 << "." << ip_part2 << "." << ip_part3 << "." << ip_part4 << "\n\n";
 }

 else
 {
    cout << "BUSTED!\n\n";
 }

}

Huom: olen aloittelija, joten kaikki ei ole ehkä mitään parhaimpia tai kevyimpiä

Grimmi [04.06.2005 15:19:41]

#

Siis, toimiihan toi muuten. Mutta tarkoituksena olisi pitää sitä loopissa niin kauvan kunnes käyttäjä joko ite poistuu tai tulee busted

remontti-reiska [04.06.2005 15:23:03]

#

Auttaisiko asiaa:

else
 {
    cout << "BUSTED!\n\n";
    return 0;
 }

EDIT: Saamari mitä säätämistä...

Grimmi [04.06.2005 15:48:10]

#

Testasin tota, ei toiminut.

Metabolix [04.06.2005 15:48:38]

#

Ei auttaisi, koska tuo pätkä on omassa funktiossaan.

Mitä järkeä on tehdä funktio, joka palauttaa kokonaisluvun (int hack(void)), kun (1) palautusarvoa ei koodissa edes palauteta ja (2) sitä ei yritetäkään ottaa talteen? Pitäisi kääntäjänkin tuosta varoittaa.

Ohjelman saa sammumaan exit-funktiolla, sijoita se remontti-reiskan ohjeiden mukaiseen paikkaan. (exit(0)).

Paljon parempi tapa olisi laittaa oikeaoppisesti funktio aina palauttamaan arvo ja katsoa pääohjelmassa, mitä se palautti, ja sen perusteella päättää, josko silmukka pitäisi lopettaa (break;)

kooderi [04.06.2005 18:58:00]

#

Kyseessähän on alkup. kirjoittajan omien sanojen mukaan aloittelija, joten ei kai kannata alkaa tivaamaan onko ohjelma tehty järkevästi vai ei.

Kun olet sattunut tekemään tuon hack()-funkkarin jo valmiiksi palauttmaan intin, muutat mainin do-silmukasta kolmosen käsittelyn noin:

else if (command == 3)
{
    if (-1 == hack())
        return 0;
}

Ja itse hack()-funkkarin loppuosan noin:

else
{
    cout << "BUSTED!\n\n";
    return -1;
}

return 0;

Ja jos joidenkin muiden palautusarvojen käyttö tuntuu luontevammalta, voi niitä muuttaa haluamiinsa arvoihin.

Grimmi [05.06.2005 09:58:17]

#

Kiitos kooderi ja muilekkin, sain toimimaan sen ^.^

Toi on, kuten huomaatte käsittelyssä kohta 2, että tämä on vasta Alpha versio, tarkoitus kun ajanmyötä opin niin teen testä beta version jossa olen käyttänyt koodia vähän järkevämmin :)

Ei sitä osaa hyvin kaikkea tehä, jos on vain pari päviää kattonut perus hommia :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta