Autor Beitrag
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Do 26.04.07 22:47 
Also, in einem Spiel von mir, dass man per Netzwerk spielen soll, kann man mittleweile ähnlich wie in wc3, cs o.ä. per Enter-Taste ein Eingabefeld öffnen, Nachrichten eingeben und per Enter an den anderen Spieler wegschicken.

Dieser soll dann die Nachricht für ein paar Sekunden(mit einem label) angezeigt kriegen, nach Ablauf der Zeit soll das label verschwinden.

Das Problem ist nur, dass wenn der 2. Spieler das Label noch sieht, und der erste Spieler etwas macht (einheit bewegen o.ä.), dass dann der befehl, der über das netzwerk gesendet wird (einehit von a nach b bewegen) nciht bearbeitet wird.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure tmain.settext(S:string);
 begin
 mchatlog.lines.add('Spieler 2: '+s);
 mtext.caption:=S;
 mtext.visible:=true;
 delay(5000);
 mtext.visible:=false;
 mtext.caption:='';;
end


mtext ist das label, in dem die textausgabe erfolgen soll.
Die prozedur delay sieht so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure tmain.delay(time:integer);
var start:int64;
begin
    start:=gettickcount;
    while gettickcount-start<time do
    application.processmessages;
end;


falsch weiterer code gewüscnht wird, liefer ich den nach. das probnlem tritt übrigens auch auf, wenn man zweri nachrichten schnell hintereinander sendet.

ich könnte als mögl lösung, weitere aktionen des spielers unterrbinden, wenn er eine nachricht schreibt, aber das wäre doch eine ziemlich unschöne lösung
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 26.04.07 22:55 
Moin!

Mal ganz blöd: warum kein Timer? :P ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Jann1k Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Do 26.04.07 22:58 
hmmmm, timer wäre echt ne idee, werdich mal über wochenende ausprobieren, dake schonmal für die idee, falls jmnd noch weitere hat, sind die natürlich auch willkommen
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 26.04.07 23:03 
Moin!

user profile iconJann1k hat folgendes geschrieben:
hmmmm, timer wäre echt ne idee, werdich mal über wochenende ausprobieren, dake schonmal für die idee,

Was gibt´s denn da "groß" auszuprobieren? ;)

- Nachricht kommt rein
- Label.Caption setzen
- Visible setzen
- Timer starten 5sec

---[Timerereignis]----
- Timer stoppen
- Visible setzen

fertig. :D

user profile iconJann1k hat folgendes geschrieben:
falls jmnd noch weitere hat, sind die natürlich auch willkommen

Die Application.ProcessMessages-Schleife ist keine so grandiose Idee, wenn du eine ereignisorientierte Anwendung mit den Socket-Komponenten schreibst... :? Du kannst hier (ShowMessage-Problem) und hier (Dateiauswahl-Dialog) etwas mehr darüber nachlesen. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Jann1k Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Do 26.04.07 23:06 
wenn ich was in einem progrqamm änder ist das immer ausprobieren ^^