Suche simple Grafik- u. Sound-API.



  • edit:
    ich denke, du solltest dir erst einmal die basics von c++ anschauen bevor du das hier versuchst (egal wie sehr du dir einredest, dass dein algorithmus perfekt ist, er ist es nicht). dann lernst du auch int-to-bool-konversionen, namensregeln und den unterschied zwischen vergleichen und zuweisungen kennen.

    Ich kenne den Unterschied! War grad auch geschockt was ich da geschrieben hatte
    Hätte statt "=", "==" schreiben wollen.
    War mir da schon klar, aber hatte ich vergessen, genau wie das "int" vor "main()" 😡
    Hab in dem halben Jahr in dem ich mich mit's Coden beschäftigte halt wirklich nur 4-5 kleine Skripts geschrieben,
    weshalb das halt noch nicht so im Blut war, schätz' ich.
    War außerdem ziemlich fragwürdig geschrieben, ich weiß.
    Hier hab ich grad noch mal'n Edit gemacht: http://www.c-plusplus.net/forum/p2375439#2375439
    Sorry, dass du dir grad grundlos das Maul zereißen musstest! 😞
    Und nein, ich denke nicht dass mein Algo perfekt ist, sondern nur vom Prinzip her vielversprechend!

    lol, dir ist schon bewusst, was eine GUI ist?
    

    Jetzt schon! Sorry, dachte das wär das gleiche wie API (Synonym),
    weil ich den im Kontext dessen gelesen hab hat es sich wohl bisschen zu sehr
    ins Unterbewusstsein eingenistet, wollte auch erst garnicht GUI schreiben war so'n spontaner Tick. 😋



  • sC++k schrieb:

    edit:
    ich denke, du solltest dir erst einmal die basics von c++ anschauen bevor du das hier versuchst (egal wie sehr du dir einredest, dass dein algorithmus perfekt ist, er ist es nicht). dann lernst du auch int-to-bool-konversionen, namensregeln und den unterschied zwischen vergleichen und zuweisungen kennen.

    Ich kenne den Unterschied! War grad auch geschockt was ich da geschrieben hatte
    Hätte statt "=", "==" schreiben wollen.
    War mir da schon klar, aber hatte ich vergessen, genau wie das "int" vor "main()" 😡
    Hab in dem halben Jahr in dem ich mich mit's Coden beschäftigte halt wirklich nur 4-5 kleine Skripts geschrieben,
    weshalb das halt noch nicht so im Blut war, schätz' ich.
    War außerdem ziemlich fragwürdig geschrieben, ich weiß.
    Hier hab ich grad noch mal'n Edit gemacht: http://www.c-plusplus.net/forum/p2375439#2375439
    Sorry, dass du dir grad grundlos das Maul zereißen musstest! 😞
    Und nein, ich denke nicht dass mein Algo perfekt ist, sondern nur vom Prinzip her vielversprechend!

    gut, nun musst du nur noch lernen wie bezeichner aussehen dürfen, wie man spät definiert, was std::endl wirklich ist und wie man leserlich einrückt, dann ist dein 26 zeilen programm schon fast durchschnittlich.



  • gut, nun musst du nur noch lernen wie bezeichner aussehen dürfen,
    

    Welchen Fehler hab ich da denn gemacht?

    ...wie man spät definiert, was std::endl wirklich ist..
    

    1. "spät definiert"?
    2. Zeilenumbruchsbefehl (ein grundsätzlich reservierter Grundbezeichner aus dem Namensraum "::std")



  • sC++k schrieb:

    gut, nun musst du nur noch lernen wie bezeichner aussehen dürfen,
    

    Welchen Fehler hab da denn gemacht?

    du hast versucht eine variable "verlängerung" zu nennen.

    sC++k schrieb:

    ...wie man spät definiert, was std::endl wirklich ist..
    

    1. "spät definiert"?
    2. Zeilenumbruchsbefehl (ein grundsätzlich reservierter Grundbezeichner aus dem Namensraum "::std")

    1. man definiert seine variablen erst genau da wo man sie auch tatsächlich braucht. "verlängerung" brauchst du erst bei zeile 18, definierst die variable aber schon bei zeile 8.

    2. nein, eben nicht. " << std::endl " bewirkt das selbe wie " << '\n' << std::flush ". du willst aber nicht flushen. ausserdem ist das kein "reservierter grundbezeichner". ich darf int endl; schreiben ohne probleme zu bekommen. es ist ein stream-manipulator im namensbereich std. der namensbereich std ist allgemein im c++-standard geschützt (bis auf einige ausnahmen, wie das komplette template-spezialisieren von std::swap).



  • Eieieiei .... da fehlen aber noch ein paar Jahre Lernzeit bis Du einen "performancestarken, effizienten Music Sequenzer u, Game Engine" angehen kannst.



  • lolalter schrieb:

    Eieieiei .... da fehlen aber noch ein paar Jahre Lernzeit bis Du einen "performancestarken, effizienten Music Sequenzer u, Game Engine" angehen kannst.

    Das würde natürlich fast jeder im Affekt sagen, der selbst jahrelange Erfahrung hat.
    Alles was ich darüber bisher gelernt hab ist dass es beim Programmieren um logische Konzepte u. Algoritmen geht und noch ein bisschen um das Prinzip des Programmierens allgemein. Inwiefern gewisse Librarys wie STL o. so vernetzt sind
    u. in welchen Namensraum irgendetwas steht hilft mir nicht dabei geniale Algoritmen zu proggen, alles was ich lediglich verstehen muss ist wie ich eine Funktion benutze. Genau wie es dem Gamer wenig bringt zu wissen wie das Spiel programmiert wurde um das Spiel gut zu spielen. Er muss nur wissen was im Spiel möglich ist u. was nicht.



  • asfdlol schrieb:

    sC++k schrieb:

    gut, nun musst du nur noch lernen wie bezeichner aussehen dürfen,
    

    Welchen Fehler hab da denn gemacht?

    du hast versucht eine variable "verlängerung" zu nennen.

    sC++k schrieb:

    ...wie man spät definiert, was std::endl wirklich ist..
    

    1. "spät definiert"?
    2. Zeilenumbruchsbefehl (ein grundsätzlich reservierter Grundbezeichner aus dem Namensraum "::std")

    1. man definiert seine variablen erst genau da wo man sie auch tatsächlich braucht. "verlängerung" brauchst du erst bei zeile 18, definierst die variable aber schon bei zeile 8.

    2. nein, eben nicht. " << std::endl " bewirkt das selbe wie " << '\n' << std::flush ". du willst aber nicht flushen. ausserdem ist das kein "reservierter grundbezeichner". ich darf int endl; schreiben ohne probleme zu bekommen. es ist ein stream-manipulator im namensbereich std. der namensbereich std ist allgemein im c++-standard geschützt (bis auf einige ausnahmen, wie das komplette template-spezialisieren von std::swap).

    Danke für den Hinweis! :p
    Und was macht "int endl"?



  • sC++k schrieb:

    Und was macht "int endl"?

    Definiert eine Variable vom Tzp int mit Namen endl.

    PS: Bitte nutze [ /quote ] zum Zitieren.



  • sC++k schrieb:

    lolalter schrieb:

    Eieieiei .... da fehlen aber noch ein paar Jahre Lernzeit bis Du einen "performancestarken, effizienten Music Sequenzer u, Game Engine" angehen kannst.

    Das würde natürlich fast jeder im Affekt sagen, der selbst jahrelange Erfahrung hat.
    Alles was ich darüber bisher gelernt hab ist dass es beim Programmieren um logische Konzepte u. Algoritmen geht und noch ein bisschen um das Prinzip des Programmierens allgemein. Inwiefern gewisse Librarys wie STL o. so vernetzt sind
    u. in welchen Namensraum irgendetwas steht hilft mir nicht dabei geniale Algoritmen zu proggen, alles was ich lediglich verstehen muss ist wie ich eine Funktion benutze. Genau wie es dem Gamer wenig bringt zu wissen wie das Spiel programmiert wurde um das Spiel gut zu spielen. Er muss nur wissen was im Spiel möglich ist u. was nicht.

    kompletter blödsinn. wenn du nicht alle sprachmittel kennst, dann weisst du auch nicht welches die optimale lösung ist. bei problemstellungen die über das eingeben einer zahl hinausgehen hat man viele wege und muss sich viele fragen zum softwaredesign stellen. du hast recht, dass die programmiersprache lediglich ein werkzeug ist um einen algorithmus zu implementieren. aber du unterschätzt die komplexität von c++. ausserdem sollte man beim programmieren auch andere dinge beachten und einhalten wie ausnahmesicherheit, leserlichkeit, geschwindigkeit, parallelisierbarkeit. diese vier kannst du nicht alleine durch den algorithmus gewährleisten.

    ich kann es dir ganz einfach aufzeigen:
    wie würde in groben zügen eine funktion aussehen, die von einer menge an zeichen das häufigste bestimmt und es (inkl. anzahl) zurückgibt (ausgehend davon, dass es immer eindeutig ist und es nicht zwei häufigste zeichen gibt)?

    sC++k schrieb:

    Danke für dn Hinweis! :p
    Und was macht "int endl"?

    eine instanz des typen int mit bezeichnung endl (wenn da noch das semikolon hinkommt welches auch in hingeschrieben habe).



  • knivil schrieb:

    sC++k schrieb:

    Und was macht "int endl"?

    Definiert eine Variable vom Tzp int mit Namen endl.

    PS: Bitte nutze [ /quote ] zum Zitieren.

    Und welche? 😉



  • unterschätzt die komplexität von c++

    Manche behaupten, es reicht int und vector zu kennen. 🙂 Ansonsten: Nicht labern, machen!



  • sC++k schrieb:

    knivil schrieb:

    sC++k schrieb:

    Und was macht "int endl"?

    Definiert eine Variable vom Tzp int mit Namen endl.

    PS: Bitte nutze [ /quote ] zum Zitieren.

    Und welche? 😉

    eine neue? was ist das bitte für eine frage, lol.

    edit:
    alleine die tatsache dass du dich atm darum kümmerst, mit welcher bibliothek du deine pixel darstellen willst beweist, dass du keine ahnung hast. du kannst einfach ein rendering-interface machen, worauf all deine algorithmen zugreifen. dann kannst du gemütlich für verschiedene bibliotheken verschiedene rendering-interface-implementierungen schreiben ohne deine genialen algorithmen anfassen zu müssen. klingt das nicht toll? dann fang jetzt am besten an und halte uns auf dem laufenden.



  • sC++k schrieb:

    lolalter schrieb:

    Eieieiei .... da fehlen aber noch ein paar Jahre Lernzeit bis Du einen "performancestarken, effizienten Music Sequenzer u, Game Engine" angehen kannst.

    Das würde natürlich fast jeder im Affekt sagen, der selbst jahrelange Erfahrung hat.
    Alles was ich darüber bisher gelernt hab ist dass es beim Programmieren um logische Konzepte u. Algoritmen geht und noch ein bisschen um das Prinzip des Programmierens allgemein. Inwiefern gewisse Librarys wie STL o. so vernetzt sind
    u. in welchen Namensraum irgendetwas steht hilft mir nicht dabei geniale Algoritmen zu proggen, alles was ich lediglich verstehen muss ist wie ich eine Funktion benutze. Genau wie es dem Gamer wenig bringt zu wissen wie das Spiel programmiert wurde um das Spiel gut zu spielen. Er muss nur wissen was im Spiel möglich ist u. was nicht.

    Du kriegst es nicht hin innerhalb der nächsten Jahre, das garantiere ich Dir.
    Man sieht am anderen Thread, dass selbst bei einfachsten Aufgaben noch anfängerhafte und umständidliche Logik bei Dir rauskommt (http://www.c-plusplus.net/forum/p2375439#2375439). Und Du sprichst von genialen Algorithmen für eine Game-Engine?

    Junge Junge...

    Aber Du bist nicht der Erste und auch nicht der Letzte, der sich ganz gewaltig verschätzt und nicht den Hauch einer Ahnung hat, was da noch so alles an Hürden auf Dich wartet.



  • sC++k schrieb:

    PixelErzeugen(X,Y,R,G,B);

    sC++k schrieb:

    Ich hab vor einen performancestarken, effizienten Music Sequenzer u, Game Engine zu programmieren,

    Alles klar. Besorg Dir das Buch über Supercodes. Wenn Du das Kapitel über sublineares Sortieren mit angepaßtem Bubblesort verstanden hast, klappt auch die Gamez-Engine wie von alleine.



  • ausnahmesicherheit, leserlichkeit, geschwindigkeit, parallelisierbarkeit. diese vier kannst du nicht alleine durch den algorithmus gewährleisten.
    

    Da hast du sicher Recht. Das ist auch der Grund warum ich in solchen Foren
    aktiv bin.

    ich kann es dir ganz einfach aufzeigen:
    wie würde in groben zügen eine funktion aussehen, die von einer menge an zeichen das häufigste bestimmt und es (inkl. anzahl) zurückgibt (ausgehend davon, dass es immer eindeutig ist und es nicht zwei häufigste zeichen gibt)?
    

    Das klingt für Aussenstehende wie: "Wo würde ein Hase hingehen, wenn er trotz Karottenhunger keine Sehnsucht verspürt Nahrung in seinen Magen zu lassen, und dabei auch noch schlafwandelt?" 😉

    Hier aber der Test meines Könnens(nur 'versucht', war anstrengend, aber gute Übung):

    #include <iostream>
    using namespace std; 
    int main() 
    {
    
    //Beispielzeichenmenge
    char Zeichenmaenge[5] = {'T', 'a', 's', 's' ,'e'};
    //Suchalgoritmus (T,a,s,e)
    short suchhier=0;
    char lagerhieraus=0;
    char vergleichdas=0;
    
    for(x=0; x=6; x++) {
    Zeichenmaenge[suchhier] += vergleichdas;
    
    bool obgefunden;
    while(obgefunden == true)
    {
    //T
    short T_Test=0;
    if(vergleichdas == 'T')
    { T_Test++; 
      obgefunden = true;   suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle
    }
    //a
    short a_Test=0;
    if(vergleichdas == 'a')
    { a_Test++; 
      obgefunden = true;   suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle
    }
    //s
    short s_Test=0;
    if(vergleichdas == 's')
    { s_Test++; 
      obgefunden = true;   suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle
    }
    //e
    short e_Test=0;
    if(vergleichdas == 'e')
    { e_Test++; 
      obgefunden = true;   suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle
    }
    }                         //Häufigkeitsvergleich
                             short T_Test2;
    						 if( T_Test > a_Test >= s_Test >= e_Test) {T_Test2++;}
    					     short a_Test2;
    						 if( a_Test > T_Test >= s_Test >= e_Test) {a_Test2++;}
    						 short s_Test2;
                             if( s_Test > a_Test >= s_Test >= e_Test) {s_Test2++;}
    						 short e_Test2;
    						 if( e_Test > s_Test >= a_Test >= T_Test) {e_Test2++;}
                             //welches nun des häufigste konkret ist
                             short haeufigstes ;
                             short haeufigstesAbfrage=0 ;
    
    while(haeufigstesAbfrage == 1)
    {      
              haeufigstesAbfrage = haeufigstesAbfrage + T_Test2;
    		  haeufigstes++;
    		  haeufigstesAbfrage = haeufigstesAbfrage + a_Test2;
    		  haeufigstes++;
    		  haeufigstesAbfrage = haeufigstesAbfrage + s_Test2;
    		  haeufigstes++;
    		  haeufigstesAbfrage = haeufigstesAbfrage + e_Test2;
    		  haeufigstes++;
    }
    	                    //Konsolenausgabe
    cout<< "Das, in dem Wort 'Tasse' am häufigsten vorkommende Zeichen ist:" << Zeichenmaenge[haeufigstes] << endl <<
    	   "Drücke Enter um das Programm zu beenden"
    cin.get();
    return 0; 
    }
    

    EDIT: UUPS, hab wohl 'ne "For-Schleife" vergessen!



  • Ich finde es ehrlich gesagt fragwürdig, dass alle hier versuchen mich zu entmutigen, dass ich es lieber aufgeben solle,
    obwohl mein Konzept, zumindest für das "Unlimited Detail" schon längst steht, wenn auch noch nicht im Code, größtenteils.
    Es ist möglich, Leute. Für diese Angelegenheit brauch' ich im Moment wirklich nur noch eine gute API für Pixel Darstellung u. Sound.
    Erspart euch eure Missmutmache. Sorry, es hat keinen Zweck mehr 😉
    Alles wird gut 😃



  • Wie gesagt, schau dir Pixeltoaster an. Oder SFML, damit geht dann auch die Sache mit der Audioausgabe...



  • 1. der code ist unleserlich eingerückt.

    2. in zeile 7 fehlt ein "=" und ein "<" ist zuviel. (letzteres verurteile ich nicht, ist offensichtlich ein flüchtigkeitsfehler)

    3. dein algorithmus funktioniert nur für mengen die aus den vier buchstaben 'T', 'a', 's', 'e' bestehen, nicht für beliebige zeichen.

    4. einen algorithmus sollte man nicht als teil eines programms programmieren sondern z.b. als funktion.

    5. dein bool-flag ist komplett nutzlos, da tut es auch ein break;.

    6. ich durchblicke dein system mit den ganzen hilfsvariablen nicht. die sind mit sicherheit unnötig und höchstwahrscheinlich falsch.

    7. der code kompiliert bei mir nicht weil irgendwo ein } fehlt. (das hat man davon wenn man so scheusslich einrückt)

    8. die vergleiche wie du sie in zeile 43 machst, machen höchstwahrscheinlich etwas anderes als du denkst.

    9. deine variable "haeufigstes" initialisierst du nicht obwohl du sie danach inkrementierst. (wieso eigentlich postinkrement obwohl du ein präinkrement willst?)

    10. "return 0;" ist in der main-funktion auch implizit, daher unnötig.

    edit: das ist bestimmt noch nicht alles, aber das was mir auf die schnelle auffällt.

    edit 2:
    hier mal eine safequote vom vierten edit, leider hat er inzwischen ein paar fehler rauskorrigiert (natürlich heimlich so dass es wirkt, als würde ich halluzinieren):

    sC++k schrieb:

    ausnahmesicherheit, leserlichkeit, geschwindigkeit, parallelisierbarkeit. diese vier kannst du nicht alleine durch den algorithmus gewährleisten.
    

    Da hast du sicher Recht. Das ist auch der Grund warum ich in solchen Foren
    aktiv bin.

    ich kann es dir ganz einfach aufzeigen:
    wie würde in groben zügen eine funktion aussehen, die von einer menge an zeichen das häufigste bestimmt und es (inkl. anzahl) zurückgibt (ausgehend davon, dass es immer eindeutig ist und es nicht zwei häufigste zeichen gibt)?
    

    Das klingt für Aussenstehende wie: "Wo würde ein Hase hingehen, wenn er trotz Karottenhunger keine Sehnsucht verspürt Nahrung in seinen Magen zu lassen, und dabei auch noch schlafwandelt?" 😉

    Hier aber der Test meines Könnens(nur 'versucht', war anstrengend, aber gute Übung):

    #include <iostream>
    using namespace std; 
    int main() 
    {
    
    //Beispielzeichenmenge
    char Zeichenmaenge[5] = {'T', 'a', 's', 's' ,'e'};
    //Suchalgoritmus (T,a,s,e)
    short suchhier=0;
    char lagerhieraus=0;
    char vergleichdas=0;
    Zeichenmaenge[suchhier] += vergleichdas;
    
    bool obgefunden;
    while(obgefunden == true)
    {
    //T
    short T_Test=0;
    if(vergleichdas == 'T')
    { T_Test++; 
      obgefunden = true;   suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle
    }
    //a
    short a_Test=0;
    if(vergleichdas == 'a')
    { a_Test++; 
      obgefunden = true;   suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle
    }
    //s
    short s_Test=0;
    if(vergleichdas == 's')
    { s_Test++; 
      obgefunden = true;   suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle
    }
    //e
    short e_Test=0;
    if(vergleichdas == 'e')
    { e_Test++; 
      obgefunden = true;   suchhier++; //hiermit zur nächsten Zeichenuntersuchungsstelle
    } 
                             //Häufigkeitsvergleich
                             short T_Test2;
    						 if( T_Test > a_Test >= s_Test >= e_Test) {T_Test2++;}
    					     short a_Test2;
    						 if( a_Test > T_Test >= s_Test >= e_Test) {a_Test2++;}
    						 short s_Test2;
                             if( s_Test > a_Test >= s_Test >= e_Test) {s_Test2++;}
    						 short e_Test2;
    						 if( e_Test > s_Test >= a_Test >= T_Test) {e_Test2++;}
                             //welches nun des häufigste konkret ist
                             short haeufigstes ;
                             short haeufigstesAbfrage=0 ;
    
    while(haeufigstesAbfrage == 1)
    {      
              haeufigstesAbfrage = haeufigstesAbfrage + T_Test2;
    		  haeufigstes++;
    		  haeufigstesAbfrage = haeufigstesAbfrage + a_Test2;
    		  haeufigstes++;
    		  haeufigstesAbfrage = haeufigstesAbfrage + s_Test2;
    		  haeufigstes++;
    		  haeufigstesAbfrage = haeufigstesAbfrage + e_Test2;
    		  haeufigstes++;
    }
    	                    //Konsolenausgabe
    cout<< "Das, in dem Wort 'Tasse' am häufigsten vorkommende Zeichen ist:" << Zeichenmaenge[haeufigstes] << endl <<
    	   "Drücke Enter um das Programm zu beenden"
    cin.get();
    return 0; 
    }
    

    Zuletzt bearbeitet von sC++k am 14:40:33 06.01.2014, insgesamt 4-mal bearbeitet



  • sC++k schrieb:

    Hier aber der Test meines Könnens(nur 'versucht', war anstrengend, aber gute Übung):

    LOL



  • OK, du bist echt noch nicht weit genug.
    Hattest du überhaupt schon Klassen?
    So in etwa kann das aussehen*:

    template <typename Iterator, typename CharT = typename std::remove_reference<decltype(*Iterator())>::type>
    CharT most_frequent(Iterator begin, Iterator end)
    {
    	if (begin == end)
    		throw std::logic_error("range empty");
    
    	std::unordered_map<CharT, std::size_t> counts;
    	std::for_each(begin, end, [&counts](CharT c){counts[c]++;});
    	return std::max_element(std::begin(counts), std::end(counts), [](std::pair<CharT, std::size_t> a,
    																	 std::pair<CharT, std::size_t> b)
    																  {return a.second < b.second;})->first;
    }
    

    * Mal eben auf die Schnelle geschrieben, könnten evtl. Fehler drin sein.

    Edit: Heute hab ichs aber mit dem Buchstaben weglassen.


Anmelden zum Antworten