Autor Beitrag
Nagelbrett
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Do 10.04.03 23:05 
hi, also ich hab vor ein kleines spielchen zu programmieren, es soll wirklich nicht anspruchsvoll sein, ich will erstmal nur irgend eine kleine animation

leider hab ich auf dem gebiet mit delphi überhaupt keine erfahrung
ich hab mir schon ein paar sachen durchgelesen, wie z.b. diesen faq-thread über sprites (www.delphi-forum.de/viewtopic.php?t=75), nur leider passiert bei mir überhaupt nichts wenn ich den dortigen code ausführe... (sollte dann nicht die bitmap gezeichnet werden?)
und so ganz seh ich da auch nicht durch...

kann mir einer erklären wie man denn am besten vorgeht, angenommen ich hab 3 bilder, ein hintergrund bild, einen "gegenstand" und ich will dass dieser sich bewegt.. wie stell ich das erstmal an?

und wieso funktioniert das sprites-beispiel bei mir nicht? :/ (hab delphi 6)
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Do 10.04.03 23:27 
Hi,

du sagst zwardu möchtest nichts so anspruchsvolles, aber.. OpenGL :D

Da werd ich in den nächsten Tagen einen kleinen Einsteiger Kurs zu geben, der auf diesem tutorial hier basiert:
www.delphi-forum.de/viewtopic.php?t=9813

Vieleicht ist's ja was für dich?? :P

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Nagelbrett Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Do 10.04.03 23:52 
naja, danke für das angebot, ich werds mir sicher auch mal anschaun

aber ich bräuchte hier erstmal was einfacheres... :)
mars
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: Fr 11.04.03 09:11 
Also, ich glaub etwas einfacheres wirst du dazu nicht finden. Das Tutorial ist wirklich eine Schritt-für-Schritt-Anleitung und sollte auch von jemandem, der noch nie mit Delphi gearbeitet hat, durchgeführt werden können. (Nochmals danke an Aya :wink: )
fcg
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 360

WinXP
D3 Prof, D6 Pers
BeitragVerfasst: Fr 11.04.03 11:16 
du solltest auf jeden fall ersteinmla wenigstens ein paar grundlagen in Delphi können. Und da DelphiX viel mit OOP (Objekt Orientierte Programmierung) zu tun hat, würde ich mcir auch das ersteinmla anschauen.

Es gibt da durchaus gute Büche wi zum beispiel Delphi für Kids, oder 3d Grafik mit Delphi für Kids. Das ist jeweils ne Code-CD, plus eine Delphi 3 prof Version bei, mit der du deinen Spielchen auch verkaufen kannst.

fcg

_________________
.: Wer für alles offen ist, kann nicht ganz dicht sein! :.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 11.04.03 12:04 
Hallo,
fcg hat folgendes geschrieben:
Es gibt da durchaus gute Büche wi zum beispiel Delphi für Kids,

das gute an dem Buch ist die vollversion. Vom informationsgehalt ist es meiner Meinung nach sehr dürftig.

Gruß
Klabautermann
Nagelbrett Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Fr 11.04.03 12:45 
ja, also
delphi grundlagen hab ich natürlich schon, hab schon einiges an client/server applikationen geschrieben und das oop-prinzip hab ich auch verstanden

aber halt noch nichts in richtung spiele oder grafik
und wir sollen halt im informatikunterricht ein kleines spiel programmieren, das muss wie gesagt nichts kompliziertes sein (also bitte kein ogl oder so ;))
irgendwas wie z.b. tetris oder so... ich will nur wissen wie ich da am besten vorgehe...
ich könnte natürlich mit den delphi-eigenen befehlen arbeiten (ellipse, rectangle etc.) aber das is mir dann doch etwas zu eintönig, deswegen wollt ich mal wissen wie das mit sprites geht, um im falle eines tetris z.b. für die blöcke eigene grafiken verwenden zu können anstatt simple einfarbie rectangles...

und äh, was ist eigentlich "DelphiX" so genau?
fcg
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 360

WinXP
D3 Prof, D6 Pers
BeitragVerfasst: Fr 11.04.03 13:03 
Zitat:
Vom informationsgehalt ist es meiner Meinung nach sehr dürftig


na, aber für die allerersten Schritte...

Zitat:
Was ist DelphiX überhaupt


DelphiX ist die Delphi anbindung an DirectX.

hupps, falsch zitiert :oops:

_________________
.: Wer für alles offen ist, kann nicht ganz dicht sein! :.
ShadowCaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Fr 11.04.03 13:09 
Zitat:

DelphiX ist die Delphi anbindung an DirectX.


Naja um genau zu sein, DelphiX ist nur eine Anbindung an DirectX. Es gibt noch andere. Eine davon sind die Jedi-Headers. (homepage hab ich jetzt nicth im Kopf)

Infos findet ihr im neobrothers Forum auf [url]www.neobrothers.de[/url]. In jedem Falle würd ich die Jedi-Headers den DelphiX-Komponenten vorziehen (da immer auf dem neuesten Stand und echt schnell :wink: ). Also das Forum ist echt genial wenn ihr Hilfe braucht für Spieleprogrammierung und DirectX in Delphi (naja, was red ich hier? weiß doch eh fast jeder).
Nagelbrett Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Fr 11.04.03 15:03 
ja well, jetzt weiß ich zwar was DelphiX ist, aber da ich das sowieso nicht unbedingt benutzen will, komm ich so auch nicht weiter

könnte mal bitte jemand auf mein eigentliches problem eingehen? :?
gibts da nicht irgendwo mal 'nen fertiges beispiel (mit code)? also von irgend so einem sprites-spielchen

gleich ein buch möcht ich mir da auch nicht kaufen, da muss es doch auch im netz etwas geben..
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 11.04.03 15:37 
Hallo,
Nagelbrett hat folgendes geschrieben:
gibts da nicht irgendwo mal 'nen fertiges beispiel (mit code)? also von irgend so einem sprites-spielchen

gucke mal auf deiner Festplatte unter {Delphi}\Demos\EarthPng eventuell musst du die Geschwindigkeit noch in der IdleLoop anpassen.

Gruß
Klabautermann
ShadowCaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Fr 11.04.03 15:52 
stell doch einfach mal die Fragen im neobrothers forum. Also die jediheaders sind echt gut zu verstehen und du wirst schnell lernen, wie die einzelnen Sachen gehen. Die Leute werden dir sicher gern weiter helfen. :wink:
Nagelbrett Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Fr 11.04.03 23:18 
hmmm, also ich hab jetzt einfach mal auf *meine weise* angefangen
ich würds gern erstmal ohne irgendwelche header/libs/sonstwas machen, sondern nur mit den delphi eigenen, bescheidenen mitteln ;)

ich hab jetz folgendes angestellt:
- die spielfigur ist ein simlpes (transparentes) TImage, das ich durch ändern von Left über die Form bewegen kann. das Picture wird ab und zu ausgetauscht, wenn sie sich dreht und so...
- die "spielfigur" kann bomben abwerfen, die ebenfalls TImages sind und durch einen eigenen TTimer ebenfalls über Top auf dem bildschirm nach unten bewegt werden und irgendwann dann explodieren..

das funktioniert bisher auch prima, ohne flackern oder so (hab Form1.DoubleBuffered auf True gesetzt)
ABER: sobald ich für die szene ein hintergrundbild in form eines weiteren, großen TImages (640x480) auf die form hau, wird das ganze teilweise arg langsam... es läuft bei mir zwar noch gut, aber die CPUlast steigt von 0% ohne hintergrundbild auf gut 80-99% wenn ich die spielfigur beweg und gleichzeitig noch eine bombe abwerfe mit hintergrundbild, und ich könnte mir vorstelln, dass das auf langsameren rechnern dann nicht mehr gescheit läuft

ich benutze übrigens kein ApplicationEvents.OnIdle, da ich die TImages ja nicht ständig neuzeichne in dem sinne, sondern nur ihre position verändere... und das geschieht ja nicht immer, sodass die CPUlast wenn nichts passiert auch auf 0 bleibt

also meine fragen: a) was gäbe es an diese methode zu bemängeln und b) wie mach ich es dass das ganze mit hintergrund bild nicht so derb langsam wird?
ich hab gelesen, wenn nur das neugezeichnet wird, was sich auch wirklich verändert hat, bekommt man logischerweise nen geschwindigkeitsboost, aber in meinem fall wird doch sowieso nicht ständig ALLES neugezeichnet, da das was sich verändert ja sowieso nur kleine TImages AUF einem großen sind... oder lieg ich da in meiner denkweise falsch?

und c) ist ein Timer mit einem festen Intervall nicht besser als dieses ApplicationEvents.OnIdle? ich mein, beim timer sollte das spiel dann doch wenigstens immer gleich schnell laufen... mit dem onidle läuft das spielgeschehen doch dann viel langsamer ab wenn die CPU mal nicht nachkommt... und diese geschwindkeitsschwankungen empfind ich als störend...
ich mein, in modernen spielen ist es doch im normalfall auch so dass das spiel selbst immer gleichschnell läuft, unabhängig von den FramesPerSecond die gerendert werden... aber mit OnIdle ist das irgendwie nicht gewährleistet :?:
ShadowCaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 312



BeitragVerfasst: Mo 14.04.03 09:45 
Eine einfache Lösung ist mit Gettickcount auf die tausendstel Sekunde genau zu berechnen wie lang der PC gebraucht hat, um deine Szene das letzte Mal zu zeichnen. Dann definierst du dir einen eine Wartezeit und dann muss das System das nächste Mal diese Zeit warten, bevor es die Szene neu zeichnet. Nur die Zeit solltest du so definieren, dass das System immer nach kommt, das heißt weniger Szenen als vorher gezeichnet werden. Naja, wie man das genau realisiert, weiß ich nicht mehr. Frag doch mal im neobrothers-forum.
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 14.04.03 09:51 
Hi,

das mit dem Hintergrundbild wird an der größe des Bildes liegen.

Wenn du auf diesem Bild was hin und herbewegst, wird das Hintergrundbild ebenfalls neugezeichnet, und das kann wenn es sehr oft sehr schell sein muß schon arg langsam sein... ;)

Die einzige lösung die mir so spontan einfällt... teil dein Hintergrundbild mal in ganz viele 50x50 große TImages auf (Natürlich das Hintergrundbild an sich auch in 50x50 große schnipsel zerschneiden)... dann sollte es um einiges schneller gehen ;)

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!