JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Beispielprogramme

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 02.12.2002, 22:06    Titel: Beispielprogramme Antworten mit Zitat

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 Wink
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 03.12.2002, 12:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 09.12.2002, 09:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Revil
Senior JLI'ler



Anmeldedatum: 28.07.2002
Beiträge: 242

Medaillen: Keine

BeitragVerfasst am: 28.12.2002, 19:03    Titel: Antworten mit Zitat

wann kommt denn die neue spiele schleife =D ?

danke für das registry prog, genial!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 28.12.2002, 20:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 31.01.2003, 23:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 03.02.2003, 19:27    Titel: Antworten mit Zitat

JUHUU!

habs zwar erst jetzt entdeckt... aber egal Wink

Also, endlich mal ein gutes Beispiel für eine Super Spielschleife. Mit Multithreading Very Happy da hab ich bisher wenig Beispiele gesehen...

ich finds klasse Afe, VIELEN DANK!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 03.03.2003, 16:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 17.03.2004, 11:02    Titel: Programmaufteilung in Module Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.03.2004, 15:22    Titel: Antworten mit Zitat

Für diejenigen die Englisch können: Auf GameDev.net gibt es schon so ziemlich umfangreiches Tutorial: http://www.gamedev.net/reference/programming/features/orgfiles/
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 22.03.2004, 16:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dietmar Ferstl
Mini JLI'ler



Anmeldedatum: 19.07.2002
Beiträge: 47
Wohnort: Regensburg/Bayern
Medaillen: Keine

BeitragVerfasst am: 13.06.2004, 06:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 13.06.2004, 16:13    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum