Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mesch Ärgere dich nicht (https://www.delphipraxis.net/107467-mesch-aergere-dich-nicht.html)

TeamBob 28. Jan 2008 12:31


Mesch Ärgere dich nicht
 
Hi
Also ich suche schon ewig nach dem Spiel Mensch ärgere dich nicht, was in
Delphi programmiert ist, weil unsere Infolehrerin genmeint hat, das man
dieses Spiel nicht in Delphi programmiere kann. Also weis den einer
wo man es sich runterladen kann oder hat es einer schon mal programmiert??
Danke

Luckie 28. Jan 2008 12:35

Re: Mesch Ärgere dich nicht
 
Hat sie ihre Aussage irgendwie begründet? :gruebel:

STS301 28. Jan 2008 12:36

Re: Mesch Ärgere dich nicht
 
augebessert

Zitat:

dieses Spiel nicht in Delphi programmiere kann
man kann auch ganz andere Sachen mit Delphi programmieren ;)

Larsi 28. Jan 2008 12:37

Re: Mesch Ärgere dich nicht
 
kla geht das dann ist deine lehrerin wohl n bisschen blöd :)

himitsu 28. Jan 2008 12:52

Re: Mesch Ärgere dich nicht
 
ich sag es mal so ...

hatte vor sehr vielen Jahren mal mit QBasic ein MÄDN programmiert ... und was (Q)Basic kann, daß kann Delphi auch und noch viel mehr.

[add]
gib mal in Google
Zitat:

"Mensch ärgere dich nicht" delphi
ein

bzw. laß das NICHT mal weg (gibt auch noch genug Anti-Varianten davon)

Tyrael Y. 28. Jan 2008 12:57

Re: Mesch Ärgere dich nicht
 
Frag sie bitte mal wie sie auf diese (schwachsinnige) Aussage kommt und schreibe es bitte hier rein.

Würde mich echt mal interressieren wie sie das begründet.
bzw. mit Delphi kannst du fast alles programmieren...

TeamBob 28. Jan 2008 13:03

Re: Mesch Ärgere dich nicht
 
naja sie hat gemeint das man es nicht hinbekommt das die random würfelzahl auf die
spielfiguren übertragen werden und die sich dann dementsprechend bewegen.
Ich soll ihr erst zeigen das es sowas gibt und dazu brauch ich nun echt dringend das
Spiel...
Danke schonmal

Tyrael Y. 28. Jan 2008 13:11

Re: Mesch Ärgere dich nicht
 
Zitat:

Zitat von TeamBob
naja sie hat gemeint, das sie (man) es nicht hinbekommt das die random würfelzahl auf die
spielfiguren übertragen werden und die sich dann dementsprechend bewegen.
Ich soll ihr erst zeigen das es sowas gibt und dazu brauch ich nun echt dringend das
Spiel...
Danke schonmal

;)

..klar geht das

RavenIV 28. Jan 2008 13:13

Re: Mesch Ärgere dich nicht
 
Zitat:

Zitat von STS301

Was willst Du uns mit diesem Link sagen?

Balu der Bär 28. Jan 2008 13:16

Re: Mesch Ärgere dich nicht
 
Das ist die Sorte Lehrer, deren Wissen wahrscheinlich von einem Delphi-Crashkurs herstammt. :mrgreen:

Fakt ist: Alles was ihr jemals im Unterricht programmieren wollte geht mit Delphi (von einem eigenen OS mal abgesehen *g*).

Blackheart 28. Jan 2008 13:19

Re: Mesch Ärgere dich nicht
 
Für Mich sieht das eher so aus als ob Du ein fertiges Projekt haben
möchtest und deine Lehrerin nur als Vorwand benutzt. :wink:

Kroko1999 28. Jan 2008 13:22

Re: Mesch Ärgere dich nicht
 
Zitat:

Zitat von Blackheart
Für Mich sieht das eher so aus als ob Du ein fertiges Projekt haben
möchtest und deine Lehrerin nur als Vorwand benutzt. :wink:

:thumb:

Tyrael Y. 28. Jan 2008 13:22

Re: Mesch Ärgere dich nicht
 
Hier hast du eine Link zu einem Mensch ärgere dich nicht Spiel (ohne Sourcecode) *g*
gibt noch mehr im Netz....ist in TP7 geschrieben, aber spielt keine Rolle TP ist (fast) dasselbe wie Delphi


Klick mich

STS301 28. Jan 2008 13:45

Re: Mesch Ärgere dich nicht
 
Zitat:

Was willst Du uns mit diesem Link sagen?
naja, das was man mit Google mit "Mensch ärgere dich (nicht) Delphi" finden kann

habe bloß vergessen, es nicht mit KProxy zu machen :roll: :roll:

RavenIV 28. Jan 2008 13:46

Re: Mesch Ärgere dich nicht
 
Zitat:

Zitat von STS301
Zitat:

Was willst Du uns mit diesem Link sagen?
naja, das was man mit Google mit "Mensch ärgere dich (nicht) Delphi" finden kann

habe bloß vergessen, es nicht mit KProxy zu machen :roll: :roll:

Dann gib uns den Link ohne Deinen Proxy dazwischen.

STS301 28. Jan 2008 13:56

Re: Mesch Ärgere dich nicht
 
wenn du einmal geschaut hättest, dann wüstest du dass ich es schon ausgebessert habe (auch wenn du um 13:46 geschrieben hast und ich um 13:46 ausgebessert habe)

TeamBob 29. Jan 2008 18:49

Re: Mesch Ärgere dich nicht
 
Hi
Also ich na klar suche ich jetzt ein fertiges Programm mit Sourcecode, aber
das nur um unserer Lehrerin zu zeigen, dass es auch mögliche ist, sowass in Delphi
zu programmieren...
Könnt ihr mir da helfenß???
Bitte!!!!

Nikolas 29. Jan 2008 19:15

Re: Mesch Ärgere dich nicht
 
Warum schreibst du nicht schnell ein kleines Programm, bei dem ein einzelnes Männchen im Kreis hüpft. :roll:
Die Logik dahinter ist doch völlig egal.

generic 29. Jan 2008 20:48

Re: Mesch Ärgere dich nicht
 
Wenn es nicht unbedingt MÄDN sein muss, zeig ihr doch einfach ein anderes Spiel welches mit Delphi programmiert es.
Es gibt hunderte davon.

lbccaleb 29. Jan 2008 21:34

Re: Mesch Ärgere dich nicht
 
Zitat:

Zitat von TeamBob
weil unsere Infolehrerin genmeint hat, das man
dieses Spiel nicht in Delphi programmiere kann.

also wenn die infolehrerin auch noch delphi unterrichtet, dann kannst du ihr sagen sie hat ganz klar ihren beruf verfehlt...
das echt schade, und dann wundert man sich warum aus der jugend nichts mehr wird!! :lol: :lol:

Dezipaitor 29. Jan 2008 22:46

Re: Mesch Ärgere dich nicht
 
Man könnte jedes aktuelle Spiel auch in Delphi schreiben, sofern es von Delphi erzeugt werden kann (kein DOS, kein 64bit...).
Ich würde sogar behaupten, dass Crysis auch in Delphi hätte funktioniert. :firejump:

Discjoggy 30. Jan 2008 00:20

Re: Mesch Ärgere dich nicht
 
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.

Andy090778 30. Jan 2008 01:26

Re: Mesch Ärgere dich nicht
 
Schmeiß die Bedingungen für die Spieler raus und benutze auch noch für allle Player zusammen ein Array:
Delphi-Quellcode:
p: array [1..4] of Integer;
Für das Speichern der Positionen nimmst Du den Typ TPoint:
Delphi-Quellcode:
Pos: array [0..99] of TPoint;
Zugriff dann so:
Delphi-Quellcode:
Pos[0].X
Pos[0].Y
hier der Code:

Delphi-Quellcode:
// aktuelle position
  p[player] := p[player] + wurf;
  if p[player] > 40 then p[player] := p[player] - 40;

// anzeigen
  edt_points.text := IntToStr( p[player] );

// spielfiguren bewegen
  TImage(FindComponent('s'+IntToStr(player)+'f1') ).Left := Pos[ p[player] ].x;
  TImage(FindComponent('s'+IntToStr(player)+'f1') ).Top := Pos[ p[player] ].y;
end;

Jetzt bist Du dran :-)

ToDo:
- Animieren der Züge
- Verbesserung init

Andreas

Luckie 30. Jan 2008 12:26

Re: Mesch Ärgere dich nicht
 
Ui, noch nicht viel von OOP gehört?

phXql 30. Jan 2008 13:39

Re: Mesch Ärgere dich nicht
 
Zitat:

Zitat von Luckie
Ui, noch nicht viel von OOP gehört?

Sowas wird in der Schule selten gelehrt.

Discjoggy 30. Jan 2008 21:00

Re: Mesch Ärgere dich nicht
 
Blöd ist nur, wie ich das jetz herauslese, dass ich von jedem Spieler eine Figur bewegen kann :) Glücklicherweise gibt es ja 4x4 Figuren unter 4 Spielern unterteilt :)

Aber an sich funktioniert die ganze sache. Danke Dir auch vielmals dafür !

und nein, sry ich habe noch nicht die größte Ehrfahrung von Objekt Orientierte Programmierung gemacht :( aber was meinste warum ich so aus spaß ein MÄDN -Spiel mit eigenen Regeln programmieren möchte ? :P



Kurz zurück zu Michael's Gedanken:

Zitat:

Schmeiß die Bedingungen für die Spieler raus und benutze auch noch für allle Player zusammen ein Array:
Delphi-Quellcode:
p: array [1..4] of Integer;

Wie wäre es einfach so:

Delphi-Quellcode:
p1, p2, p3, p4: array [1..4] of Integer;
Also das ich [1..4] für die Figuren nehme und p1 selbst als "Spieler1" z.b.

Als Beispiel dann noch eine "Var player, figure: byte;"

Delphi-Quellcode:
 
TImage(FindComponent('s'+IntToStr(player)+'f'+IntToStr(figure)) ).Left := Pos[ p2[player] ].x;
TImage(FindComponent('s'+IntToStr(player)+'f'+IntToStr(figure)) ).Top := Pos[ p2[player] ].y;

Andy090778 30. Jan 2008 21:16

Re: Mesch Ärgere dich nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab doch tatsächlich mal was gemacht. Is schon ewig her und sicher nicht die beste Lösung, auch nicht in Sachen OOP. Aber es tut :-)

Discjoggy 30. Jan 2008 21:46

Re: Mesch Ärgere dich nicht
 
Danke dir... damit kann ich es gut nachvollziehen !

indeed 1. Feb 2010 17:03

Re: Mesch Ärgere dich nicht
 
ich hab auch n mensch ärgere dich nich geschrieben aba ohne arrays...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz