AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi auf button click warten (kein Application.ProcessMessages!)
Thema durchsuchen
Ansicht
Themen-Optionen

auf button click warten (kein Application.ProcessMessages!)

Ein Thema von soup · begonnen am 25. Mär 2005 · letzter Beitrag vom 25. Mär 2005
Antwort Antwort
Benutzerbild von soup
soup

Registriert seit: 5. Feb 2005
9 Beiträge
 
Delphi 7 Personal
 
#1

auf button click warten (kein Application.ProcessMessages!)

  Alt 25. Mär 2005, 17:08
mache ein Schachspiel.
wie ihr vielleicht wisst darf man beim Schach seinen Bauern gegen eine andere Figur tauschen wenn man die letzte Reihe erreicht.
In meinem Spiel soll das so gehen:

erreicht ein spieler mit einem bauern die (für ihn) hinterste reihe - was ich problemlos abfragen kann - wird eine Prozedur aufgerufen:

Delphi-Quellcode:
procedure TForm1.VerwandleBauer;
begin
  DButton.Visible := true;
  LButton.Visible := true;
  SButton.Visible := true;
  TButton.Visible := true;

  repeat { Application.ProcessMessages - blöd weil weiterspieln möglich} until UnitType > 1;
  {UnitType 1 ist der Bauer, beim Button-Click wird der Unittype 2,3,4 oder 5}

  DButton.Visible := false;
  LButton.Visible := false;
  SButton.Visible := false;
  TButton.Visible := false;

end;
unten am spielfeldrand erscheinen 4 Buttons für die 4 möglichen Verwandlungen des Bauern (Dame, Turm ...)

in der Prozedur soll so lange 'verharrt' werden bis einer der Buttons geklickt wurde. Das ist nötig, denn sonst könnte man einfach weiterspielen und die Buttons würden bleiben
--> Application.ProcessMessages geht hier also nicht.

aber ohne das schmiert das prog ab.

[weniger wichtig]Beim Klick auf irgendeinen der Buttons wird in der OnClick-Prozedur eine entsprechende Variable (unitType) geändert - ein Integer, der vom Spiel dann nach der Prozedur in ein Array kopiert wird. [/weniger wichtig]

Gibt es eine möglichkeit
die Buttons anzuzeigen zu lassen
darauf zu warten das einer geklickt wird und dannin der prozedur weiterzumachen?

Danke im Vorraus!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: auf button click warten (kein Application.ProcessMessage

  Alt 25. Mär 2005, 17:13
einfach die Prozedur aufhören lassen, und in den prozeduren der 4 Buttons weitermachen ...
(Oder eine prozedur, die die Buttons zeigt (ggf. anderes disablen) und eine, die sie wieder versteckt)
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#3

Re: auf button click warten (kein Application.ProcessMessage

  Alt 25. Mär 2005, 17:23
Du könntest eine Boolean-Variable erstellen, die beim Klick auf einen der Verwandlungsbuttons auf true gesetzt wird, und wenn jemand versucht, weiterzuspielen, wird erst überprüft, ob diese Variable true ist, wenn ja, dann kann man weiterspielen, andernfalls nicht
Julian J. Pracht
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: auf button click warten (kein Application.ProcessMessage

  Alt 25. Mär 2005, 17:26
Oder du machst dir eine Extra-Form, auf der der Spieler sich seine Figur aussuchen soll und rufst sie mit ShowModal auf
  Mit Zitat antworten Zitat
skyware

Registriert seit: 11. Dez 2002
Ort: Wetzikon, Zürich
151 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: auf button click warten (kein Application.ProcessMessage

  Alt 25. Mär 2005, 17:42
..oder Du benutzt das Event "Application.OnIdle", um dort jeweils zu prüfen
ob jetzt eine Figur ausgewählt wurde.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: auf button click warten (kein Application.ProcessMessage

  Alt 25. Mär 2005, 18:07
Zitat:
Oder du machst dir eine Extra-Form, auf der der Spieler sich seine Figur aussuchen soll und rufst sie mit ShowModal auf Wink
Genau. Das wäre IMHO am besten.

[EDIT]
Du könntest alle Eventhandlers, die du sonst im Programm hast, auf nil setzen, und wider, wenn der Spieler auf die einer der 4 oben erwähnte Buttons klickt, zurücksetzen.
[\EDIT]
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von soup
soup

Registriert seit: 5. Feb 2005
9 Beiträge
 
Delphi 7 Personal
 
#7

Re: auf button click warten (kein Application.ProcessMessage

  Alt 25. Mär 2005, 19:05
wow, danke!
werd mich dann heut nacht mal ransetzen und ausprobieren was am besten klappt.

Dankeschön für die vielen Vorschläge!
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:55 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