|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 02.12.2002, 22:06 Titel: Beispielprogramme |
|
|
Hallo, Leuts:
Ich werde hier von Zeit zu Zeit ein paar Codebeispiele präsentieren, die häufige Fragestellungen behandeln.
Als erstes habe ich aus meiner Klassensammlung ein Sahnehäubchen rausgesucht: Eine Klasse, mit der es ganz einfach ist, Daten in die Registry zu schreiben und wieder daraus zu lesen. Das Beispielprogramm ist derzeit in der Kontrollphase - Ihr wollt ja sicherlich nicht eure Registry zerschiessen
Als nächstes werde ich mich um die "bessere Spieleschleife" kümmern, aber das kann noch eine Weile dauern, da ich ja hauptsächlich an meinem eigenem Projekt arbeite und die Beispiele hier nur nebenbei erstelle, wenn mal gerade Luft ist.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 03.12.2002, 12:09 Titel: |
|
|
Zuerst nochmal ein altes Beispielprogramm:
Rotation
Es zeigt, wie man ein Bitmap drehen kann. Nebenbei kann man auch erkennen, wie man Farbinfos aus einem DC bekommt und verarbeitet.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
Zuletzt bearbeitet von AFE-GmdG am 17.03.2003, 13:58, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 09.12.2002, 09:09 Titel: |
|
|
Registry-Beispiel:
registry_vc6.zip
Dieses Beispielprogramm zeigt, wie man Strings und 32-Bit-Integers in der Registry unterbringen kann. Ganz nebenbei sieht man auch, wie man ein Projekt mit mehreren Quellcodedateien ordendlich formatiert.
AFE-GmdG
PS.: Unter www.jliforum.de/afe-gmdg/index.html habe ich eine minimalistische Homepage eingerichtet, die alle Beispielprogramme auflistet. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Revil Senior JLI'ler
Anmeldedatum: 28.07.2002 Beiträge: 242
Medaillen: Keine
|
Verfasst am: 28.12.2002, 19:03 Titel: |
|
|
wann kommt denn die neue spiele schleife =D ?
danke für das registry prog, genial! |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 28.12.2002, 20:47 Titel: |
|
|
Das Programm befindet sich in der Qualitätskontrolle. Ihr wollt ja sicherlich keinen Schmu bekommen und es soll trotzdem verständlich sein.
Wie soll ich euch denn erklären, wie das Programm funktioniert, wenn ich sogar Christian sagen muss, warum ich dies oder jenes so programmiert wird.
Eine Dokumentation dazu muss ja auch verständlich sein.
Also bitte ich euch um etwas Geduld.
AFE-GmdG
[Edit]
Das Programm ist die GameLoopDemo - Muss dazugesagt werden, da durch das löschen überflüssiger Posts der Zusammenhang fehlte.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
Zuletzt bearbeitet von AFE-GmdG am 31.01.2003, 23:39, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 31.01.2003, 23:32 Titel: |
|
|
SOOO.
Ich hab mich an mein Passwort erinnert und konnte das Projekt erfolgreich hochladen.
Die GameLoopDemo erreicht Ihr hier
Infos zum Code stehen in GameLoopDemo.txt sowie in den einzelnen Quellcodedateien.
Ich weise nochmal darauf hin, das der Code eine Beta-Version ist und sicherlich noch ver(schlimm)bessert werden könnte. Fragen zu dem Code, die an alle gerichtet sind, bitte in einem neuem Thread bei "Sprachen" oder bei "DirectX, OpenGL" posten.
AFE-GmdG
[Edit]
Ich habe unwichtige Posts aus diesem Thread rausgenommen, da es hier wirklich nur um die Beispielcodes geht.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 03.02.2003, 19:27 Titel: |
|
|
JUHUU!
habs zwar erst jetzt entdeckt... aber egal
Also, endlich mal ein gutes Beispiel für eine Super Spielschleife. Mit Multithreading da hab ich bisher wenig Beispiele gesehen...
ich finds klasse Afe, VIELEN DANK! |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 03.03.2003, 16:35 Titel: |
|
|
Hallo,
habe heute die Registry-Klasse in einem Projekt eingesetzt. Lief auf Anhieb. Ich habe die Klasse so erweitert, dass man nicht bei HKEY_LOCAL_MACHINE beginnen muss und habe außerdem dafür gesorgt, dass man Binärwerte (anstat DWORD und Strings) zurückbekommt.
Christian |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 17.03.2004, 11:02 Titel: Programmaufteilung in Module |
|
|
Am Wochenende habe ich genug Zeit, um mich mal mit diesem Thema genauer auseinanderzusetzen. Ein Projekt in mehrere Module aufzuteilen ist Prinzipiell gar nicht so schwer, es erfordert allenfalls ein wenig Denkarbeit vor dem Programmieren.
Am Besten ist es, wenn man in den Hauptprogrammquellcode nur die (Win)Main-Methode und ein oder zwei Hilfsfunktionen hineintut, die Direkt was mit der (Win)Main-Methode zu tun haben.
Alles andere sollte in extra Quellcodedateien gepackt werden, immer schön in Klassen gekapselt. (Im Prinzip für jede Klasse eine Quellcodedatei sowie ein Klassenheader)
Headerdateien müssen immer mit einer Sicherheit versehen werden, damit sie nicht doppelt includiert werden. (entweder #pragma once oder #ifndef...) Dateien, die von Headern includiert werden, sollten / *dürfen* nur andere Header sein - und zwar nur die Header, die von diesem Header benötigt werden. (benötigt im Header, nicht in der zugehörigen C++-Datei - die können dort includiert werden)
Header, die nur innerhalb einer C++-Datei benötigt werden, sollten auch nur dort includiert werden.
Das letzte Problem ist nun nur noch ein Zirkelbezug in Headern.
Wenn Klasse A Klasse B benötigt und Klasse B Klasse A, dann includiert man im Header von Klasse A nicht den Header von Klasse B sondern schreibt im Header nur eine Vorwärtsdeklaration von Klasse B und umgekehrt:
ClassA.h Code: | #pragma once
class B;
class A {
private:
B m_B;
public:
A();
~A();
} | ClassB.h Code: | #pragma once
class A;
class B {
private:
A m_A;
public:
B();
~B();
} |
AFE-GmdG
PS.: Sollte das nicht reichen, werde ich mich am Samstag hinsetzen und ein "Aufteilung in Module - Tutorial" schreiben. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 22.03.2004, 16:09 Titel: |
|
|
Die Modulaufteilung ist noch im Schreiben, ich habe erst mal schnell (für Nathar) ein Beispielprogramm geschrieben, dass Doppelpufferung im GDI zeigt und somit flackern verhindert.
http://www.jliforum.de/afe-gmdg/GdiDblBuffer.rar
AFE-GmdG
PS.: Das Projekt verwendet ebenfalls Modulaufteilung, allerdings ohne zirkuläre Beziehungen - und es fehlt natürlich ein Tutorialtext... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Dietmar Ferstl Mini JLI'ler
Anmeldedatum: 19.07.2002 Beiträge: 47 Wohnort: Regensburg/Bayern Medaillen: Keine
|
Verfasst am: 13.06.2004, 06:38 Titel: |
|
|
Hallo,
habe mir gerade das "Bitmap-Dreh-Programm" angesehen. Mit den ewig vielen SIN/Cos-Berechnungen und den Type-casts dürfte das doch ewig langsam sein. Was soll denn da die konkrete Anwendung sein ?
Ausserdem funktioniert das soweit ich gesehen habe nur in 2D.
CU
D. |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 13.06.2004, 16:13 Titel: |
|
|
Das Programm war aus der Prä-DirectX-Ära und für Win32. Damals war es (fast) nur so möglich, Bitmaps zu drehen... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|