Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z wykonaniem kolejnych poleceń blokowych


blackuGT

Rekomendowane odpowiedzi

Opublikowano

Witam, dziś z kolegami postanowiliśmy przerobić kalkulator na grę (nie pytajcie, chodziło o to że w nim były zawarte już składnie wyświetlania tekstu i case'y) no i stanęliśmy w jednym miejscu, konkretnie to w zrobieniu dalszej części fabuły - kolejnego wyboru którego nie do końca potrafimy zdefiniować w kodzie. Wpisałem go komentarzem bo nie mam pojęcia co tam wstawić by to zadziałało, jeśli wstawię kolejnego case'a to wywali jego duplikat. Ma ktoś pomysł jak to ogarnąć by można było tych akcji robić naprawdę wiele?

Wstawiam kod : 

#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <conio.h>
#include <iomanip>

using namespace std;

std::string PL( const char * text )
{
    std::string result;
    for(; * text; text++ )
    switch( * text )
    {
    case 'ą': result += static_cast < char >( 0xa5 ); break;
    case 'ć': result += static_cast < char >( 0x86 ); break;
    case 'ę': result += static_cast < char >( 0xa9 ); break;
    case 'ł': result += static_cast < char >( 0x88 ); break;
    case 'ń': result += static_cast < char >( 0xe4 ); break;
    case 'ó': result += static_cast < char >( 0xa2 ); break;
    case 'ś': result += static_cast < char >( 0x98 ); break;
    case 'ż': result += static_cast < char >( 0xbe ); break;
    case 'ź': result += static_cast < char >( 0xab ); break;
    case 'Ą': result += static_cast < char >( 0xa4 ); break;
    case 'Ć': result += static_cast < char >( 0x8f ); break;
    case 'Ę': result += static_cast < char >( 0xa8 ); break;
    case 'Ł': result += static_cast < char >( 0x9d ); break;
    case 'Ń': result += static_cast < char >( 0xe3 ); break;
    case 'Ó': result += static_cast < char >( 0xe0 ); break;
    case 'Ś': result += static_cast < char >( 0x97 ); break;
    case 'Ż': result += static_cast < char >( 0xbd ); break;
    case 'Ź': result += static_cast < char >( 0x8d ); break;
        default: result += * text; break;
    }
    return result;
}

int main()
{
    int Polecenie, a, b;
    Polecenie = 0;
    
    do {
        cout << setw(75) << setfill(' ') << "################################" << endl;;
        cout << setw(75) << setfill(' ') << "#####  Fight with reality  #####" << endl;;
        cout << setw(75) << setfill(' ') << "#####                      #####" << endl;;
        cout << setw(75) << setfill(' ') << "#####    Wersja : 0.0.1b   #####" << endl;;
        cout << setw(75) << setfill(' ') << "#####                      #####" << endl;;
        cout << setw(75) << setfill(' ') << "#####         MENU :       #####" << endl;;
        cout << setw(75) << setfill(' ') << "#####    [1] - Nowa gra    #####" << endl;;
        cout << setw(75) << setfill(' ') << "#####   [2] - Changelog    #####" << endl;;
        cout << setw(75) << setfill(' ') << PL("#####     [3] - Wyjdź      #####") << endl;;
        cout << "                                           ################################ \n \n \n" << endl;;
        cout << "    Twoje polecenie: ";
        
        cin >> Polecenie;
        
        switch( Polecenie ) {
        case 1:
            system("cls");
            cout << setw(75) << setfill(' ') << "################################" << endl;;
            cout << setw(75) << setfill(' ') << "#####  Fight with reality  #####" << endl;;
            cout << setw(75) << setfill(' ') << "#####                      #####" << endl;;
            cout << setw(75) << setfill(' ') << PL("#####    Wczytuję grę...   #####") << endl;;
            cout << setw(75) << setfill(' ') << "#####                      #####" << endl;;
            cout << "                                           ################################ \n \n \n" << endl;;
            Sleep(1999);
            system("color 2"); // Kolor zielony paska ładowania
            cout << "                                           [|||||||";
            Sleep(3000);
            cout << "|||||||||||";
            Sleep(2500);
            cout << "||||||||||||] \n \n \n";
            cout << PL("                                      Wczytano  Gra uruchomi się za 3 sekundy! \n \n \n") << endl;;
            Sleep(3000);
            system("color 7"); // Powrót do koloru standardowego
            system("cls");
            cout << setw(75) << setfill(' ') << "################################" << endl;;
            cout << setw(75) << setfill(' ') << "#####                      #####" << endl;;
            cout << setw(75) << setfill(' ') << "#####  Fight with reality  #####" << endl;;
            cout << setw(75) << setfill(' ') << "#####                      #####" << endl;;
            cout << "                                           ################################ \n \n \n" << endl;;
            cout << PL("        Budzisz się wcześnie rano, jest bardzo zimno. Leżysz na niewyodnym łóżku. Twoja chatka prawie się sypie...") << endl;;
            Sleep(3000);
            cout << PL("     ... ze starości, postanawiasz usiąść i rozejrzeć się dookoła. Na starym stoliku widać zardzewiały sztylet. \n \n") << endl;;
            Sleep(3000);
            system("color 5");
            cout << PL("                                               Co chcesz zrobic? :\n \n \n") <<endl;;
            cout << PL("                                            [1] - Podnieść sztylet") <<endl;;
            cout << PL("                                 [2] - Posmarować chleb przy pomocy sztyletu") <<endl;;
            cout << PL("                                         [3] - Popełnić samobójstwo  \n \n \n") <<endl;;
            cout << "    Twoje polecenie: ";
                {
                case 1; // Zduplikowany case - jaki wstawić zamiennik?
                cout << PL("TEST TEKSTU CASE 1!!!!") <<endl;; //
                system("Pause"); //
                break; //
                } //
            system("Pause");
            system("cls");
            break;
            
        case 2:
            system("cls");
            cout << "Changelog w budowie \n \n \n";
            system("Pause");
            system("cls");
            break;

        case 3:
            break;
            
        default:
            system("cls");
            cout << "Nieprawidlowe polecenie!" << endl;
            Sleep(3000);
            system("cls");
        }
    } while( Polecenie != 3 );
    
    system("cls");
    cout << "Ekran wylaczenia w budowie. Zamykam program za 3 sekundy...";
    Sleep(3000);
    return 0;
    
}

Z góry dziękuję za pomoc.
Za rażące błędy przepraszam. Jest to nasz pierwszy program.

Opublikowano

Trzymaj wybory, konsekwencje, etapy itd. w jakimś pliku a następnie wczytuj je. Np. informacja o etapie mogłaby się składać z:

  • nazwy/numeru etapu
  • tekstu
  • nazw/numerów etapów do których się przechodzi po wybraniu danego polecenia

To sobie wczytaj, zrób sobie np. std::map z etapami - potem tylko pętla w stylu:

  1. Wyświetl tekst z etapu o obecnym numerze
  2. Pobierz polecenie
  3. Sprawdź w etapie o obecnym numerze do którego etapu powinieneś przejść przy danym poleceniu
Opublikowano

A mógłbyś mi napisać jak +/- wygląda takie wczytywanie i co bym musiał w tym zapisanym pliku co najmniej wpisać a raczej jakim sposobem by to trybiło - wybacz ale nie jestem zbytnio zaawansowany, gdybyś podał najmniejszy przykład to już samo mi to pójdzie :D

Z góry dziękuję :)

Opublikowano

Do czytania z plików masz klasę std::ifstream:

#include <fstream>
std::ifstream plik("etapy.txt"); // otworzenie pliku
// z obiektu(zmiennej) plik możesz korzystać tak samo jak z std::cin
plik.close(); // tak się zamyka plik

Jeśli chodzi o jakieś użyteczne funkcje, to możesz poczytać o std::getline.

 

No i sprawa przechowywania tych danych - poczytaj o strukturach, std::map i std::vector.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...