AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2D Game

Ein Thema von Maltimore · begonnen am 2. Mär 2008 · letzter Beitrag vom 3. Mär 2008
Antwort Antwort
Seite 2 von 2     12   
Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#11

Re: 2D Game

  Alt 2. Mär 2008, 17:26
also, erstmal an xzise:
du musst dabei bedenken, dass ich n 'noob' bin wie stellste dir das mit dem playerspeed konkret vor? könnte ich da evtl. bissl code haben? ich peils wirklich grad nich das mit den beiden integer is ne super idee, mach ich sofort.



zu dominikkv:
wir scheinen das gleiche zu denken - genau was du eben gesagt hast hab ich inzwischen gemacht. also jetzt wird mit dem onkeydown ereignis ein timer geenabled oder wie man das sagt - also form1.timer1.enabled := true ihr kennt das ja sicher. jetz kann ich schön sagen wie oft das gemacht wird, und wenn öfter als alle 40 ms das bild erneuere, müsste es für das menschliche auge doch wie bewegung wirken - oder habe ich mich da verrechnet?? nun hab ich nur ein problem.. ich kann nicht mehr schreiben if key = 'a' then... sondern soll wohl irgendwelche ascii zeichen nehmen oder so.. hab mich da ma bei google umgeschaut aber nur so ne sonderzeichen gefunden... könnte mir da jemand nen link zu ner vernünftigen tabelle geben?? oder wenn ich komplett aufm holzweg bin mir sagen was ich schreiben muss um genau die taste a bzw. s und d und leertaste (für springen) abzufragen???

achja, und erstmal vielen dank an alle die mir schon geholfen haben
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#12

Re: 2D Game

  Alt 2. Mär 2008, 18:22
ich würde das so machen:
Delphi-Quellcode:
const
  Speed = 5;

procedure TForm1.tmr1Timer(Sender: TObject);
var
  SpeedX, SpeedY: Integer;
begin
  SpeedX := 0;
  SpeedY := 0;

  if GetAsyncKeyState(VkKeyScan('d')) <> 0 then
    Inc(SpeedX, Speed);
  if GetAsyncKeyState(VkKeyScan('a')) <> 0 then
    Dec(SpeedX, Speed);
  if GetAsyncKeyState(VkKeyScan('s')) <> 0 then
    Inc(SpeedY, Speed);
  if GetAsyncKeyState(VkKeyScan('w')) <> 0 then
    Dec(SpeedY, Speed);

  shp1.Left := shp1.Left + SpeedX;
  shp1.Top := shp1.Top + SpeedY;
end;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#13

Re: 2D Game

  Alt 2. Mär 2008, 18:32
Zitat von Maltimore:
also, erstmal an xzise:
du musst dabei bedenken, dass ich n 'noob' bin wie stellste dir das mit dem playerspeed konkret vor? könnte ich da evtl. bissl code haben? ich peils wirklich grad nich das mit den beiden integer is ne super idee, mach ich sofort.[...]
Inzwischen hat dominikkv das umgesetzt
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#14

Re: 2D Game

  Alt 2. Mär 2008, 18:54
könntest du das vllt kommentieren oder so?
ich peils wieder nicht... also getasynckeystate... gibt vermutlich 0 oder 1 zurück je nach dem ob der key gedrückt ist wa?
und dann inkrementierst du speed und speedx obwohl speed ne konstante ist?? dat kann ja irgendwie nicht sein ?!
shp sind dann deine images? aber so wie ich das jetz verstanden habe ist das doch so das man je länger man z.B. d drückt schneller wird oder? und wenn man dann nach links gehen will muss man erstmal ewig lange a drücken damit er wieder bremst und langsam in die andere richtung geht..
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#15

Re: 2D Game

  Alt 2. Mär 2008, 19:04
Zitat von Maltimore:
[...]ich peils wieder nicht... also getasynckeystate... gibt vermutlich 0 oder 1 zurück je nach dem ob der key gedrückt ist wa?[...]
Genau
Zitat von Maltimore:
[...]und dann inkrementierst du speed und speedx obwohl speed ne konstante ist?? dat kann ja irgendwie nicht sein ?![...]
Nein! "Inc(a, b)" erhöht a um b: Also a := a + b! Und wenn du b nicht setzt, ist b = 1

Zitat von Maltimore:
shp sind dann deine images? aber so wie ich das jetz verstanden habe ist das doch so das man je länger man z.B. d drückt schneller wird oder? und wenn man dann nach links gehen will muss man erstmal ewig lange a drücken damit er wieder bremst und langsam in die andere richtung geht..
Nein Guck mal in die beiden Zeilen nach "begin". Da wird die Geschwindigkeit auf 0 gesetzt.

Hast du den Bedacht, dass das in einer Art Schleife abläuft (wegen des Timers)?

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#16

Re: 2D Game

  Alt 2. Mär 2008, 19:17
ok..^^
Du hast eine Konstante Speed, dort kannst du zur Designtime einstellen wie schnell sich dein Image bewegen soll.
Jetzt haben wir einen Timer der sich um das bewegen der Bilder kümmert.
Und zwar kann sich das Bild in X und in Y-Richtung bewegen.
Den jeweiligen Wert um den es sich bewegt speichern wir in SpeedX, SpeedY.
Zuerst müssen wir die beiden Variablen iniziiren (schreibt man das so? ô_0) weil am Anfang ein Zufälliger Wert drinnsteht.
Delphi-Quellcode:
SpeedX := 0;
SpeedY := 0;
Dann schauen wir uns an ob gerade die taste d gedrückt wird:
if GetAsyncKeyState(VkKeyScan('d')) <> 0 then
Zitat von DelphiHilfe:
The GetAsyncKeyState function determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.
Zitat von DelphiHilfe:
The VkKeyScan function translates a character to the corresponding virtual-key code and shift state for the current keyboard.
Wenn ja wird SpeedX um den Wert Speed erhöht.
Dann schauen wir uns an ob die Taste a gedrückt ist.
Wenn ja wird SpeedX um Speed wieder erniedrigt.
-> Wenn a und d gedrückt sind ist SpeedX = 0.
Das gleiche machen wir in Y-Richtung.
Und am Schluss bewegen wir das Bild:
Delphi-Quellcode:
shp1.Left := shp1.Left + SpeedX;
shp1.Top := shp1.Top + SpeedY;
(ob das jetzt shp1 oder image1 heißt ist ja egal^^)

für den Rest siehe ein Post über mir^^
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#17

Re: 2D Game

  Alt 2. Mär 2008, 20:10
WOOOOOOHAAAA!!! wie geil ist das denn!!!!

erst hab ich nur den post von xzise gelesen, und schon voll viel verstanden, und dachte ich hätte alles verstanden....
dann wollte ich posten dass ichs verstanden habe und dann wollt ich noch mal nachgucken was er genau geschrieben hat und seh da was von dominikkv und denk mir so hä der hat doch gar nichts geschrieben also wieder zurück, refresh. hm ne immer noch nix. wtf. also wieder auf antwort erstellen und da wars wieder was er geschrieben hat. und dann so ganz langsam denk ich so hmmm. alle mir bekannten foren machen nach einer bestimmten seiten/zeilenanzahl ne neue seite auf.. warum dieses nicht ?? Jajaja, mir immer alles ganz vorsichtig erklären .

Naja. jetz hab ichs alles verstanden. und wenn ich das mit dem vergleiche, was ich vorher geschrieben hab.. da hab ich bei jeder bewegung in x richtung einfach alle images die ich hatte (waren da wohl 7) verschoben.. dann erstmal alle gehidet, dann die postion von einem nochma verschoben, das dann angezeigt und wieder alle verschoeben, und wieder gehidet und ich hab n relativ neuen pc, der hat das sogar mitgemacht

danach hab ichs ja schon selbst maßgeblich verbessert, aber jetz mit x bzw. y koordinate nich in image1.left bzw. top zu speichern sondern als integerwerte (worauf ich auch selbst hätte kommen können ) und dann durch einen timer der mir die abfrage macht, sodass ich selber einstellen kann wie oft überprüft wird, ob ein key gedrückt wurde, und mit der behebung des bugs vom anfang ist das ja ma einfach soo geil

macht sich richtig, das programm so langsam.. naja sitz auch schon seit locker 10 stunden dran(also gestern und heute).

aber ma im ernst, richtig geil eure vorschläge!! das forum ist echt verdammt sinnvoll!

Ich werd euch gern noch weiter mit Fragen zumüllen ( xD ) aber ich glaub erstmal ist alles beantwortet.. muss ich da was closen oder so?
  Mit Zitat antworten Zitat
Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#18

Re: 2D Game

  Alt 3. Mär 2008, 15:20
so. hm. auf lob scheint ihr ja nicht zu reagieren
aber es geht auch schon weiter!

also erstmal möchte ich bei meinem tollen spiel jetzt auch gegner einbinden, denen man dann z.B. ausweichen muss oder so, die vllt auch schießen können. habt ihr ne idee welche komponente ich dafür verwenden könnte?? weil ich denk ma da könnte der pc leicht überlastet sein wenn ich alle 10 ms schon mal die bewegung mache, dann noch überprüfe ob sich mein image mit den images der gegner oder mit den images der schüsse der gegner überschneidet (so dass meine figur stirbt ) also im klartext ich möchte ne komponente um relativ schnell fliegende punkte oder so was darzustellen und möglichst nicht so ne aufwändige komponente wie image.

außerdem möchte ich eine neue klasse (oder nennt man das typ??) erstellen, sodass ich im designmodus einfach nur noch einer funktion ein rechteck oder einen kreis übergeben muss der dann als hindernis angesehen wird.. hab leider kein plan wie das geht, so weit sind wir im informatik kurs noch nicht....

mfg
Maltimore

edit: achja, momentan mache ich es so, dass ich wenn ein knopf gedrückt wird einen timer starte, der im intervall von 10 ms meine figur verschiebt. und irgendwie ist das noch nicht so richtig das gelbe vom ei, weil er zeigt anscheinend nur jede 10. bewegung ungefähr an, manchmal laggt es sogar schon (bei einem 2D game!!! wtf!!!) und da wüsste ich gerne ob ihr dagegen was habt.. also nen tipp
  Mit Zitat antworten Zitat
Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#19

Re: 2D Game

  Alt 3. Mär 2008, 17:02
so, jetz mach ichs ganz anders..
ab jetz bewegt sich der hintergrund und die figur bleibt in der mitte
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz