Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pętla działająca w tle

Ostatnio zmodyfikowano 2016-08-29 18:25
Autor Wiadomość
SaJmoN170
Temat założony przez niniejszego użytkownika
Pętla działająca w tle
» 2016-08-29 15:27:06
Witam. Chciałbym zrobić program który normalnie się wykonuje, tak jak zwykle, ale w tle działa jedna pętla która nie zatrzymuje działania reszty programu i wykonuje się w odosobnieniu. Chodzi mi o to że program się wykonuje a w tle pętla powiększa co jakiś czas wartość zmiennej.
P-151202
Zibby
» 2016-08-29 15:38:21
Nie wiem czy jest coś takiego jak pętla działająca w tle, możesz dokładniej opisać co ma się dziać? Może da się to rozwiązać w inny sposób.
P-151205
SaJmoN170
Temat założony przez niniejszego użytkownika
» 2016-08-29 15:44:32
Wyjaśniłem chyba najjaśniej jak mogę. Robię clickera i chcę żeby co 1 sekundę dodawało się 10 do zmiennej. Chodzi mi o takie coś jakie jest np. w Cookie Clicker. Jeśli w to pograsz to zobaczysz że dodają ci się co jakiś czas ciastka i nic się nie przerywa, możesz dalej kupować rzeczy i klikać, a w tle dalej będą dodawać ci się ciastka.
P-151206
Zibby
» 2016-08-29 15:52:57
nie można tego zrobić w ten sposób?

C/C++
int record_dodawanie = 0;

glowna petla programu
{
    //...
    if( clock() - record_dodawanie > 1000 )
    {
        zmienna += 10;
        record_dodawanie = clock();
    }
}
P-151207
SaJmoN170
Temat założony przez niniejszego użytkownika
» 2016-08-29 16:02:44
Jestem dopiero początkującym, nie wiedziałem że tak się da. Wytłumaczysz mi jak to działa, albo przynajmniej dasz jakiś link do poradnika lub kursu?
P-151208
Zibby
» 2016-08-29 16:33:23
No to dużo zależy od kodu twojego programu.
Dla przykładowego programu na windowsie to będzie wyglądało tak.

C/C++
//To jest potrzebne by została wykryta funkcja: GetConsoleWindow();
#define _WIN32_WINNT 0x0500

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

using namespace std;

int main()
{
    //Ustawiamy uchwyt do okna (HWND), tak aby wskazywał na naszą konsolę (konsola to też okno).
    HWND Hwnd = GetConsoleWindow();
    int zmienna = 0;
    int record_dodawanie = 0;
    bool nacisniety_przycisk = true; // zeby nie dodawalo punktow podczas przytrzymania lpm
    while( zmienna < 100 )
    {
        int record = clock();
       
        if( GetAsyncKeyState( VK_LBUTTON ) && nacisniety_przycisk == false ) // LPM
        {
            zmienna++;
            system( "cls" );
            cout << zmienna;
            nacisniety_przycisk = true;
        }
        else if( !GetAsyncKeyState( VK_LBUTTON ) ) // puszczenie lpm
             nacisniety_przycisk = false;
       
        if( record - record_dodawanie > 1000 ) // dodawanie co sekunde
        {
            zmienna++;
            system( "cls" );
            cout << zmienna;
           
            record_dodawanie = record;
        }
    }
    return 0;
}
P-151209
SaJmoN170
Temat założony przez niniejszego użytkownika
» 2016-08-29 16:38:11
Mam Linuxa (Ubuntu 16.04), a to mój kod:
C/C++
#include <iostream>
#include <string>
#include <ncurses.h>
#include <unistd.h>

#define ESC 27

using namespace std;

int main()
{
    initscr();
    keypad( stdscr, TRUE );
    noecho();
    //nodelay(stdscr, TRUE); /*EMERGENCY!!!*/
   
   
   
    unsigned long long internety;
    internety = 0;
    int moreinternets;
    moreinternets = 1;
    int klawisz;
    string level;
    level = "Nikt";
    float ips; //Internet Per Second
    ips = 0;
    string zakupy;
   
    float sleeptime = 1;
   
    bool sklepkomunikat = 0;
    int sklepkomunikatbyl = 1;
   
    bool wejsciedosklepu = 0;
   
    //levele
    bool levelinternethunter = 0;
    bool levelpirate = 0;
    bool levelwebmaster = 0;
   
   
    while( true )
    {
        clear();
       
        printw( "Witaj w The Internet Clicker \n" );
        printw( "Twoim celem jest zdobycie jak najwiekszej\n" );
        printw( "ilosci internetow\n\n" );
        printw( "Dlaczego? Bo tak.\n" );
        printw( "Zabieraj sie do pracy.\n\n\n" );
       
        printw( "Ilosc internetow: " );
        printw( "%d", internety );
        printw( "\nInternety na sekunde: " );
        printw( "%g", ips );
        printw( "\nTwoj level: " );
        printw( "%s", level.c_str() );
        printw( "\nKliknij spacje zeby zebrac internety \n" );
        printw( "Zeby wyjsc kliknij escape \n" );
       
       
        if(( internety >= 10 ) &&( internety <= 20 ) &&( sklepkomunikatbyl <= 10 ) )
        {
            sklepkomunikat = 1;
            sklepkomunikatbyl++;
        }
        else
        {
            sklepkomunikat = 0;
        }
       
       
        if( internety >= 10 )
        {
            wejsciedosklepu = 1;
        }
       
        ///////////////////////////////////////////////////////////////////////////
       
        if( sklepkomunikat == 1 )
        {
            printw( "Czy wiedziales ze mozesz kupowac nowe przedmioty i ulepszenia?\n" );
        }
        if( wejsciedosklepu == 1 )
        {
            printw( "Zeby przejsc do sklepu wcisnij s\n" );
        }
       
        ///////////////////////////////////////////////////////////////////////////
       
        klawisz = getch();
        if( klawisz == 32 ) /* Spacja */ //Więcej Internetów
        {
            internety = internety + moreinternets;
            sleep( sleeptime );
            continue;
        }
        else
        if( klawisz == 27 ) //Wyjście
        {
            printw( "\n\tCzy napewno chcesz wyjsc? y/n" );
            int wyjscie;
            while( true )
            {
                wyjscie = getch();
               
                if(( wyjscie == 121 /* y */ ) ||( wyjscie == 89 /* Y */ ) )
                {
                    endwin();
                    return 0;
                }
                else
                if(( wyjscie == 110 /* n */ ) ||( wyjscie == 78 /* N */ ) )
                {
                    break;
                }
                else
                {
                    printw( "\nWcisnij y albo n\n" );
                    continue;
                }
            }
        }
        else
        if((( klawisz == 115 /* s */ ) ||( klawisz == 83 /* S */ ) ) &&( internety >= 10 ) )
        {
            clear();
            echo();
            while( true )
            {
                clear();
                printw( "SKLEP\n" );
                printw( "Co chcesz wybrac? Wpisz odpowiednia cyfre i zatwierdz enterem\n\n" );
                printw( "0. Wyjscie\n\n" );
                printw( "1. Noob niewolnik - +0.2 interneta na sekunde + level Internet Hunter | 5 internetow\n" );
                printw( "2. User niewolnik - +5 internetow na sekunde | 100 internetow\n" );
                printw( "3. Admin niewolnik -  +50 internetow na sekunde | 1000 internetow\n" );
                printw( "4. Zauploadowanie pliku na strone z torrentami - +200 internetow na sekunde + level Pirate | 3000 internetow\n" );
                printw( "5. Wlasna strona internetowa - +1000 internetow na sekunde + level Webmaster | 10000 internetow\n" );
                refresh();
                cin >> zakupy;
                noecho();
                if( zakupy == "0" )
                {
                    break;
                }
               
                //////////////////////////////////////////
               
                else
                if(( zakupy == "1" ) &&( internety >= 5 ) )
                {
                    ips = ips + 0.2;
                    internety = internety - 5;
                    printw( "\nDodano 0.2 internetow na sekunde\n" );
                    if( levelinternethunter == 0 )
                    {
                        level = "Internet Hunter";
                        levelinternethunter = 1;
                        printw( "Level up! Twoj nowy poziom to Internet Hunter!\n" );
                    }
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
                else
                if(( zakupy == "1" ) &&( internety < 5 ) )
                {
                    printw( "\nNie masz pieniedzy\n" );
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
               
                //////////////////////////////////////////
               
                else
                if(( zakupy == "2" ) &&( internety >= 100 ) )
                {
                    ips = ips + 5;
                    internety = internety - 100;
                    printw( "\nDodano 5 internetow na sekunde\n" );
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
                else
                if(( zakupy == "2" ) &&( internety < 100 ) )
                {
                    printw( "\nNie masz pieniedzy\n" );
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
               
                //////////////////////////////////////////
               
                else
                if(( zakupy == "3" ) &&( internety >= 1000 ) )
                {
                    ips = ips + 50;
                    internety = internety - 1000;
                    printw( "\nDodano 50 internetow na sekunde\n" );
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
                else
                if(( zakupy == "3" ) &&( internety < 1000 ) )
                {
                    printw( "\nNie masz pieniedzy\n" );
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
               
                //////////////////////////////////////////
               
                else
                if(( zakupy == "4" ) &&( internety >= 3000 ) )
                {
                    ips = ips + 200;
                    internety = internety - 3000;
                    printw( "\nDodano 200 internetow na sekunde\n" );
                    if( levelpirate == 0 )
                    {
                        level = "Pirate";
                        levelpirate = 1;
                        printw( "Level up! Twoj nowy poziom to Pirate!\n" );
                    }
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
                else
                if(( zakupy == "4" ) &&( internety < 3000 ) )
                {
                    printw( "\nNie masz pieniedzy\n" );
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
               
                //////////////////////////////////////////
               
                else
                if(( zakupy == "5" ) &&( internety >= 10000 ) )
                {
                    ips = ips + 1000;
                    internety = internety - 10000;
                    printw( "\nDodano 1000 internetow na sekunde\n" );
                    if( levelwebmaster == 0 )
                    {
                        level = "Webmastwer";
                        levelwebmaster = 1;
                        printw( "Level up! Twoj nowy poziom to Webmaster!\n" );
                    }
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
                else
                if(( zakupy == "5" ) &&( internety < 10000 ) )
                {
                    printw( "\nNie masz pieniedzy\n" );
                    printw( "Wcisnij dowolny klawisz\n" );
                    getch();
                    continue;
                }
            }
        }
    }
   
    endwin();
    return 0;
}
Chcę żeby internety na sekundę działały, i żeby co sekundę dodawała się wartość zmiennej ips do zmiennej internety.
Ten clicker to taki głupawy clicker, żart, przez to że ludzie mówią "Internety" i "w Internetach".
P-151211
Zibby
» 2016-08-29 16:57:57
Jak chcesz możemy coś zdziałać na skype albo mailu ( też jestem początkujący ), bo na razie nie jestem pewny jak to wszystko działa.
// edit usuwam maila
P-151214
« 1 » 2 3
  Strona 1 z 3 Następna strona