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ä
Siis, toimiihan toi muuten. Mutta tarkoituksena olisi pitää sitä loopissa niin kauvan kunnes käyttäjä joko ite poistuu tai tulee busted
Auttaisiko asiaa:
else { cout << "BUSTED!\n\n"; return 0; }
EDIT: Saamari mitä säätämistä...
Testasin tota, ei toiminut.
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;)
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.
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 :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.