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 1 von 2  1 2      
Maltimore

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

2D Game

  Alt 2. Mär 2008, 12:39
Hey!

Ich bin ein ganz neuer Programmierer, habe jetzt seit einem halben Jahr Informatik, aber leider nicht sooo die Ahnung.
Bei DP (dass das Delphi Praxis heißt hab ich jetz schon rausgefunden) bin ich ganz neu, daher kannes auch sein, dass ich jetz in der falschen Kategorie poste oder so.
Also. Ich habe vor ein Jump and Run Spiel zu programmieren. Ein Anfang ist getan, ich habe per Paint meine Männchen gemalt für nach links/rechts gehen, bücken und springen. Diese habe ich als image eingebunden. Jetzt kann sich das Männchen schon bewegen in alle Richtungen außer nach unten (das soll es auch nicht können, ich verschiebe einfach das image.
Ich habe nun folgendes Problem. wenn man das Männchen nach links bewegt (also 'a' drückt) und währenddessen plötzlich nach rechts geht (also 'd' drückt, ohne a loszulassen) springt es wieder an die Position, von der es gestartet ist. Meine erste Frage zu dem Projekt ist also:

Wie kann ich verhindern, dass zwei Tasten gleichzeitig abgehandelt werden? (Also im eben beschrieben Fall hätte ich es dann gerne, dass sich das Männchen daraufhin nach rechts in Bewegung setzt.)

Vielen Dank im Voraus,

Maltimore
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#2

Re: 2D Game

  Alt 2. Mär 2008, 12:52
Willkommen in der DP

Ich denke, du hast die richtige Kategorie erwischt

Eine Möglichkeit wäre es, beim OnKeyDown Event eine bool'sche (Schreibt man das so?) Variable auf z.B. true zu setzen, und beim OnKeyUp wieder auf false. Ist diese Variable true, wird deine Tastaturverarbeitung einfach übersprungen (z.B. 'if tasteGedrueckt then exit;').

Allerdings würde ich allgemein behaupten, dass man das Problem auch anders lösen kann, anstatt dem Endnutzer Tastatureingaben zu verbieten
Frank Dumont
  Mit Zitat antworten Zitat
Maltimore

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

Re: 2D Game

  Alt 2. Mär 2008, 13:07
also um ehrlich zu sein hab ichs jetz nicht ganz kapiert. also ich will ja das wenn ich d gedrückt halte (also das männchen nach rechts geht) und dann a drücke (ohne d loszulassen ganz wichtig) von dem moment an d ignoriert wird und ausgeführt wird (also bewegung nach links. das klappt theoretisch ja auch, nur springt das männchen halt wieder an die position, von der es gestartet ist. was du jetzt meinst ist glaub ich das nicht d, sondern a ignoriert wird oder?
  Mit Zitat antworten Zitat
dominikkv

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

Re: 2D Game

  Alt 2. Mär 2008, 13:26
Es gibt mehrere Möglichkeiten ein Image per Tastendruck zu bewegen, darum wäre es gut zu wissen wie du das anstellst.
Zeig einfach mal deine Prozedur in der du das Image verschiebst.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#5

Re: 2D Game

  Alt 2. Mär 2008, 13:49
Also du könntest ja einfach eine Variable wie z.B.: i vom Typ integer deklarieren un dann wenn du das Ereignis für d machst wird dann i auf0 gesetzt und wenn man auf a klcikt hal tumgekehrt. In die a Prozedur schreibste dann sowas rein wie z. B. if i := 0 then klcike a sonst nicht!
Codetechnisch müsstest du das i: integer und das Form1: Tform oder wie das heißt schreiben!
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Maltimore

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

Re: 2D Game

  Alt 2. Mär 2008, 14:33
ok, aber macht euch auf was gefasst, der code ist echt schlimm

Delphi-Quellcode:

procedure linksgehen;
begin
imagesverstecken; //von mir gemachte procedure, hidet erstmal alle images (sind inzwischen 9)
Richtungrechts := false; // sagt anderen proceduren, dass sich nach links bewegt wird
 if nr = 1 then begin // die nummern sind dazu da dass sich 2 images beim angezeigt werden abwechseln damits besser aussieht
         form1.image4.left := form1.image1.left -20;
         form1.image1.Left := form1.image4.left;
         form1.image4.show; // hier wird es dann angezeigt
         nr := nr +1; // damit beim nächsten durchlauf der else zweig abgearbeitet wird (ich weiß bool würde reichen)
      end else begin
          form1.image3.left := form1.image1.left - 20;
          form1.image1.Left := form1.image3.left;
          form1.image3.show;
          nr := nr - 1;
      end;
end;
das war die procedure linksgehen, die von onkeypress aufgerufen wird:


Delphi-Quellcode:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); // hab keinen plan was es mit sender: tobject auf sich hat
begin
if key = 'athen begin // ich weiß begin - end eigentlich irrelevant hier aber man weiß ja nie :)
linksgehen;
end;

if key = 'dthen begin
rechtsgehen;
end;

if key = 'sthen begin // da bückt sich die figur
runtergehen;
end;

if key = ' then begin // naja das springen ist noch nicht ganz ausgereift, wollte es eig. nach physikalischen gesetzen springen lassen aber
                         // habe mich nun dagegen entschieden, weil zu schwer
springen;
end;
end;
joa.. ich erklärs euch gerne noch genauer, frag einfach
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

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

Re: 2D Game

  Alt 2. Mär 2008, 15:07
Okay... Es wäre nett zu wissen, was die Images sind?
Also was ist "Image1", "Image3" und "Image4"?

MfG
xZise
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
 
#8

Re: 2D Game

  Alt 2. Mär 2008, 15:30
ääh, also ist doch relativ egal oder? das sind halt paint bilder
ich weiß nicht genau, worauf du hinauswillst. 3 und 4 sind zwei bilder, die eine figur in der bewegung nach links zeigen und 1 ist ein image das eine figur in der bewegung nach rechts zeigt.
image 1 führe ich halt immer mit dem aktuell bewegten image mit, und egal in welcher prozedur ich bin kann ich mich darauf verlassen, dass image1 mir die korrekte position des aufenthaltsorts gibt. (naja gut, das muss ich allerdings jetza auch wieder überarbeiten weil ja jetz das springen und damit die y koordinate dazukommt.. -.-)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

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

Re: 2D Game

  Alt 2. Mär 2008, 16:03
Zitat von Maltimore:
ääh, also ist doch relativ egal oder? das sind halt paint bilder
  1. Nein ist es nicht! s.u.
  2. Wohl kaum Eher TImages (!= "Paintbilder")

Ich würde es einfach so machen, dass du zwei Integer hast, in der die Person des Spieler steht

Weil wenn du z.B. Nach links gehst und "nr" eins ist, und du dann nach rechst geht, dann wird der das zweite "Rechtsbild" wahrscheinlich nehmen => Das nimmst du nicht mit.
Deshalb ist es auch wichtig was die Bilder bedeuten, damit ich weiß, dass du das TImage für die Bewegung nach rechts mitnimmst.

Ich würde einfach "PlayerSpeedX" als Integer einführen, und damit dann arbeiten

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
 
#10

Re: 2D Game

  Alt 2. Mär 2008, 16:17
Ich würde eh nicht mit dem OnKeyPress-Ereignis arbeiten da
1) das Ereinis am Anfang einmal aufgerufen wird, dann Pause, dann mermals hintereinander
2) die Frequenz, mit der das Ereingins hintereinander aufgerufen wird, umstellbar ist und somit von PC zu PC unterschiedlich sein kann.

Wie wäre es mit einem Timer mit dem du den jeweiligen Tastenstatus abfrägst?
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:01 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