AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Programmieren von "Mensch ärgere Dich nicht"
Thema durchsuchen
Ansicht
Themen-Optionen

Programmieren von "Mensch ärgere Dich nicht"

Ein Thema von Sani93 · begonnen am 6. Jan 2011 · letzter Beitrag vom 14. Jan 2011
Antwort Antwort
Sani93

Registriert seit: 5. Jan 2011
10 Beiträge
 
#1

AW: Programmieren von "Mensch ärgere Dich nicht"

  Alt 12. Jan 2011, 19:54
var AbstandOben, AbstandLinks : string; // warum auch immer das ein string sein soll, aber das funktioniert mit integer nciht...

Timer1:
if (AbstandOben = '13') then
AbstandLinks := strtoint(AbstandLinks)+74 // ich hab das jetzt iwie nicht mehr. mein pc macht im mom richtige scheiße, aber ich mein so war das.
// die Variablen sind die Position des Bildes (Spielfeigur). Image.Left -> AbstandLinks. 74 ist der
// Abstand zwischen den Feldern
// und das hab ich halt für alle strecken gemacht, wo die figur sich in die gleiche richtung bewegen soll...



ich hab das jetzt ganz anders gemacht. ich hab jetz 4 timer (für jede farbe einen). dann hab ich noch für jede figur ein editfeld.
in diesem editfeld steht wie viele felder die figur schon gelaufen ist. und dann hab ich jedem feld in diesem editfeld eine position zu geordnet:

if (Edit.Text = '6') then
AbstandOben := ...;
AbstandLinks := ...;

so funktioniert es zu mindest schon mal. auch die rausschmeiß-funktion ist so einfach -> if (Editx.Text = Edity.Text) then // wobei jede farbe
// einen radiobutton hat
// so weiß ich immer
// welche farbe ins haus
// muss...


Ist zwar nicht ideal, die lösung. aber es funktioniert schon mal
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#2

AW: Programmieren von "Mensch ärgere Dich nicht"

  Alt 13. Jan 2011, 07:15
Du solltest Logik und Darstellung strikt trennen. Komponenten wie TEdit dienen der Darstellung von Daten, nicht aber der Speicherung. Für Letzteres verwendet man Variablen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#3

AW: Programmieren von "Mensch ärgere Dich nicht"

  Alt 13. Jan 2011, 08:26
Punkt 1: Zahlen kommen in Zahlen-Variablen wie Integer. Dann muss man sie nicht immer erst in Strings umrechnen.
Punkt 2: Deine Figur wird sich so voranbewegen, dass nicht ein ganzzahliges Vielfaches des zurückgelegten Weges pro Zug * eine natürliche Zahl die Weglänge ergibt. Du kannst somit auch nicht auf Gleichheit prüfen, wenn die Figur standardmäßig über die Grenze hinausspringt. Du kannst aber prüfen, ob sie die Grenze überschritten hat (< oder >) und dann neu ausrichten.

Verbesserungsvorschlag: Definiere ein Array mit den Punkten auf dem Spielfeld. Dann sagst du der Figur, sie soll sich einen Platz weiter bewegen und sagst dem Programm, dass es zeichnen soll. Beim Zeichnen errechnest du aus der Position (z.B. 5) die Koordinaten auf dem Spielfeld und zeichnest die Figur dann an die richtige Stelle.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Sani93

Registriert seit: 5. Jan 2011
10 Beiträge
 
#4

AW: Programmieren von "Mensch ärgere Dich nicht"

  Alt 13. Jan 2011, 09:15
ja hab ich auch gemerkt und jetztt gändert.
ich hab aber noch ne frage...
wenn alle figuren (im haus) oder entweder (im haus und im ziel), kann man ja drei mal würfeln. ich hoffe ihr wisst, was ich meine.
aber ich weiß nciht wie ich das hinbekomme.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#5

AW: Programmieren von "Mensch ärgere Dich nicht"

  Alt 13. Jan 2011, 17:54
dann brauchst du noch eine Varible, die die Anzahl der schon durchgeführten Würfe enthält. Du kannst ja mit ein paar If-Strukturen ganz einfach ausfindig machen, ob ein Zug möglich ist oder nicht.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Sani93

Registriert seit: 5. Jan 2011
10 Beiträge
 
#6

AW: Programmieren von "Mensch ärgere Dich nicht"

  Alt 13. Jan 2011, 19:49
zu dem array. arrays sind ganz böse. ich weiß wie ich einen anlege und auch wie ich ihn "abfrage", aber wie ich den dann richtig benutze weiß ich nicht. ich glaube du meinst das ich nen array "Felder" anlegen soll. dieser soll von [1..72](Alle Felder -> Haus,Ziel,Felder) gehen. so, wenn das so weit richtig ist, weiß ich aber nicht mehr weiter...

mit den würfen, das hab ich versucht. ich hab die position der figuren angegeben, wenn sie im haus sind. dann hab ich geschrieben, wenn sie im haus sind, erhöhe variable um 1. sprich, 4 figuren im haus, variable = 4. dann hab ich noch geschrieben, dass wenn die figuren ins ziel einlaufen, erhöhe variable um 1.
somst iist immerwen man 3mal würfeln darf, die variable 4.
in welche prozedur soll ich diese anweisung jetzt legen? leg ich sie auf den würfel button, setzt der die variable bei jedem click auf drei, solange alle figuren im haus sind. eigentlich soll er die variable aber -1 rechnen...

Geändert von Sani93 (13. Jan 2011 um 19:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#7

AW: Programmieren von "Mensch ärgere Dich nicht"

  Alt 13. Jan 2011, 21:54
Arrays sind von Grund auf nicht böse. Ich dachte es wird dann einfacher: Du hast eine Zuordnung von FeldNummer zu Position des Feldes auf dem Spielplan. Wenn du jetzt eine Figur ziehen lässt, dann geht das durch 2 Möglichkeiten:
a) Du ziehst die Figur von einer Position auf die nächste, wobei du dabei die dir bekannten Fehler hast, oder
b) du sagst ganz einfach, dass sich die Feldnummer ändern soll. Mit Hilfe der Zuordnung Feldnummer -> Position kannst du dann die Position der Figur in Abhängigkeit der Feldnummer errechnen. So ist es dann auch viel einfacher, zu prüfen, wo eine Figur gerade ist und wie sie ziehen kann. Mal von Haus und Ziel abgesehen.

So jetzt du den Würfelversuchen: Du definierst eine globale Variable (das ist böse, aber erst einmal notwendig. Die kann am Ende immer noch weichen). Die nennst du z.B. "AnzahlWuerfe" (Integer). Dann kannst du noch eine weitere globale Variable definieren (noch böser), der du dann zuordnest, dass wenn diese Variable gesetzt ist, der Spieler 3x würfeln darf (Du musst das dann nicht immer wieder abfragen). Vor dem Zug prüfst du, ob der Spieler 3x würfeln darf und setzt dementsprechend "Darf3xWuerfeln" auf TRUE (da Boolean). Wenn diese Variable true ist, schaust du in AnzahlWuerfe nach, wie viele Würfe der Spieler schon durchgeführt hat und entscheidest dementsprechend, ob er weitere Würfe durchführen darf oder nicht.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#8

AW: Programmieren von "Mensch ärgere Dich nicht"

  Alt 14. Jan 2011, 07:22
Wenn man das schön OOP programmiert, dann weiß die Figur, ob sie im Haus steht, und der Spieler weiß, wie oft er schon gewürfelt hat
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Sani93

Registriert seit: 5. Jan 2011
10 Beiträge
 
#9

AW: Programmieren von "Mensch ärgere Dich nicht"

  Alt 14. Jan 2011, 09:36
ok das mit dem felder zuordnen hab ich auch schon gemacht, halt ohne array. jede figur hat ein editfeld. in einem anderen editfeld steht die würfelzahl und die wird dann zu dem editfeld der figur addiert.

kannst du mir vlt mal das mit der globalen variable, bzw die abfrage schreiben?
wäre nett, danke
  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 20:32 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-2025 by Thomas Breitkreuz