Projekt Idee gesucht [momentan: 3D 4-Gewinnt]



  • hustbaer schrieb:

    2. Vorschlag (weil ich mir die Tage gerade mal sowas gewünscht hätte): ein "Smart-Standby" Programm.
    Heisst ich will meine Standby-Einstellung nicht umstellen (=Standby deaktivieren), wenn den PC mal irgendwas machen lasse was länger dauert. Weil ich dann nämlich immer vergesse zurückzustellen wenn die länger dauernde Sache fertig ist.
    OK, manche Programme verhindern den Standby von sich aus so lange sie was sinnvolles machen, aber andere nicht. HDD formatieren unter Windows 7 z.B. verhindert den Standby nicht. Viele ältere Anwendungen machen es auch nicht.

    In so einem Fall will ich das "Smart Standby" Programm starten, und das soll dann einfach gucken ob der PC gerade irgendwas tut was so aussieht als könnte es sinnvoll sein. D.h. das Programm sollte die CPU Auslastung überwachen, und wenn z.B. Auslastung >= 1/4 Core dann soll der Standby temporär verhindert werden. Genau so gehören dann IO Counter überwacht, also z.B. während eine Festplatte über einen bestimmten Zeitraum mehr als 1/4 der Zeit beschäftigt ist ebenso standby verhindern.

    Ggf. auch noch weitere Dinge, kommt drauf an was sich halt leicht und "non-intrusive" überwachen lässt.

    Und für Dinge die sich nicht über diverse Counter/... feststellen lassen einfach einen Counter, d.h. man sollte einstellen können "kein Standby für die nächsten N Minuten/Stunden". Und das soll dann genau 1x gelten bis der Timer abgelaufen ist.

    Das ganze natürlich ohne dass dabei zwischenzeitlich die Standby-Einstellungen umprogrammiert werden.

    Das ist grundsätzlich auch recht simpel, kann man aber auch viel Zeit investieren um es "ordentlich" zu machen.

    Eigentlich eine schöne Idee. Nur: dafür braucht man die WinAPI, um Standby zu beherrschen.

    Ich google mal die Funktionen, und schau mir an was geht. Dann konzipiere ich mal die GUI, wie das Programm intern arbeitet, welche Klassen usw.

    Bitte weitere Vorschläge.



  • Also wie gesagt, Smart Standby ist recht schwierig. Ich denke, man muss da in die Registry eingreifen... mal sehen...



  • Die WinAPI wirst du dafür massiv brauchen. Standby Verhindern ist grundsätzlich ziemlich einfach, da gibt's eigenen Funktionen mittels derer man das dem OS mitteilen kann.
    Dann müsste das Programm aber natürlich noch diverse Werte vom System ermitteln, eben wie stark die CPU gerade ausgelastet ist, wie viel IO in der letzten Zeit auf den Festplatten gemacht wurde etc. Und da wird man auch viel WinAPI dazu brauchen.



  • hustbaer schrieb:

    Dann müsste das Programm aber natürlich noch diverse Werte vom System ermitteln, eben wie stark die CPU gerade ausgelastet ist, wie viel IO in der letzten Zeit auf den Festplatten gemacht wurde etc. Und da wird man auch viel WinAPI dazu brauchen.

    Dafür gibt es SICHER Libs. Ich denke sogar, alles von dir genannte wird bereits von Qt abgedeckt.







  • Edit: THX, hat mich weiter gebracht 😃



  • Anderer Vorschlag: (was ich mir immer mal gewünscht habe)

    Ein 2D-Strategiespiel à la Warcraft 2, allerdings mit Schwerpunkt auf der KI. Mich hat es bei diesen Spielen immer gestört, dass die KI nur dumpf kleine Trupps zusammenstellt, um damit frontal anzugreifen.

    Also eher eine KI, die abwägt, ob ein Großangriff erfolgreich sein kann oder ob man besser z.B. das eigene Lager schützt. KI, die z.B. Ressourcenwege gezielt attakiert usw.

    Aber vielleicht ist das auch schon zu umfangreich.



  • Ich hätte übrigens das ein wenig intelligenter gemacht und dem Benutzer eine Liste anzeigt mit Prozessen die relevant sein können, wovon er die entschiedenen markiert.

    Heuristiken:
    - Programme, welche die Hardware belasten sind gerade gestartet (ggf. nur Elternknoten anzeigen)
    - andernfalls Programm deutlich mehr verbrauch als durchschnitt (Statistik - Varianz)[ich weiß - ist schwammig formuliert] Man kann sich ja anzeigen lassen wie viel gerade verbraucht wurde und wie viel bislang verbraucht wurde.
    - Wenn die markierten Programme alle beendet sind oder seit x Sekunden nichts mehr tun, dann wird deaktiviere Smart Standby.
    - ...



  • So würde schonmal ein GANZ GROBER ANFANG aussehen, was Smart Standby angeht (getestet):

    #define _WIN32_WINNT 0x0502
    #include <Windows.h>
    #include <iostream>
    #include <chrono>
    #include <conio.h>
    
    template< class Clock >
    class timer
    {
            typename Clock::time_point start;
    public:
            timer() :
            start( Clock::now() ) {}
    
            typename Clock::duration elapsed() const
            {
                    return Clock::now() - start;
            }
    
            double seconds() const
            {
                    return elapsed().count() * ((double)Clock::period::num / Clock::period::den);
            }
    
            double minutes() const
            {
                    return seconds() / 60;
            }
    
            double hours() const
            {
                    return seconds() / 3600;
            }
    };
    
    int main()
    {
            size_t h, m, s;
    
            std::cout << "For how long shouldn't be the Computer go into standby-mode?\n"
                         R"(Type in "hours [space] minutes [space] seconds [ENTER]")" << '\n';
    
            std::cin >> h >> m >> s;
    
            h *= 3600;
            m *= 60;
    
            std::cout << "\nPress anykey to start.\n";
            getch();
    
            SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10);
            std::cout << "Press anykey to abort.\n";
    
            timer<std::chrono::steady_clock> t;
    
            while(t.seconds() <= (h + m + s)
            and   !kbhit())
                    SetThreadExecutionState(ES_SYSTEM_REQUIRED);
    
            std::cout << "Done. The computer can now be set into standby mode by the system.\n";
            system("pause");
    }
    

    Da das sowieso nur für Windows geht - 🤡 kann ich auch alles Plattformspezifische verwenden. Aber geht gezeigtes auch auf Windows XP usw.? Ich kenn mich mit der WINAPI null aus...

    Was das Warcraft-Remake angeht: spinnste? Das ist definitiv zu schwer. Ich will etwas eher kleines, das ich in ca. einem Monat oder so zur final Version bringen kann 😉 Ich bin doch nur ein wanna-be, soviel Möglichkeiten hab' ich nicht 😃

    Das mit dem Prozesse auswählen ist eine Idee, die ich auch schon hatte - nur da müsste ich mich RICHTIG intensiv mit der WinAPI auseinandersetzen, und das war eigentlich nicht mein Ziel.



  • Obwohl, wenn ich mir diesen Scheißdreck mal ansehe, frag ich mich ob das überhaupt noch jemand spielt 😮



  • Ouh, geschafft! Ganz alleine 🙂 :stolz: :stolz: :stolz: 🕶
    Also, ich iteriere also durch die Prozesse:

    #define _WIN32_WINNT 0x0502
    #include <windows.h>
    #include <TlHelp32.h>
    #include <iostream>
    
    int main()
    {
            PROCESSENTRY32 prE;
    
            prE.dwSize = sizeof (PROCESSENTRY32);
    
            auto snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    
            if( Process32First(snapshot, &prE) )
                    std::cout << prE.szExeFile << '\n';
    
            while( Process32Next(snapshot, &prE ) )
                    std::cout << prE.szExeFile << '\n';
    }
    

    Das pack ich in eine Funktion die einen Container mit den Namen zurückgibt.
    Der User wählt einen Prozess aus; wenn der Prozess nicht mehr in der zurückgegebenen Liste (also nicht der Typ des Containers, neh 😉 ) ist, wird stand-smart-by (mein Name für die Software, falls ich das wirklich durchziehe) abgebrochen.



  • Sone schrieb:

    Was das Warcraft-Remake angeht: spinnste? Das ist definitiv zu schwer. Ich will etwas eher kleines, das ich in ca. einem Monat oder so zur final Version bringen kann 😉 Ich bin doch nur ein wanna-be, soviel Möglichkeiten hab' ich nicht 😃

    ja sorry, dachte mir schon, dass das wohl etwas zu überdimensioniert ist. Warcraft 2 war nur ein Beispiel. Das lief noch unter DOS, hat zu seiner Zeit aber viel Spaß gemacht, vor allem per Nullmodem-Kabel gegen menschliche Mitspieler.



  • Sone schrieb:

    Was das Warcraft-Remake angeht: spinnste? Das ist definitiv zu schwer. Ich will etwas eher kleines, das ich in ca. einem Monat oder so zur final Version bringen kann 😉 Ich bin doch nur ein wanna-be, soviel Möglichkeiten hab' ich nicht 😃

    ja sorry, dachte mir schon, dass das wohl etwas zu überdimensioniert ist. Warcraft 2 war nur ein Beispiel. Das lief noch unter DOS, hat zu seiner Zeit aber viel Spaß gemacht, vor allem per Nullmodem-Kabel gegen menschliche Mitspieler.



  • Mann, ich finde kein Tutorial zu SIGAR! Wobei es eigentlich das ist was ich für die CPU-Auslastung usw. brauche (habe keinen Weg in WinAPI gefunden).

    Edit: Doch, es geht mit WinAPI. Brauche SIGAR nicht mehr.



  • Wenn du Probleme hast, kannst du dir vielleicht das Tool hier anschauen:
    http://www.computerbase.de/forum/showthread.php?t=770730
    Übrigens sollte es genau das machen, was hustbaer wollte.



  • FreakY<3Cpp schrieb:

    Wenn du Probleme hast, kannst du dir vielleicht das Tool hier anschauen:
    http://www.computerbase.de/forum/showthread.php?t=770730
    Übrigens sollte es genau das machen, was hustbaer wollte.

    Ach Schreck! Was ich machen will gibt es schon!

    Jetzt ist alles wieder offen, also nach wie vor Spiele und Desktop-Anwendungen kommen in Frage, bitte Vorschläge!



  • Wisst ihr was? Ich mach jetzt heute einmal eine Stoppuhr! 😃 🙂
    Einfach nur aus Spaß. Mit einer schönen GUI, sehr genau usw. Heute Abend isses fertig, ich lade das Teil dann auf Sourceforge hoch (ohne Source, natürlich XD )



  • Kannst du nur C++?



  • Sone schrieb:

    Obwohl, wenn ich mir diesen Scheißdreck mal ansehe, frag ich mich ob das überhaupt noch jemand spielt 😮

    Hey, bleib locker! Das war ein Spitzen-Spiel. 👍


Anmelden zum Antworten