Ich will ein Kartenspiel schreiben.
Da wäre es doch "toll", wenn man da ein wenig rumklicken könnte. Karten würden z.b. ein hübsches Ziel abgeben!
Machen wir es kurz. Ich zeige euch einfach mal den Code. Ihr seid da schlauer als ich. (ein paar Proceduren versteh ich garnicht...)
Sicherheitshalber auch die glinit!
Achja, malen tut er gut.
Nur das mit dem anzeigen funzt nicht.
xs und ys werden mit von sdl gegeben! (xrel und yrel bei mousemotion-event)
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Wie du siehst, arbeite ich aber mit "karte" weiter und es gäbe 2 Möglichkeiten.
Die Proeceude übernimmt das subtrahieren oder ich übergebene einen subtrahierten wert.
Ich habe mich für das erstes entschieden...
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich muss gestehen dein Code ist ziemlich Wirr.
Ich würde dir an deiner Stelle raten deinen Code ein wenig umzubauen so lange du noch die Zeit hast. Als erstes würde ich nicht bei jedem Zeichnen vorher auch eine Selektion machen. Sondern nur dann, wenn sie auch tatsächlich nötig wäre. Noch als kleiner Tipp am Rande. Einrückungen und sinnvolle Variablennamen (Also kein a oder b verweden) helfen sowohl dir als auch uns. Vor allem wäre es auch wichtig, dass die Variablen halbwegs da deklariert sind wo sie verwendet werden. Ich persönlich versuche immer so wenig wie möglich globale Variablen zu benutzen, da globale Variablen den riesen Nachteil haben global zu sein.
In deiner Renderprocedure steht ein glRenderMode(GL_RENDER);. Das muss weg. Somit verlässt du deinen Selektionmodus wieder bevor du auch nur ansatzweise etwas gezeichnet hast.
Außerdem solltest du wenn du einen Namen Pushst diesen auch wieder Popen. Also am Ende der Procedur ein glPopName.
Das PushMatrix und PopMatrix für die Projecton in der Procedure glDraw (irreführender Name) kannst du eigentlich auch weglassen. Würde Matritzen sowieso recht sparsam pushen und popen, da das mit unter auch gut Zeit fressen kann. Vor allem wenn man es vermeiden könnte. Wie zum Beispiel bei dein einzelnen Karten könnte man das evtl auch noch vermeiden. Wobei ich dir da eh anraten würde deine Koordinaten 1 Mal fest zu berechnen und in Strukturen abzulegen. Ändert sich ja eigentlich nicht. Muss also nicht jedes mal neu berechnet werden, oder?
Das war eigentlich alles was ich so auf Anhieb gefunden habe.
JENER Code wurde größtenteils kopiert!
Ich schau mir deine Tipps mal an und die zur Selektion und Performance werde ich beherzigen.
Den Rest wohl eher nicht. Ich kann nämlich die Hetz gegen globale Variablen nicht verstehen. Shcon garnicht, wenn sie, wie in diesem Falle, so praktisch sind!
Edit: Fehler gefunden ich habe!
Ich habe einerseits deine Tipps beherrzigt.
Keine Reaktion
Dann habe ich den Winkel von 60 auf 45 Grad gestellt
Keine Reaktion
Dann habe ich bei SDL die Daten auf x und nicht aus xrel ausgelesen.
Es funzt!
Tja, OpenGL hat mich nicht im Stich gelassen, sondern SDL! ^^
Na egal, es funzt, danke für die Mühe!
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Du das ist alles andere als eine Hetze. Nenn es mal Erfahrungswerte. Wärend ich beruflicher als Softwareentwickler tätig bin habe ich schon häufiger gesehen, dass globale Variablen immer wieder zu Problemen führen. Es ist sicherlich das Einfachste globale Variablen zu verwenden. Aber in der Objektorientieren Zeit sehe ich einfach keine Notwendigkeit irgendwelche globalen Variablen zu verwenden.
Im Endeffekt ist es reine Gewöhnung diese Variablen in die Formklasse mit zu integrieren. Versuch mal mit deinem Code eine zweite Form1 aufzumachen. Das kannste vergessen. Die Klassen würden beide auf die selben Variablen zugreifen und sich selber alles zerschießen. Wenn sie aber Bestandteil der Methoden und Klassen sind, dann kannst du Problemlos 20 Forms aufmachen ohne, dass sich da auch nur ansatzweise erwas in die Quere kommt. Dazu kommt, dass bei richtig großen Projekten keine Sau mehr irgendetwas finden würde, wenn die Variablen überall im Code stehen würden.
Spätestens dann du auch mal anfängst richtig Objekt Orientiert zu Entwickeln wirst du mich verstehen. Das ist wirklich nicht böse gemeint. Aber einen sauberen und sicheren Programmierstil muss man sich erst einmal angewöhnen. Und das muss man erlernen. Bzw wenn einem niemand sagt, dass es etwas im argen ist, dann wird sich daran auch nichts ändern. Aber genau deswegen hab ich es ja gesagt. Wenn du die Vorschläge und Anmerkungen von erfahreren Entwicklern in den Wind schlägst und auf stur stellst, dann ist das deine Sache. Von mir war es nur gut gemeint.
Es sei folgende Situation:
Ich programmiere mein Spiel nicht Objectorientiert und ohne Forms.
Und es gibt DURCHAUS Variablen, die das GANZE Programm brauch.
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Das streitet ja niemand ab. Ich verwende ab und zu auch globale Variablen. Dabei handelt es sich aber meist nur um irgendwelche Klassen die Dinge verwalten und managen. Dabei hat man dann keine andere Wahl als diese global zur Verfügung zu stellen. Aber im Endeffekt war es von mir ein Vorschlag und es ist dein gutes Recht diesen nicht zu beachten. Es ist ja schließlich dein Programm. Aber eines sollte dir dennoch bewusst sein. Ich sage so etwas nicht einfach nur weil ich dich ärgern will oder so. Es hat schon seinen Grund. Irgendwann wirst du da auch noch hinter kommen.
Das streitet ja niemand ab. Ich verwende ab und zu auch globale Variablen. Dabei handelt es sich aber meist nur um irgendwelche Klassen die Dinge verwalten und managen. Dabei hat man dann keine andere Wahl als diese global zur Verfügung zu stellen. Aber im Endeffekt war es von mir ein Vorschlag und es ist dein gutes Recht diesen nicht zu beachten. Es ist ja schließlich dein Programm. Aber eines sollte dir dennoch bewusst sein. Ich sage so etwas nicht einfach nur weil ich dich ärgern will oder so. Es hat schon seinen Grund. Irgendwann wirst du da auch noch hinter kommen.
fullack. Kann das definitiv bestätigen. Selbst wenn man nicht beruflich programmiert, erweist es sich als extremst praktisch, so wenig' Variablen global zu definieren, wie möglich ist. Man findet sich nämlich tatsächlich auch in seinem eigenen Code besser zurecht, wenn die Variablen dort stehen, wo sie gebraucht werden. Und der Aufwand, diese Variablen in eine Klasse zu stecken, sei es deine Form oder sonstwas, ist minimal.
Es ist nicht mehr und nicht weniger als ein Ratschlag und du wirst früher oder später die gleiche Erfahrung machen...
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Naja, wie man es nimmt.
Wahrscheinlich HABT ihr recht, aber im Moment ist diese Wissen ohne Belang. Denn es bringt mir keine Vorteile. Später bei großen Projekten sicherlich.
Jetzt nicht.
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Naja, wie man es nimmt. Wahrscheinlich HABT ihr recht, aber im Moment ist diese Wissen ohne Belang. Denn es bringt mir keine Vorteile. Später bei großen Projekten sicherlich. Jetzt nicht.
Dann probier' mal, bei Perniciei Effector einen Mehrspieler-Modus über Netzwerk einzubauen
oder einfach mal ein zweites Fenster mit dem gleichen Inhalt wie im ersten darzustellen
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Naja, wie man es nimmt. Wahrscheinlich HABT ihr recht, aber im Moment ist diese Wissen ohne Belang. Denn es bringt mir keine Vorteile. Später bei großen Projekten sicherlich. Jetzt nicht.
Dann probier' mal, bei Perniciei Effector einen Mehrspieler-Modus über Netzwerk einzubauen oder einfach mal ein zweites Fenster mit dem gleichen Inhalt wie im ersten darzustellen
Weißt du, ich setze mir Ziele vorher...
Und beides war und wird nie Ziel sein! ^^
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.