Pętla działająca w tle
Ostatnio zmodyfikowano 2016-08-29 18:25
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. |
|
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. |
|
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. |
|
Zibby |
» 2016-08-29 15:52:57 nie można tego zrobić w ten sposób? int record_dodawanie = 0;
glowna petla programu { if( clock() - record_dodawanie > 1000 ) { zmienna += 10; record_dodawanie = clock(); } }
|
|
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? |
|
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. #define _WIN32_WINNT 0x0500
#include <iostream> #include <ctime> #include <windows.h>
using namespace std;
int main() { HWND Hwnd = GetConsoleWindow(); int zmienna = 0; int record_dodawanie = 0; bool nacisniety_przycisk = true; while( zmienna < 100 ) { int record = clock(); if( GetAsyncKeyState( VK_LBUTTON ) && nacisniety_przycisk == false ) { zmienna++; system( "cls" ); cout << zmienna; nacisniety_przycisk = true; } else if( !GetAsyncKeyState( VK_LBUTTON ) ) nacisniety_przycisk = false; if( record - record_dodawanie > 1000 ) { zmienna++; system( "cls" ); cout << zmienna; record_dodawanie = record; } } return 0; }
|
|
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: #include <iostream> #include <string> #include <ncurses.h> #include <unistd.h>
#define ESC 27
using namespace std;
int main() { initscr(); keypad( stdscr, TRUE ); noecho(); unsigned long long internety; internety = 0; int moreinternets; moreinternets = 1; int klawisz; string level; level = "Nikt"; float ips; ips = 0; string zakupy; float sleeptime = 1; bool sklepkomunikat = 0; int sklepkomunikatbyl = 1; bool wejsciedosklepu = 0; 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 ) { internety = internety + moreinternets; sleep( sleeptime ); continue; } else if( klawisz == 27 ) { printw( "\n\tCzy napewno chcesz wyjsc? y/n" ); int wyjscie; while( true ) { wyjscie = getch(); if(( wyjscie == 121 ) ||( wyjscie == 89 ) ) { endwin(); return 0; } else if(( wyjscie == 110 ) ||( wyjscie == 78 ) ) { break; } else { printw( "\nWcisnij y albo n\n" ); continue; } } } else if((( klawisz == 115 ) ||( klawisz == 83 ) ) &&( 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". |
|
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 |
|
« 1 » 2 3 |