Coś nie działa w kodzie.

Odpowiedz Nowy wątek
2019-08-04 19:34
0

Witam, piszę aktualnie małą grę, która polega na tym że domki zbierają zasoby i za te zasoby możemy ulepszyć te domki tak aby wytwarzały zasoby szybciej.
Programuje dopiero od mniej więcej 2 tygodni, więc nie potrafię zbyt wiele, nie wiem co nie działa w kodzie i nie potrafie tego znależć.
Wszystko działa, oprócz złota, które się nie nalicza, tylko stoi w miesjcu.
Oto kod:

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

using namespace std;

int x, p, y=0, kl, k=9999, z, dl, m, b, l=2000;

int main()
{

{
    system("cls");
    cout << "Witaj w grze Twierdza!" << endl;
    cout << "Wybierz:"<<endl;
    cout <<"1 - graj"<<endl;
    cout <<"2 - wyjdz"<<endl;
    cin>>p;
    switch(p)

    case 1:
        {
            goto gra;
            break;
        }

    gra:

        {
            system("cls");
            for(int i=0;i<=k;i++)
            {

Sleep(l);
system("cls");
            cout <<"Zloto: "<<i<<endl;
                        cout <<" "<<endl; cout <<" "<<endl; cout <<" "<<endl; cout <<" "<<endl;
cout <<"kopalnia zlota "<<"["<<kl<<"]"<<endl;
cout <<"Chata drwala "<<"["<<dl<<"]"<<endl;
cout<<""<<endl;

if(i>=5)
{
cout <<"1 - ulepszenie kopalni zlota (5 zlota)"<<endl;
}
if(i>=10)
{

cout <<"2 - ulepszenie Chaty drwala (10 zlota) "<<endl;
}
cout<<"Wybierz:"<<endl;
cin>>b;
if(b==1)
{

    kl=kl+1;
    i=i-5;
   l=l-200;
}
else if(b==2)  //////Ta funkcja jak narazie nic nie robi oprócz zmiany poziomu chaty drwala i zmiany ilosci złota.
{
    dl=dl+1;
    i=i-10;
}
        }

        }

        }

    return 0;
}
edytowany 1x, ostatnio: furious programming, 2019-08-04 22:51
wysil się bardziej przy wymyślaniu tytułu wątku. Obecny nic nie mówi. Prawie każdy wątek pasuje do takiego tytułu. - MarekR22 2019-08-04 20:43

Pozostało 580 znaków

2019-08-04 19:51
6

Goto widze w tym tęczu 🤪


01010100 01110101 01110100 01100001 01101010 00100000 01101110 01101001 01100101 00100000 01101101 01100001 00100000 01101110 01101001 01100011 00100000 01100011 01101001 01100101 01101011 01100001 01110111 01100101 01100111 01101111 00101110 00100000 01001001 01100011 00100000 01110011 01110100 01101111 01101110 01110100 00101110

Pozostało 580 znaków

2019-08-04 20:19
0

Wziąłem goto z programów które kiedyś pisałem, zapis plików kończył się .bat, w c++ goto nie przejdzie?

Zła praktyka pozostanie złą niezależnie od przyczyny. Goto przydaje się naprawdę bardzo rzadko. Ja tylko raz w karierze miałem powód do użycia. - PerlMonk 2019-08-04 20:32
Czym moge zastąpić goto? Mogę to jakoś zastopić czy lepiej pisać kod po kolei? - Trykpa 2019-08-04 21:28
Wywolaniem metody. Trudno powiedziec bo nie wiadomo co tam jest napisane. - stivens 2019-08-04 21:34

Pozostało 580 znaków

2019-08-04 20:21
1

Zadziala ale jest karygodny

PS: no sformatujzesz to!


01010100 01110101 01110100 01100001 01101010 00100000 01101110 01101001 01100101 00100000 01101101 01100001 00100000 01101110 01101001 01100011 00100000 01100011 01101001 01100101 01101011 01100001 01110111 01100101 01100111 01101111 00101110 00100000 01001001 01100011 00100000 01110011 01110100 01101111 01101110 01110100 00101110
edytowany 1x, ostatnio: stivens, 2019-08-04 20:21

Pozostało 580 znaków

2019-08-04 21:27
0

To masz jakiś pomysł co zmienić w kodzie żeby się złoto naliczało?

Skasować, napisać od nowa - AnyKtokolwiek 2019-08-04 21:40

Pozostało 580 znaków

2019-08-05 11:07
1

@stivens sformatowany kod. @Trykpa jak nazywasz zmienne pojedynczymi literkami i do tego bez pecjalnego sensu to się nie dziw, że nikomu nie chce się na to patrzeć. Masz tu niby jakiś domki i złoto ale po pięciu sekundach czytania nie wiem gdzie Ty je tu schowałeś. Nie zamierzam się męczyć dłużej.

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

using namespace std;

int x, p, y = 0, kl, k = 9999, z, dl, m, b, l = 2000;

int main() {
  {
    system("cls");
    cout << "Witaj w grze Twierdza!" << endl;
    cout << "Wybierz:" << endl;
    cout << "1 - graj" << endl;
    cout << "2 - wyjdz" << endl;
    cin >> p;
    switch (p)

    case 1: {
      goto gra;
      break;
    }

  gra :

  {
    system("cls");
    for (int i = 0; i <= k; i++) {
      Sleep(l);
      system("cls");
      cout << "Zloto: " << i << endl;
      cout << " " << endl;
      cout << " " << endl;
      cout << " " << endl;
      cout << " " << endl;
      cout << "kopalnia zlota "
           << "[" << kl << "]" << endl;
      cout << "Chata drwala "
           << "[" << dl << "]" << endl;
      cout << "" << endl;

      if (i >= 5) {
        cout << "1 - ulepszenie kopalni zlota (5 zlota)" << endl;
      }
      if (i >= 10) {
        cout << "2 - ulepszenie Chaty drwala (10 zlota) " << endl;
      }
      cout << "Wybierz:" << endl;
      cin >> b;
      if (b == 1) {
        kl = kl + 1;
        i = i - 5;
        l = l - 200;
      } else if (b == 2)  //////Ta funkcja jak narazie nic nie robi oprócz
      /// zmiany poziomu chaty drwala i zmiany ilosci złota.
      {
        dl = dl + 1;
        i = i - 10;
      }
    }
  }
  }

  return 0;
edytowany 2x, ostatnio: several, 2019-08-05 11:12
Przedtem po prostu w ogole nie bylo formatowania tylko plain text. A teraz to po prostu bym go odeslal do jakiegos tutoriala/ksiazki ale nie wiem jakiego - stivens 2019-08-05 11:16

Pozostało 580 znaków

2019-08-05 12:31
0

O ile <ironic>prościej</ironic> byłoby zacząć od takiego kodu :)

#include <iostream>
#include <windows.h>
#include <thread>
#include <atomic>

using namespace std;

class StrongHold
{

public:

    void start()
    {
        if( !initGame() ) return;
        thread background( &StrongHold::run , this  );

        string input;
        while( getline( cin , input ) )
        {
            if( input == "1" )
            {
                if( gold>5 ){ ++mineLevel ; gold -= 5; };
            }

            if( input == "2" )
            {
                if( gold>10 ){ ++lumberjackLevel ; gold -= 10; };
            }

            if( input == "3" )
            {
                isRun.store(false);
                background.join();
                break;
            }
        }
    }

private:

    void run()
    {
        while( isRun )
        {
            printGameInfo();
            Sleep(1000);
            ++day;
            gold += mineLevel;
        }
    }

    bool initGame()
    {
        printStartMenu();

        string input;
        while( getline( cin , input ) )
        {
            if( input == "1" ) return true;
            if( input == "2" ) return false;
            printStartMenu();
        }
    }

    void printStartMenu()
    {
        system("cls");
        cout << "Welcome in StrongHold game!" << endl;
        cout << "1 - play" << endl;
        cout << "2 - exit" << endl;
    }

    void printGameInfo()
    {
        system("cls");
        cout << "Day : " << day << endl;
        cout << "Gold : " << gold << endl;
        cout << "Mine Level : " << mineLevel << endl;
        cout << "Lumberjack Level : " << lumberjackLevel << endl;
        cout << "1 - add new mine level [5 gold]" << endl;
        cout << "2 - add new lumberjack level [10 gold]" << endl;
        cout << "3 - exit game" << endl;
    }

    int day  {1};
    atomic<int> gold {0};
    atomic<int> mineLevel {1};
    atomic<int> lumberjackLevel {1};
    atomic<bool> isRun {true};

};

int main()
{
    StrongHold game;
    game.start();

    return 0;
}

Pozostało 580 znaków

2019-08-05 22:57
0

Ok, już nie ważne, znalazłem problem, cin blokował proces for.

Pozostało 580 znaków

dziś, 15:30
2
Trykpa napisał(a):

... cin blokował proces for.

Używanie strasznie naukowego słownictwa w sposób totalnie błędny nie przybliża do samo-zrozumienia / rozwiązania

edytowany 1x, ostatnio: AnyKtokolwiek, dziś, 15:31

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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