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!
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)
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?
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]"
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!
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
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.
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?
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.
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;
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!
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.
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?
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.
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???
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!!!
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:
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?
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.
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;
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden