Problem mit Frames

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

Jack

Betreff: Problem mit Frames

BeitragDo, Jun 16, 2005 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich mal wieder. Wink

Also, mein Code ist folgender:
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()

ClsColor 0,0,255
Cls

Figur = LoadAnimImage("C:\Bilder\Dino.bmp",35,50,0,8)

Global Frame  = 1
Global RFrame = 1
Global Nr = 0

MaskImage Figur, 255,255,255
Global Position = 0

Repeat
 Cls
 If KeyDown(205) Then
  Frame = Frame + 1
  If Frame > 2 Then Frame = 2
  Position = 1
 ElseIf KeyDown(203) Then
  RFrame = RFrame + 1
  If RFrame > 2 Then RFrame = 2
  Position = 0
 ElseIf KeyDown(57) And Position = 0 Then
  RFrame = 2
  RFrame = RFrame + 1
  If RFrame > 3 Then RFrame = 3
 ElseIf KeyDown(57) And Position = 1 Then
  Frame = 2
  Frame = Frame + 1
  If Frame > 3 Then Frame = 3
 Else
  If Position = 0 Then
   RFrame = 1
   Nr = RFrame
  EndIf
  If Position = 1 Then
   Frame = 1
   Nr = Frame
  EndIf
 EndIf
 If KeyDown(1) Then Exit
 DrawImage Figur, 300,210, Nr
 Flip
Forever
Cls
Text 100,100,"Tschau"
WaitKey


Kein Syntaxfehler. Nur Logikfehler. Einen Fehler hab ich schon gefunden. Mit RFrame. Naja, ist ja nur ein einfaches Beispiel. Kann mir jemand eine Funktion geben, der ich Frames übergebe, die dann hintereinander angezeigt geben Question Danke schon mal im Voraus Exclamation Ach ja, mein Bild schick ich jedem von euch per Mail, außer, wenn er die Bilder von BB2D hat. Das wäre dann Arc1.bmp.
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Sa, Jun 25, 2005 11:02, insgesamt 2-mal bearbeitet

d-bug

BeitragDo, Jun 16, 2005 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du evtl. dein Problem etwas genauer ausführen ?

Jack

BeitragDo, Jun 16, 2005 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, starte ich das Programm, ist blauer Hintergrund, die Figur steht in der Mitte und lässt sich nicht bewegen Exclamation Aber ich bat eigentlich nur um eine Funktion. Embarassed
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Fr, Jun 24, 2005 14:26, insgesamt einmal bearbeitet

d-bug

BeitragDo, Jun 16, 2005 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Da du dein Problem anscheinend nicht selber lösen möchtest, lege ich dir die Suchfunktion dieses Forums ans Herz Smile... Nur mal als Suchbegriff Frames eingeben und als Forum Beginners-Corner (BB) schätze da wirst du sicherlich genügend Beispiele und FUNKTIONEN finden...

Kann dir sonst nicht helfen, da ich auf der Arbeit bin und kein BB zur Hand habe. Außerdem solltest du diese Funkionen lieber selbst ausklügeln, denn so lernst du es am besten. Wink

greetz

Alfadur

BeitragDo, Jun 16, 2005 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
komisch dennerlein, als ich neulich empfahl für das frame-anzeige problem eine funktion zu schreiben warst du wieder trotzig meintest sogar mich bei moderatoren anschwärzen lasen zu müssen ... und auf einmal bittest du sogar jetzt hier öffentlich um so ne funktion? gehts noch?
aber ich wäre ja nich der liebe nette alfadur wenn ich dir nicht helfen würde. also lass das mit rframe und frame und speichere alle hintereinander in aufsteigender reihenfolge, bei angenommen 5 frames in jede richtung setzt du dann den startframe bei tastendruck auf oben zb auf 0 und zählst von dort 5 frames, bei nach links setzt du startframe auf 5 und zählst 5, andere taste auf 10 und noch andere auf 15... dann noch ein counter der kontinuierlich nach oben zählt und fertig ist...
und denk doch einfach mal selber nach. das macht auch spaß...
A Cray is the only computer that runs an endless loop in less than four hours.

Jack

BeitragDo, Jun 16, 2005 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
@d:bug
von nicht wollen kann gar keine rede sein. Rolling Eyes

@alfadur
danke, ich guck mal nach Exclamation
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Fr, Jun 24, 2005 14:26, insgesamt einmal bearbeitet

Jack

BeitragDo, Jun 16, 2005 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich hab jetzt zwei Funktionen:
Code: [AUSKLAPPEN]
Function SETFRAMERECHTS(ErsterFrame,LetzterFrame)
 For I = ErsterFrame To LetzterFrame Step -1
  If KeyDown(205) Then
   FigurX = FigurX + 20
   Scroll = Scroll + 20
   Nr = I
   Delay 150
  EndIf
 Next
End Function
 
Function SETFRAMELINKS(ErsterFrame,LetzterFrame)
 For X = ErsterFrame To LetzterFrame
  If KeyDown(203) Then
   FigurX = FigurX - 20
   Scroll = Scroll - 20
   Nr = X
   Delay 150
  EndIf
 Next
End Function

Naja, das Gleiche wie vorher Exclamation
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Fr, Jun 24, 2005 14:27, insgesamt einmal bearbeitet

Alfadur

BeitragDo, Jun 16, 2005 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
völliger blödsinn...

global frame

funktion draw_spieler(laufen,startframe)
wenn laufen=true dann
wenn frame>4 dann frame=0 ansonsten frame=frame+1
ansonsten
frame=0
ende wenn
drawimage image,x,y,startframe+frame
ende funktion

while

wenn taste-oben: laufen=true: sframe=0
else laufen=false:

wenn taste-unten: laufen=true: sframe=5
else laufen=false

wenn taste-links: laufen=true: sframe=10
else laufen=false

wenn taste-rechts: laufen=true: sframe=15
else laufen=false

draw_spieler(laufen,sframe)

wend


so ungefähr. nur konvertieren in basic....
A Cray is the only computer that runs an endless loop in less than four hours.

Jack

BeitragSo, Jun 19, 2005 8:26
Antworten mit Zitat
Benutzer-Profile anzeigen
also, alfadur, jetzt erscheint immer "Image does not exist", aber der Pfad stimmt 100%ig. hier ist mein
Code: [AUSKLAPPEN]
Global frame

Function drawspieler(laufen,startframe)
If laufen=True Then
If frame>4 Then frame=0 Else frame=frame+1
Else
frame=0
EndIf 
DrawImage Figur, 100,200, startframe + frame
End Function

Graphics 640,480
SetBuffer BackBuffer()

ClsColor 0,0,255
Cls

Figur  = LoadAnimImage("C:\Bilder\Dino.bmp",35,50,0,8)

MaskImage Figur, 255,255,255

Repeat
 Cls
 drawspieler 0,3
 If KeyDown(1) Then Exit
 Delay 150
 Flip
Forever
Cls
Text 100,100,"Tschau"
WaitKey


was stimmt hier nicht Question kann mir jemand helfen Question danke im vorraus Exclamation
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Fr, Jun 24, 2005 14:27, insgesamt einmal bearbeitet
 

Apocalyptic

BeitragSo, Jun 19, 2005 9:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wärs mit BlitzBasic: [AUSKLAPPEN]
Global Figur
?

Und zu dem Pseudocode von Alfadur:

So wäre es besser:

laufen=false

wenn taste-oben: laufen=true: sframe=0

wenn taste-unten: laufen=true: sframe=5

wenn taste-links: laufen=true: sframe=10

wenn taste-rechts: laufen=true: sframe=15

Sonst müsste man die letzte Taste immer drücken, damit "laufen" nicht False ist. Die andere Möglichkeit wäre ElseIf. Ich erwähne das nur, um eventuellen Komplikationen vorzubeugen Wink
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Jack

BeitragSo, Jun 19, 2005 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, mein Code sieht jetzt so aus:
Code: [AUSKLAPPEN]
Global frame
Global laufen = False
Global sframe = False

Function drawspieler(laufen,sframe)

If KeyDown(200) Then
 laufen=True
 sframe=0

ElseIf KeyDown(208) Then
 laufen=True
 sframe=5

ElseIf KeyDown(203) Then
 laufen=True
 sframe=10

ElseIf KeyDown(205) Then
 laufen=True
 sframe=15

EndIf 
DrawImage Figur, 100,200, sframe + frame
End Function

Graphics 640,480
SetBuffer BackBuffer()

ClsColor 0,0,255
Cls

Global Figur  = LoadAnimImage("C:\Bilder\Dino.bmp",35,50,0,8)

MaskImage Figur, 255,255,255

Repeat
 Cls
 drawspieler 0,3
 If KeyDown(1) Then Exit
 Delay 150
 Flip
Forever
Cls
Text 100,100,"Tschau"
WaitKey

Aber er geht immer noch nicht. Es liegt daran, dass Apocalyptic den SFrame über 8 bzw. 7 getan hat. Deshalb steht immer diese Fehlermeldung da:
"Image frame out of range". Das Debug-Menü zeigt diese Dinge:
Globals
frame = 0
laufen = 0
sframe = 0
figur = 12087736
Locals drawspieler
laufen = 1
sframe = 15
Bei KeyDown(205). Kann mir jemand helfen Question Danke im Voraus Exclamation Laughing Laughing Very Happy Very Happy
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Fr, Jun 24, 2005 14:27, insgesamt einmal bearbeitet

d-bug

BeitragSo, Jun 19, 2005 12:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, sollte wohl bei Keydown(203) auch passieren. du lädst doch nur ein AnimImage mit 9 Frames, woher willst du dann frame 15 bekommen ?

oh , jetzt hab ichs gesehen...

hast da eine variable vertauscht

Code: [AUSKLAPPEN]

Function drawspieler(laufen,sframe)

  If KeyDown(200) Then
    laufen=True
    frame=0

  ElseIf KeyDown(208) Then
    laufen=True
    frame=5

  ElseIf KeyDown(203) Then
    laufen=True
    frame=10

  ElseIf KeyDown(205) Then
    laufen=True
    frame=15

  EndIf

  DrawImage Figur, 100,200, sframe + frame

End Function


aber trotzdem werden diese beiden :

Code: [AUSKLAPPEN]
 ElseIf KeyDown(203) Then
    laufen=True
    frame=10

  ElseIf KeyDown(205) Then
    laufen=True
    frame=15


nicht funktionieren, da du nur frame 0-8 zur verfügung hast...

greetz

Jack

BeitragSo, Jun 19, 2005 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber wie soll ich es jetzt machen Question
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Fr, Jun 24, 2005 14:28, insgesamt einmal bearbeitet

d-bug

BeitragSo, Jun 19, 2005 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
omg,

check erst mal wieviele frames dieser dino nun wirklich hat...
am besten du stellst ihn hier mal aus, damit ich das image mal sehen kann

laut deiner funktion müßte der nun 18 frames haben. sollte dem so sein, dann muß du auch 18 frames laden...

Code: [AUSKLAPPEN]
Global Figur  = LoadAnimImage("C:\Bilder\Dino.bmp",35,50,0,18)


aber um das genau zu sagen brauch ich das bild !!!

greetz

Alfadur

BeitragSo, Jun 19, 2005 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
außerdem vermisst man bei dir immernoch das

wenn frame>4 dann frame=0 ansonsten frame=frame+1

von alleine animiert sich da nämlich nix. und die tastaturabfrage soll nich mit in die funktion...

@apocalyptic : stimmt mit dem false, aber wie er es umsetzt ist ja seine sache, war ja nur pseudocode .-)
A Cray is the only computer that runs an endless loop in less than four hours.
 

Apocalyptic

BeitragSo, Jun 19, 2005 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Alfadur hat Folgendes geschrieben:
@apocalyptic : stimmt mit dem false, aber wie er es umsetzt ist ja seine sache, war ja nur pseudocode .-)


Ich wollte nur verhindern, dass gleich wieder ein "Hilfe, das geht nicht!"-Post kommt... Hat wohl nicht geholfen Wink

@ Dennerlein: Lies die Onlinehilfe, das ein oder andere Tutorial und denk nach. Am Ende sollte das Ganze so in etwa aussehen (SO sollte es eigentlich nicht aussehen. Das liegt daran, dass ich deinen Code nur ergänzt habe... Wink ):BlitzBasic: [AUSKLAPPEN]
Global frame
Global laufen = False
Global sframe = False

Function drawspieler()

If KeyDown(200) Then
laufen=True
sframe=0

ElseIf KeyDown(208) Then
laufen=True
sframe=5

ElseIf KeyDown(203) Then
laufen=True
sframe=10

ElseIf KeyDown(205) Then
laufen=True
sframe=15
Else
laufen=0
EndIf

If Laufen=True Then frame=(frame+1) Mod 5

DrawImage Figur, 100,200, sframe + frame
End Function

Graphics 640,480,16,2

Global Figur = CreateImage(35,50,20)

For i=0 To 19
SetBuffer ImageBuffer(Figur,i)
Text 17,25,i,1,1
Next

SetBuffer BackBuffer()
ClsColor 0,0,255
Cls


;LoadAnimImage(\"C:\Bilder\Dino.bmp\",35,50,0,8)

MaskImage Figur, 255,255,255

Repeat
Cls
drawspieler
If KeyDown(1) Then Exit
Delay 150
Flip
Forever
Cls
Text 100,100,\"Tschau\"
WaitKey



Warum ich das hier poste weiß ich auch nicht, der Lerneffekt beim Kopieren von Code nähert sich 0... da du mit "fremdem" Code jedoch scheinbar nichts anfangen kannst (s.o.), ist das wahrscheinlich sowieso egal...
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Jack

BeitragMo, Jun 20, 2005 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Juhu, danke @all und vor allem an Apocalyptic Exclamation Der Code funzt. Danke, ich ändere jetzt noch etwas, denn alle konnten ja nicht wissen, das ich die Bewegung nach unten(und oben)von mir nicht gebraucht wird(werden). Very Happy Und dann ändere ich noch das mit dem Bild.

P.S: Das "und oben" in den Klammern, hab ich in Klammern geschrieben, weil ich das nur beim Springen brauche. Laughing Nur zur Erinnerung Exclamation Wink
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Fr, Jun 24, 2005 14:28, insgesamt einmal bearbeitet

Jack

BeitragMi, Jun 22, 2005 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, hier mein neues Programm:
Code: [AUSKLAPPEN]
Global frame
Global laufen = False
Global sframe = False

Function drawspieler()
 If KeyDown(203) Then
  laufen = True
  sframe = 5
 
 ElseIf KeyDown(205) Then
  laufen = True
  sframe = 1
 Else
  laufen = 0
 EndIf
 
 If laufen = True Then frame = (frame + 1) Mod 2
 If sframe > 5 Then sframe = 5
 If sframe < 4 Then sframe = 4
 If sframe > 1 Then sframe = 1
 If sframe < 2 Then sframe = 2
 
 DrawImage Figur, 100,200, sframe + frame
End Function

Graphics 640,480,16,2
SetBuffer BackBuffer()
ClsColor 0,0,255
Cls

Global Figur = LoadAnimImage("C:\Bilder\Dino.bmp",35,50,0,8)

MaskImage Figur, 255,255,255

Repeat
 Cls
 drawspieler
 If KeyDown(1) Then Exit
 Delay 150
 Flip
Forever
End

Der Code funzt, naja, bis auf eine klitzekleine Kleinigkeit:
Wenn ich die linke Pfeiltaste drücke, dann sind das die gleichen Frames, wie bei der rechten. Was kann ich ändern Question Könnt ihr mir helfen Question Danke schon mal im Voraus Laughing
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Fr, Jun 24, 2005 14:28, insgesamt einmal bearbeitet

Alfadur

BeitragMi, Jun 22, 2005 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]

If sframe > 5 Then sframe = 5
If sframe < 4 Then sframe = 4
If sframe > 1 Then sframe = 1
If sframe < 2 Then sframe = 2


was haste dir dabei gedacht?
A Cray is the only computer that runs an endless loop in less than four hours.

Jack

BeitragMi, Jun 22, 2005 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Was denn Question Ich hab doch ne ganz normale Frage gestellt, oder Confused:Wenn du damit ein Problem hast, dann antworte erst gar nicht mehr in diesem Thread oder halte dich aus meinen Problemen heruas Exclamation Oder spinnt mein Provider Question
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
  • Zuletzt bearbeitet von Jack am Fr, Jun 24, 2005 14:29, insgesamt einmal bearbeitet

Gehe zu Seite 1, 2  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group