Thema: Delphi Mesch Ärgere dich nicht

Einzelnen Beitrag anzeigen

Discjoggy

Registriert seit: 29. Jan 2008
Ort: Herford
3 Beiträge
 
#22

Re: Mesch Ärgere dich nicht

  Alt 29. Jan 2008, 23:20
Hallo, ich bin Abiturient und besuche dort auch mein Fach Informatik... nun ist es so, dass es nicht wirklich anspruchsvoll ist für mich und einem Freund und haben uns so ein Projekt vorgenommen: "Mensch ärgere Dich Nicht!"

Als erstes haben wir alles in verschiedene Parts geteilt... einmal der Würfel (Random verfahren), Spieler Array (1- max.4) und den schwersten teil das bewegen der Figuren über die "Spielfläche"

folgende Var's sind deklariert:

Delphi-Quellcode:
var
  Form1: TForm1;
  // Positionen
  posX, posY: array [0..99] of integer;
  // player1-4 = Zahlen bis max. 43
  p1,p2,p3,p4, player, Auge, cubes, i: integer;
Erst einmal folgender Code (Randomverfahren)

Delphi-Quellcode:
Function Wurf: integer;
begin
randomize;
result := (random(6)+1);
end;
Nun kommt die Prozedur vom Button (Würfeln)Click

Delphi-Quellcode:
procedure TForm1.btn_wuerfelClick(Sender: TObject);
begin
player := player+1;

// Postion LEFT
posx[00] := 192;
posx[01] := 248;
posx[02] := 304;
posx[03] := 360;
posx[04] := 416;
posx[05] := 440;
posx[06] := 440;
posx[07] := 440;
posx[08] := 440;
posx[09] := 496;
posx[10] := 552;
posx[11] := 552;
posx[12] := 552;
posx[13] := 552;
posx[14] := 576;
posx[15] := 632;
posx[16] := 688;
posx[17] := 744;
posx[18] := 800;
posx[19] := 800;
posx[20] := 800;
posx[21] := 744;
posx[22] := 688;
posx[23] := 632;
posx[24] := 576;
posx[25] := 552;
posx[26] := 552;
posx[27] := 552;
posx[28] := 552;
posx[29] := 496;
posx[30] := 440;
posx[31] := 440;
posx[32] := 440;
posx[33] := 440;
posx[34] := 416;
posx[35] := 360;
posx[36] := 304;
posx[37] := 248;
posx[38] := 192;
posx[39] := 192;

posx[40] := 248; // Player 1 Haus Feld 1
posx[41] := 304; // Player 1 Haus Feld 2
posx[42] := 360; // Player 1 Haus Feld 3
posx[43] := 416; // Player 1 Haus Feld 4

// Position TOP
posy[00] := 272;
posy[01] := 272;
posy[02] := 272;
posy[03] := 272;
posy[04] := 248;
posy[05] := 192;
posy[06] := 136;
posy[07] := 080;
posy[08] := 024;
posy[09] := 024;
posy[10] := 024;
posy[11] := 080;
posy[12] := 136;
posy[13] := 192;
posy[14] := 248;
posy[15] := 280;
posy[16] := 280;
posy[17] := 280;
posy[18] := 280;
posy[19] := 336;
posy[20] := 392;
posy[21] := 392;
posy[22] := 392;
posy[23] := 392;
posy[24] := 416;
posy[25] := 472;
posy[26] := 528;
posy[27] := 584;
posy[28] := 640;
posy[29] := 640;
posy[30] := 640;
posy[31] := 584;
posy[32] := 528;
posy[33] := 472;
posy[34] := 418;
posy[35] := 384;
posy[36] := 384;
posy[37] := 384;
posy[38] := 384;
posy[39] := 328;

posy[40] := 328; // Player 1 Haus Feld 1
posy[41] := 328; // Player 1 Haus Feld 2
posy[42] := 328; // Player 1 Haus Feld 3
posy[43] := 328; // Player 1 Haus Feld 4

// Mache Würfel Images Unsichtbar
cube_1.Visible := false;
cube_2.Visible := false;
cube_3.Visible := false;
cube_4.Visible := false;
cube_5.Visible := false;
cube_6.Visible := false;

// In die Funktion Wurf mit ausgangswert 0 setzen
statusbar.SimpleText := IntToStr(Wurf());
Auge := StrToInt(statusbar.SimpleText);
cubes := StrToInt(statusbar.SimpleText);

// Bedingungen für den Wurf deklarieren:
 case Auge of
 0..5: statusbar.SimpleText := statusbar.SimpleText + ' Der nächste Spieler ist an der Reihe!';
    6: statusbar.SimpleText := statusbar.SimpleText + ' Du darfst noch einmal!'
 end;

  case cubes of
  1: cube_1.Visible := true;
  2: cube_2.Visible := true;
  3: cube_3.Visible := true;
  4: cube_4.Visible := true;
  5: cube_5.Visible := true;
  6: cube_6.Visible := true;
  end;


//BEDINGUNGEN FÜR SPIELER 1
begin if (p1 < 43) and (player = 1) then begin
p1 := p1+wurf;
edt_points.text := IntToStr(p1);
s1f1.Left := posx[p1];
s1f1.top := posy[p1];
end
end;

//BEDINGUNGEN FÜR SPIELER 2
begin if (p2 < 43+10) and (player = 2) then begin
p2:= p2+Wurf();
edt_points2.text := IntToStr(p2);
s2f1.Left := posx[p2+10];
s2f1.top := posy[p2+10];
end
end;

//BEDINGUNGEN FÜR SPIELER 3
begin if (p3 < 43+20) and (player = 3) then begin
p3:= p3+Wurf();
edt_points3.text := IntToStr(p3);
s3f1.Left := posx[p3+20];
s3f1.top := posy[p3+20];
end
end;

//BEDINGUNGEN FÜR SPIELER 4
begin if (p4 < 43+30) and (player = 4) then begin
player := 0; // Setze player wieder 0, damit es mit player 1 wieder losgeht.
p4:= p4+Wurf();
edt_points4.text := IntToStr(p4);
s4f1.Left := posx[p4+30];
s4f1.top := posy[p4+30];
end
end;

end;
Zu Beachten ist das z.B. s1f1 oder s2f4 die kürzel für "Spieler 1 Figur 1" oder Spieler 2 Figur 4" sind und nun kann man sehen das ich ausschließlich mit Image's gearbeitet habe...

auf jeden fall läuft der Spieler 1 Figur 1 sehr gut dem Wege entlang, jedoch habe ich ein Problem mit den anderen Spielern... diese Fangen ja erst bei +10/+20/+30 Feldern an und wissen am ende nicht wohin... Hat eventuell einer eine Idee dieses Problem anders zu lösen ?

Kurze Anmerkung noch: Ich habe dieses Spiel soweit nur mit Grundkenntnissen und etwas Internetrecherche (Arrays zb) zusammengestellt, also beklagt Euch bitte nicht über diesen makaberen Quelltext. Bin aber gerne über "Korrekte Schreibweisen" erfreut.

Danke im Vorraus.
  Mit Zitat antworten Zitat