Figuren laufen
Übersicht

Holger123Betreff: Figuren laufen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe mal eine Frage, ich will drei Figuren nacheinander ! von einem, zum anderem Punkt laufen lassen, irgendwie bekomme ich das nicht hin.
Das Problem was ich dabei habe, das entweder der Aufruf des Hintergundes den vorherigen Läufer wieder löscht, oder wenn ich den zweiten Aufruf des Hintergundes deaktiviere man die Laufspuren vom Anfang zum Ende sieht. Ich möchte das der vorherige Läufer an der Entzone stehen bleibt und zusehen ist wenn der nächste losläuft, am ende sollen alle drei am Ende zu sehen sein. Ich rufe die Funktion dreimal hintereinander auf, liegt dabei eventuell der Fehler ? Gehe ich da falsch ran, bitte um Hilfe Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer () laufen (250,90) laufen (190,130) laufen (100,240) Function laufen(End_X, End_Y) Hintergrund = LoadImage ("karte.bmp") Spieler = LoadImage ("figur.bmp") DrawBlock Hintergrund,0,0 Start_X=440 Start_Y=120 Repeat If Start_X < End_X Then Start_X = Start_X + 5 If Start_Y < End_Y Then Start_Y = Start_Y + 5 If Start_Y > End_Y Then Start_Y = Start_Y - 5 If Start_X > End_X Then Start_X = Start_X - 5 DrawBlock Hintergrund,0,0, wenn deaktiviert Laufspuren DrawImage spieler,Start_X,Start_Y Flip Until Start_X=End_X And Start_Y=End_Y End Function |
||
- Zuletzt bearbeitet von Holger123 am So, Sep 16, 2007 23:08, insgesamt einmal bearbeitet
![]() |
BigMaexle |
![]() Antworten mit Zitat ![]() |
---|---|---|
Flip und Cls IN die Schleife ![]() |
||
--------------------------------------
Ich bin unfreiwillig ein Mitglied dieser kapitalistischen Gesellschaft, wo jeder Geldgeile Unternehmer an mein Geld will und ich selbst bei meinen Entscheidungen so gut wie willenlos bin...... und ich bin glücklich drüber |
Holger123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist richtig, Flip kommt vor Until..
Trotzdem funktioniert es nicht, der vorherige Läufer wird beim Start des nächsten Läufer gelöscht und das soll er nicht, er soll an der Entkoordinate weiter zu sehen sein. Man kann sich das wie Steine die von der Decke hintereinander fallen vorstellen, wenn der eine unten ist, soll der nächste runter fallen. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann brauchst du types wo die koordinaten des jeweiligen läufers und alle anderen relevanten daten drin gespeichert sind, damit du für jeden läufer eigenständige daten speichern kannst | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
LordArtus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
je nachdem , was du machen willst , aber das was du machen (so meine Vermutung) willst , liegt an den überzeichnen mit: Code: [AUSKLAPPEN] DrawBlock Hintergrund,0,0 mach es einfach weg. Falls du es doch mit dem Hintergrund haben willst,mach es so: Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer () Hintergrund = LoadImage ("karte.bmp") Spieler = LoadImage ("figur.bmp") DrawBlock Hintergrund,0,0 laufen (250,90) laufen (190,130) laufen (100,240) Function laufen(End_X, End_Y) Start_X=440 Start_Y=120 Repeat If Start_X < End_X Then Start_X = Start_X + 5 If Start_Y < End_Y Then Start_Y = Start_Y + 5 If Start_Y > End_Y Then Start_Y = Start_Y - 5 If Start_X > End_X Then Start_X = Start_X - 5 DrawImage spieler,Start_X,Start_Y Flip Until Start_X=End_X And Start_Y=End_Y End Function habs nicht getestet , aber müsste funzen. MfG LordArtus |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich persönlich würde hier von der verwendung einer funktion komplett abraten.. da gibt es sicher bessere methoden das umzusetzen...
gruß, Smily0412 Edit: Lord Artus, ich kann von hier aus deinen Code nicht testen, aber ich bin mir ziemilch sicher, dass dieser code NICHT so geht wie er soll ![]() |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
LordArtus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja , hast Recht Smily , aber immer hin , müsste das erste laufen und das dritte am Ende zu sehen sein ![]() Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer () Hintergrund = LoadImage ("karte.bmp") Spieler = LoadImage ("figur.bmp") DrawBlock Hintergrund,0,0 laufen (250,90) laufen (190,130) laufen (100,240) Flip Function laufen(End_X, End_Y) Start_X=440 Start_Y=120 Repeat If Start_X < End_X Then Start_X = Start_X + 5 If Start_Y < End_Y Then Start_Y = Start_Y + 5 If Start_Y > End_Y Then Start_Y = Start_Y - 5 If Start_X > End_X Then Start_X = Start_X - 5 DrawImage spieler,Start_X,Start_Y Until Start_X=End_X And Start_Y=End_Y End Function so denke ich würde man am Ende alles sehen.(Alles ungetestet) MfG LordArtus |
||
Holger123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es kann ja auch nicht laufen, schon weil das laden der Bilder nicht in der Funktion steht.
Vielleicht habe ich mich auch nicht richtig ausgedrückt, es sollen alle Figuren die die Endkoordinate erreicht haben, dort stehen bleiben und zu sehen sein. Macht man das mit CLS oder man ruft den Hintergrund nochmal in der Schleife auf, ist der vorherige Läufer wieder verschwunden. Trotzdem Danke an alle die sich bemüht haben.. Vielleicht könnte mir jemand mal den richtigen Weg posten.. Ich habe mal eine kurze gemalte Animation rangehangen wie ich es eigentlich meine.. Natürlich soll der lauf gerade sein (x+1 , y+1), nicht solch geeier wie in der Animation Ich bin relativ unerfahren mit BB, ich stosse dabei an meine Grenzen. Ausserdem scheint das auch garnicht mal so einfach zu sein mit meiner gewünschten Funktion, weil der Hintergund ja immer wieder neu aufgerufen werden muss um die Laufspuren zu elemenieren und trotzdem dürfen die Läufer an den Entkoordinaten nicht verschwinden. Man müsste dann wohl nach dem Auruf des Hintergundes die Läufer am Ende nochmal zeichen. Vielleicht gibt es ja jemanden hier der das drauf hat. Danke Holger ![]() |
||
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay wie schon einige gesagt haben muss jede peron ihre eigenden daten haben deshalb würde ich das an deine Stelle so machen.
Code: [AUSKLAPPEN] Dim StartX(10),StartY(10) For I=0 to 2 StartX(I)=440 StartY(I)=120 next DrawBlock Hintergrund,0,0 laufen (250,90,0) laufen (190,130,1) laufen (100,240,2) Flip Function laufen(End_X, End_Y,Mann) DrawImage spieler,StartX(Mann),StartY(Mann) if StartX(Mann)=End_X and StartY(Mann)=End_Y then return If StartX(Mann)< End_X Then StartX(Mann)=StartX(Mann)+5 If StartY(Mann)< End_Y Then StartY(Mann)=StartY(Mann)+5 If StartY(Mann)> End_Y Then StartY(Mann)=StartY(Mann)-5 If StartX(Mann)> End_X Then StartX(Mann)=StartX(Mann)-5 End Function So müste es eigentlich klappen. Gruß Matthias. |
||
- Zuletzt bearbeitet von Matthias am Mo, Sep 17, 2007 14:06, insgesamt einmal bearbeitet
![]() |
LordArtus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also für sowas brauchst du Types , hat schon Dreamora gesagt.
Types sind für Anfänger nicht so leicht zu verstehen.Aber kannst Dich hier im Forum umschauen , es gibt glaube ein Tutorial für Types. Wenn du willst , schreibe ich Dir ein BeispielCode , aber erst heute abend. MfG LordArtus |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
LordArtus hat Folgendes geschrieben: Also für sowas brauchst du Types , hat schon Dreamora gesagt.
Types sind für Anfänger nicht so leicht zu verstehen.Aber kannst Dich hier im Forum umschauen , es gibt glaube ein Tutorial für Types. Wenn du willst , schreibe ich Dir ein BeispielCode , aber erst heute abend. MfG LordArtus Und bitte, bitte teste sie in zukunft, bevor du hier das nächste mal einen Code Postest.... der Zweite Code ist nämlich genauso nutzlos wie der erste... ![]() Und nochmal mit Nachdruck... hier sollten keine Funktionen verwendet werden... ich würde das so machen (Bitte verzeiht mir meinen etwas eigenwilligen Pseudocode... allerdings habe ich erstens hier kein blitzbasic und zweitens will ich hier niemanden das denken vollends abnehmen... ich will nur die richtung vorgeben) (Variable L ist die Figur, die gerade läuft) Code: [AUSKLAPPEN] allgemeine wichtige dinge (Graphics, Bilder laden etc.) Für Figuren 1-3 start (bzw aktuelle) und endposition vorgeben (Am besten in einem Type.. wenn du weniger erfahren bis solltest du es erstmal mit Dims versuchen) L=1 Tue Figur L läuft ein kleines stück nach rechts. Wenn Figur L das ziel erreich hat dann L+1 Alles zeichnen. Bis irgendwas gruß, Smily0412 |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So der Code Functioniert aber fehlerfrei.
Code: [AUSKLAPPEN] Graphics 800,600,32,2 Dim Lauf_X#(20),Lauf_Y#(20) For I=0 To 2 Lauf_X(I)=440 Lauf_Y(I)=120 Next SetBuffer BackBuffer() Repeat Cls laufen (250,90,0,3) laufen (190,130,1,2) laufen (100,240,2,3) Flip Until KeyDown(1)=1 End Function Laufen(End_X,End_Y,Mann,Speed#) EX=Lauf_X(Mann)-End_X EY=Lauf_Y(Mann)-End_Y If Abs(EX)+Abs(EY)=>Speed Then Winkel#=ATan2(EX,EY)+180 Lauf_X(Mann)=Lauf_X(Mann)+Sin(Winkel)*Speed Lauf_Y(Mann)=Lauf_Y(Mann)+Cos(Winkel)*Speed end if Plot End_X,End_Y Oval Lauf_X(Mann)-3,Lauf_Y(Mann)-3,5,5 End Function |
||
Holger123 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für eure Tips, ich werde mich dann wohl mal weiter mit den Types beschäftigen müssen.
Ich hätte nicht gedacht, das für solche kleine Funktion doch ein erheblicher Aufwand betrieben werden muss. Gruss Holger |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Muss auch nicht.
Types sind kein erheblicher Aufwand sondern die einzig sinnvolle Art um Datenblöcke zu handhaben, wenn man für einzelne Dublikate eines Objektes "dublikatspezifische Daten" (Position, Animationsframe etc) speichern will. Ein Type ist dabei nichts anderes als ein schöner nutzbarer Speicherblock (sprich anstatt das du einzelne Adressen angeben musst, macht der Type das für dich wenn du auf ein Field zugreifst). Ein weiterer vorteil ist, dass man durch alle Types eines bestimmten Typ durchloopen kann durch for a.Type = each Type, was in deinem Fall gewiss auch noch von Vorteil sein wird ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group