BillyBoy84 Geschrieben 19. Januar 2004 Geschrieben 19. Januar 2004 Also ich programmiere derzeit ein Spiel fürs Studium! Ich habe einzelne Bilder als Positionen für ein Brettspiel angelegt! Dann habe Ãch eine Figaur als Bild! Die Positioen heißen Positio1 bis Position39! Nun soll man Würfeln und die Figar soll zum Beispiel bei einer 6 6 Positionen vorrücken! Also von Position 1 auf 7! Wie bekomme ich das nun hin, dass die Spielfigur diese Position einnimmt??? Ich hoffe mir kann jemand weiterhelfen! Zitieren
geloescht_JesterDay Geschrieben 19. Januar 2004 Geschrieben 19. Januar 2004 Original geschrieben von BillyBoy84 Wie bekomme ich das nun hin, dass die Spielfigur diese Position einnimmt??? Ich hoffe mir kann jemand weiterhelfen! Dass kommt darauf an wie du die Positionen angelegt hast. Ich gehe jetzt mal vom einfachsten Fall aus, 39 Quadrate nebeneinander. Alle Quadrate haben die Seitenlänge 20 Pixel. Anfangen tust du bei Pixel 1. Also Position 1 geht von Pixel 1 bis Pixel 20. die Y-Position ist fest, da die Quadrate nebeneinander liegen. Wenn das Bild für die Figur auch 20x20 Pixel gross ist ist die Position der figut für Spielposition 1 also: 1 | 10 (wenn 10 der Y-Wert ist) An die Position der Figur kommst du mit: (Spielposition - 1) * 20 + 1 Also Position 5: (5 - 1) * 20 + 1 = 4 * 20 + 1 = 81 Y-Position ist immer 10. Das ganze musst du jetzt nur an deine Vorgabe anpassen. Und zur Not (wenn unregelmäßig) die Spielpositionen in einem Array speichern. (oder wenn du einfach zu faul bist für anderes) Zitieren
BillyBoy84 Geschrieben 19. Januar 2004 Autor Geschrieben 19. Januar 2004 Die Positionen sind alle durcheinander! Das erste Picture heißt ja Position1! Wie soll ich dass denn mit dem Array machen? Spielfigure.top:=Position1.top; Spielfigur.left:=Position1.left; Denn ist er ja an der gleichen Stelle! Aber wie sag ich jetzt, wenn eine 5 gewürfelt wird, dass er es nicht mehr von Position1 holen soll, sondern von Position7? Zitieren
Sill-el-Mot Geschrieben 19. Januar 2004 Geschrieben 19. Januar 2004 hi hab ich dich richtig verstanden: -du hast 39 positionen an die die figur rücken kann -oder hast du 39 verschieden bilder die, je nach position geändert werden? :confused: -soll die figur auf einer linie laufen oder veränderst du auch den y(top)-wert? wenn sie auf einer linie laufen soll, sagst du einfach "Spielfigure.top:=25;" oder so -den x-wert berechnest du entweder so wie jesterday beschrieben hat oder du machst ein array mit allen x-werten und guckst dann z.b. bei einer 7, welcher x-wert in dem array an stelle 7 steht: "Spielfigur.left:=X_Werte[7]" Zitieren
BillyBoy84 Geschrieben 19. Januar 2004 Autor Geschrieben 19. Januar 2004 Original geschrieben von Sill-el-Mot hi hab ich dich richtig verstanden: -du hast 39 positionen an die die figur rücken kann -oder hast du 39 verschieden bilder die, je nach position geändert werden? :confused: -soll die figur auf einer linie laufen oder veränderst du auch den y(top)-wert? wenn sie auf einer linie laufen soll, sagst du einfach "Spielfigure.top:=25;" oder so -den x-wert berechnest du entweder so wie jesterday beschrieben hat oder du machst ein array mit allen x-werten und guckst dann z.b. bei einer 7, welcher x-wert in dem array an stelle 7 steht: "Spielfigur.left:=X_Werte[7]" Ich habe 39 Positionen, an die die Figaur rücken kann! Der Top Wert und der Left Wer ändern sich! Zitieren
Sill-el-Mot Geschrieben 19. Januar 2004 Geschrieben 19. Januar 2004 dann mach doch einfach ein 2-dimensionales array. in die 1. dimension den x-wert in die 2te den y-wert: Spielfigur.top := PosWerte[7,2]; Spielfigur.left := PosWerte[7,1]; sowas in die richtung. jetzt kannst du anstelle der 7 noch den wuerfelwurf einbauen und dann dementsprechend die position bestimmen Zitieren
Pointerman Geschrieben 19. Januar 2004 Geschrieben 19. Januar 2004 Moin! Warum nicht für jede Spielfigur Variablen mit X- und Y-Position(in Feldern) verwenden. Wenn die Position verändert wird (z.B. X +4) einfach die jeweilige Variable verändern und dann das Feld + Figur neu zeichnen (dann nimmst Du einfach die Position * Feldhöhe bzw -breite). Praktisch ist es die Position mit Reihe und Spalte 0 beginnen zu lassen, weil es die Positionsberechnung erleichtert. Zitieren
BillyBoy84 Geschrieben 19. Januar 2004 Autor Geschrieben 19. Januar 2004 Original geschrieben von Sill-el-Mot dann mach doch einfach ein 2-dimensionales array. in die 1. dimension den x-wert in die 2te den y-wert: Spielfigur.top := PosWerte[7,2]; Spielfigur.left := PosWerte[7,1]; sowas in die richtung. jetzt kannst du anstelle der 7 noch den wuerfelwurf einbauen und dann dementsprechend die position bestimmen Soweit habe ich das jetzt verstanden Spielfigaur.Left gibt ja die x-Koordinaten an und Spielfigur.top die y-Koordinaten! Wofür ist jetzt das Array? Zitieren
Sill-el-Mot Geschrieben 19. Januar 2004 Geschrieben 19. Januar 2004 Original geschrieben von BillyBoy84 Wofür ist jetzt das Array? in dem array werden alle positionen gespeichert an denen deine spielfigur sich befinden kann. du kannst natürlich auch eine spezielle berechnung machen und die x-und y-werte ausrechnen. ich weis halt net so genau wie dein proggy nachher aussehen soll. Zitieren
geloescht_JesterDay Geschrieben 19. Januar 2004 Geschrieben 19. Januar 2004 Also wegen der neuen Position... um z.B. von 1 auf 7 zu kommen bei einem Wurf von 6 merkst du dir einfach wo die Figur gerade ist. Einfach über eine globale VAriable, elegant über eine Spielfigur-Klasse. Array: Type TPosRec = record X, Y: Integer; end; TArPos = Array[1..39] of TPosRec; var arPos: TArPos; Position5.Left: arPos[5].x; Position5Top: arPos[5].y; Zitieren
BillyBoy84 Geschrieben 19. Januar 2004 Autor Geschrieben 19. Januar 2004 Original geschrieben von Sill-el-Mot in dem array werden alle positionen gespeichert an denen deine spielfigur sich befinden kann. du kannst natürlich auch eine spezielle berechnung machen und die x-und y-werte ausrechnen. ich weis halt net so genau wie dein proggy nachher aussehen soll. Ja, aber wofür brauche ich ein 2dimensionales Array? Es ist doch jeweils nur ein Wert, den ich brauche! Zitieren
Sill-el-Mot Geschrieben 19. Januar 2004 Geschrieben 19. Januar 2004 Original geschrieben von BillyBoy84 Ja, aber wofür brauche ich ein 2dimensionales Array? Es ist doch jeweils nur ein Wert, den ich brauche! ich hätte jetzt in die 1ste dim den x-wert und in die 2te dim den y-wert reingespeichert. besser is natürlich wie jesterday gemacht hat, aber da hab ich net dran gedacht. Zitieren
BillyBoy84 Geschrieben 19. Januar 2004 Autor Geschrieben 19. Januar 2004 Ok, funktioniert! danke an alle! Hab noch eine letzte Frage: Kann ich das x oben rechts einstellen, dass nichts passiert, wenn man da drauf klickt? Zitieren
Pointerman Geschrieben 19. Januar 2004 Geschrieben 19. Januar 2004 Das könnte evtl etwas umständlciher werden. Alternativ könntest Du im Objektmanager unter BorderIcons biSystemMenu auf False setzen. Beim ausgeführten Programm werden dann X, Minimieren und Maximieren nicht angezeigt. Zitieren
BillyBoy84 Geschrieben 19. Januar 2004 Autor Geschrieben 19. Januar 2004 Original geschrieben von Pointerman Das könnte evtl etwas umständlciher werden. Alternativ könntest Du im Objektmanager unter BorderIcons biSystemMenu auf False setzen. Beim ausgeführten Programm werden dann X, Minimieren und Maximieren nicht angezeigt. Ja, dass ist noch besser und wie geht das genau??? Zitieren
BillyBoy84 Geschrieben 19. Januar 2004 Autor Geschrieben 19. Januar 2004 Oder wie bekomme ich den Vollbildmodus hin? Nicht nur das Bild maximieren, sondern den Vollbildmodus bräuchte ich!!! Zitieren
Pointerman Geschrieben 20. Januar 2004 Geschrieben 20. Januar 2004 Ist das ein Witz oder teilst Du Dir Deine FI.de-Konto mit jemandem? Ich habe Dir diese Frage hier: http://forum.fachinformatiker.de/showthread.php?s=&threadid=57945 beantwortet!:confused: :confused: Zitieren
BillyBoy84 Geschrieben 20. Januar 2004 Autor Geschrieben 20. Januar 2004 Ist kein Witz, als du das geschrieben hattest sagte ein Kumpel, der bei mir war, dass er weiss was gemeint ist und es machen wollte! Naja, erst große Klappe und denn hat er es doch nicht hinbekommen! Ich weiss nicht genau, was du damit meinst, wo muss ich das einstellen? Zitieren
grueni Geschrieben 20. Januar 2004 Geschrieben 20. Januar 2004 Das stellt man nirgends ein, das ist ein WinAPI Befehl. Tipp einfach mal irgendwo im Quelltext ChangeDisplaySettings ein und drück F1, dann sollte die richtige Hilfeseite kommen. Das Flag "CDS_FULLSCREEN" kannte ich auch nicht. Zitieren
whisper Geschrieben 25. Januar 2004 Geschrieben 25. Januar 2004 Kann ich das x oben rechts einstellen, dass nichts passiert, wenn man da drauf klickt? Bei den Ereignissen vom Formular musst du dafür das Ereignis OnCloseQuery raussuchen, und dort diesen Quellcode hinterlegen: CanClose := False; Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.