Autor Beitrag
barnx
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 25.03.05 11:27 
Ahoi Leute!

Ich bin dabei ein Brettspiel (ein Rennspiel aus einem Magazin) zu programmieren.
Es wird nach der Reihe gewürfelt und gezogen. Dies ist kein Problem bisher. Doch gibt es spezielle Aktionen auf bestimmten Feldern. Kommt der Spieler auf ein Feld, so muss er nochmals Würfeln, um eine Aktion auszulösen oder auch nicht, halt je nachdem, was er würfelt.

folgendes ist die Würfelfuntion...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function TBrett.wurf():integer;
var cube:integer;
begin
randomize;sleep(500);        // zufallsgenerator, kurze pause zur spannung
cube:=random(6)+1;
wurf:=cube;
form1.label0.caption:=IntToStr(cube);    //ausgabe in label 1
end;


und das passiert, wenn man auf den würfel klickt: (dran, ist die spieler-id des Spielers, der dran ist.)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
Maxim.setzen(Maxim.dran,Maxim.wurf);
end;



ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TBrett.duell(angreifer, verteidiger: integer);
begin
showmessage('DUELL');
showmessage('Verteidiger Bitte');

showmessage('Angreifer Bitte');
end;

procedure TBrett.setzen(spielerid,anzahl:integer);      //hier wird der zug ausgeführt
var nochzusetzen,tfeld,i: integer;
begin
[...habe hier mal einiges ausgespart...]
for i:=1 to 4 do begin   // hier wird geguckt, welcher spieler vor dem angreifer ist ist
                                             if Spieler[i].position=Spieler[spielerid].position-1 then duell(spielerid,i);
                                            end;

end;


sind 2 spieler auf dem selben feld, wird ein Duell ausgeführt und geguckt, ob das Überholmanöver erfolgreich ist oder nicht. Dabei würfelt erst der verteidiger, dann der Angreifer.
in der duell prozudur wäre es natürlich leicht, einfach 2x den computer würfeln zu lassen, doch wie kann ich es anstellen, dass der benutzer 2x auf würfeln klicken muss und dann erst fortgefahren wird?

mfg und schöne Grüße
Barny
webbi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 142

Win XP Pro SP2, Debian GNU/Linux 2.6
D5 Pro, D7 Pro, BDS2006, Kylix3, MS-VS 2005
BeitragVerfasst: Fr 25.03.05 16:08 
mach dir eine Variable in der du dir den Ersten Wurf merkst. Ist diese beim Knopfdrücken befüllt hat der Spieler also zum zweiten mal gedrückt...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  iWurf1 : Integer;

procedure TForm1.Button1Click(Sender: TObject);   
begin   
  if Duell then begin
    if iWurf1 > 1 then begin  // Wenn zum 2. mal gewürfelt wird
      Maxim.setzen(DuellGegner1,iWurf1);
      Maxim.setzen(DuellGegner2,Maxim.wurf);
    end else iWurf1 := Maxim.wurf;
  end else Maxim.setzen(Maxim.dran,Maxim.wurf);  //Wenn kein Duell
end;

Müsstest dir hald beim Setzen noch wissen, welche Spieleder das Duell austragen...

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
barnx Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 25.03.05 16:54 
danke, habs so ähnlich programmiert, nur deutlich komplizierter, im prinzip aber genauso...

danke

Barny