AGB  ·  Datenschutz  ·  Impressum  







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

Bewegungen in Welten

Ein Thema von XXcD · begonnen am 4. Jul 2008 · letzter Beitrag vom 4. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#1

Bewegungen in Welten

  Alt 4. Jul 2008, 12:08
Hallo,
ich versuche ngerade nen kleines Spiel zu programmieren und habe etwas probleme mit der Steuerung. (Eine Demo habe ich als Anhang drin)
Mit WASD Steuert man, das ganze habe ich mit RegisterHotkey() gemacht.

Das Problem ist jetzt wenn ich in einem anderen Fenster z.b. schreiben möchte, dann bewegt sich der Charakter im Spiel und in dem anderen Fenster wird die Taste nicht angenommen.

Weiß vielleicht einer wie ich das anders machen könnte?
Angehängte Dateien
Dateityp: rar client_151.rar (332,5 KB, 28x aufgerufen)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Bewegungen in Welten

  Alt 4. Jul 2008, 12:10
Schau dir mal GetAsyncKeyState an -> http://msdn.microsoft.com/en-us/library/ms646293.aspx
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Bewegungen in Welten

  Alt 4. Jul 2008, 12:59
Warum nimmst du dafür Systemweite Hotkeys? Die Ereignis für die Form OnKeyDown und OnKeyPress reichen doch vollkommen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Bewegungen in Welten

  Alt 4. Jul 2008, 13:11
Ja gut das läuft jetzt flüssiger aber wie kriege ich das hin, dass der den Charkter nur bewegt wenn das Formular im Vordergrund ist?
Habs mit Focus ausprobiert, aber das klappt nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Bewegungen in Welten

  Alt 4. Jul 2008, 13:14
Die tasten werden doch nur ausgewertet, wenn das Formular den Focus hat. Anders darf es gar nicht funktionieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Bewegungen in Welten

  Alt 4. Jul 2008, 13:33
Ne der bewegt sich auch wenn das Formular nicht den Focus hat.
Probier es selbst aus. Ich häng die aktualisierte Version an.
Angehängte Dateien
Dateityp: rar client_206.rar (360,7 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Bewegungen in Welten

  Alt 4. Jul 2008, 13:38
Benutzt du noch die systemweiten Hotkeys?

BTW ohne Quellcode nützt uns das nichts.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Bewegungen in Welten

  Alt 4. Jul 2008, 14:17
Ok habs gerade hingekriegt mit Form.Active

Aber hier mal der Code:

Delphi-Quellcode:
procedure TGame.Timer2Timer(Sender: TObject);
begin
if Game.Active=true then
begin
          If GetAsyncKeyState(Ord('W')) < 0 Then Begin
          if Image11.Top>1 then
          begin
          Stepup;
          end;
          End;

          If GetAsyncKeyState(Ord('A')) < 0 Then Begin
          if Image11.left>1 then
          begin
          Stepleft;
          end;
          End;

          If GetAsyncKeyState(Ord('S')) < 0 Then Begin
          if Image11.top<350 then
          begin
          Stepdown;
          end;
          End;

          If GetAsyncKeyState(Ord('D')) < 0 Then Begin
          if Image11.left<350 then
          begin
          Stepright;
          end;
          End;
end;
end;
Und hier noch eine der funktionen zum laufen:
Delphi-Quellcode:
procedure TGame.Stepup();
begin
  if Bewegung=false then
  begin
  Bewegung:=true;
  Image11.Picture:=Image4.Picture;
  Image11.Top:=Image11.Top-10;
  delay(100);

  Image11.Picture:=Image4.Picture;
  Image11.Top:=Image11.Top-10;
  delay(100);

  Image11.Picture:=Image8.Picture;
  Image11.Top:=Image11.Top-10;
  delay(100);

  Image11.Picture:=Image4.Picture;
  Image11.Top:=Image11.Top-10;
  Bewegung:=false;
  end;
end;
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#9

Re: Bewegungen in Welten

  Alt 4. Jul 2008, 14:55
Zitat:
Die Ereignis für die Form OnKeyDown und OnKeyPress reichen doch vollkommen.
Wäre hier imho besser.
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 30. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: Bewegungen in Welten

  Alt 4. Jul 2008, 15:20
Und nochwas. Das hier:if Bewegung=false then ... macht man so:if not Bewegung then ... Und das hier:if Game.Active=true then ... sollte man so machen:if Game.Active then ... (Ich bekomme immer Augenkrebs, wenn ich sowas sehe )

Chris
Chris
» «
Mehr von mir (Programme, etc.): http://www.kroegerama.de
  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 21:32 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