Frame-Frage (ich bin ein Noob)-Noch nicht gelöst

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3, 4  Weiter

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

 

petecoolbelab

BeitragSa, März 29, 2008 0:01
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
Divide by zero heisst "Teile durch null." Und das ist mathematisch nicht definiert.
Es bedeutet dass du irgendwo versuchst durch null zu teilen. Der Debugger wird dir zeigen wo.
Da in dem Code den Du hier postest allerdings keine Division vorkommt muss der Fehler wohl woanders liegen (sprich du hast wohl nicht allen Code gepostet).



Stimmt, sorry. Es steht Until without repeat.
Warum?


Help Me, please.

BladeRunner

Moderator

BeitragSa, März 29, 2008 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
"Until without repeat" (wie eigentlich alle "bla without blub"-Errors) deuten darauf hin dass du irgendwo eine Schleife o.ä. nicht geschlossen hast.
Viel Spass beim Suchen Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

petecoolbelab

BeitragSa, März 29, 2008 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
"Until without repeat" (wie eigentlich alle "bla without blub"-Errors) deuten darauf hin dass du irgendwo eine Schleife o.ä. nicht geschlossen hast.
Viel Spass beim Suchen Wink


Danke, dass du mir beim suchen hilfst (echt), denn für so was istn Forum ja da

The_Nici

BeitragSa, März 29, 2008 0:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Könnte auftreten bei fehlender Klammer, If ohne Endif, While ohne Wend und Select ohne EndSelect.
 

petecoolbelab

BeitragSo, März 30, 2008 20:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich finde wirklich keinen Fehler.

Please, Help me

The_Nici

BeitragSo, März 30, 2008 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast beim "If Pause=" ein ql:EndIf vergessen.
 

petecoolbelab

BeitragSo, März 30, 2008 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe mein Projekt ausgeweited sieht jetzt so aus:

Code: [AUSKLAPPEN]

Graphics 640 , 480 , 16 , 3
SetBuffer BackBuffer ()
Bild1 = LoadAnimImage ("AL_HEroes2.png", 87 , 180 , 0, 11) ;animation laden
MaskImage Bild1, 255, 255 , 255 ;transparenz
Local frame ;variable deklarieren
Bild2 = LoadAnimImage ("AL_HEroes2_spiegel.png", xpos, 180, 0, 11)
Local frame2
Miene1 = LoadImage("Miene1.png")
MaskImage Miene1, 255, 255, 255
Abfont = LoadFont("Arial Black")   

Repeat
       Cls
       ;Frame weiterschalten nur wenn keine Pause
             
   
      If zeit + 100 < MilliSecs () And pause = 1 Then
           zeit = MilliSecs ()
           frame = frame + 1
           If frame = 11 Then frame = 0
       EndIf
       

      
      If zeit + 100 < MilliSecs () And pause = 0 Then
       DrawImage Bild1 ,Xpos, 310 , frame ;Bild malen
       EndIf
       
      
      If zeit + 100 < MilliSecs () And pause = 2 Then
           zeit = MilliSecs ()
           frame = frame + 1
           If frame = 11 Then frame = 0
       EndIf
       

      
      If zeit + 100 < MilliSecs () And pause = 2 Then
       DrawImage Bild2 ,Xpos, 310 , frame ;Bild malen
       EndIf
       
      

      ;Miene
      DrawImage Miene1, 400, 440
      ;
       ;Pause ON/OFF
       
      If KeyDown (205) Then
      pause = 1
       ElseIf KeyDown (203) Then
      pause = 2
       Else
      pause = 0
      EndIf
      
      If Pause = 1 Then xpos = xpos + 2
      
      
      If Pause = 0 Then
         xpos = xpos
         ElseIf Pause = 2 Then
         ypos = ypos - 2 ; Figur wieder nach links setzten
         EndIf
       If xpos > 480 Then
      xpos = 0
      EndIf

      
      If ImagesCollide(Bild1, Xpos, 310, frame, Miene1, 400, 440, 0) Then
      Cls
      SetFont Abfont
      Print("Sorry. Du hast verloren!")
      WaitKey
      End
      EndIf
      
      
      

       Flip
   
      
   Until KeyHit (1); wenn ESC dann beenden
   WaitKey
  End




Funzt. Auch net. Ich sehe wirkli keinen Fehler

mas93

BeitragSo, März 30, 2008 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Sollen wir Gedankenlesen?
Was genau funktioniert nicht?
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]
 

petecoolbelab

BeitragSo, März 30, 2008 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Until without repeat
 

petecoolbelab

BeitragSo, März 30, 2008 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
petecoolbelab hat Folgendes geschrieben:
Until without repeat


das funzt net

mas93

BeitragSo, März 30, 2008 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hab jetzt nurmal grob drübergehschaut, aber ich glaube hier fehlt ein endif:

Code: [AUSKLAPPEN]

      ;Miene
      DrawImage Miene1, 400, 440
      ;
       ;Pause ON/OFF
       
      If KeyDown (205) Then
      pause = 1
       ElseIf KeyDown (203) Then
      pause = 2
       Else
      pause = 0
      EndIf

Du musste dein ElseIf auch mit einem Endif wieder schliessen.
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Moep

BeitragSo, März 30, 2008 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Is jetzt nich böse gemeint.

Wenn man es mit Blitz zu etwas bringen will sollte man schon verstehen was "Integer divided by zero" bedeutet.
Du postest hier irgendwelchen fehlerhaften Code und willst von uns, dass wir den Fehler finden und beseitigen. So funktioniert Programmieren nicht. Trotzdem werden dir hier etliche Lösungen angeboten, die du einfach übernimmst ohne sie wirklich zu verstehen.
Wenn ich dem Thread folge scheint es so, als ob du, wenn du einen Fehler findest und ihn nicht beheben kannst, einfach das Programm weiter machst ohne eine Lösung gefunden zu haben.
Ich weiß wir sind hier im Beginners-Corner, aber als Beginner sollte man auch auf die anderen hören und nach eigenen Lösungen suchen und nicht einfach Kopieren und Einfügen.

mfg
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

The_Nici

BeitragMo, März 31, 2008 6:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte rücke deine Codes richtig mit der Tabulatortaste ein. (Die mit dem ->| drauf!)
Danke. Dann hast du nämlich den Fehler auch schnell gefunden.

Wie schon gesagt, wenn du wegen jedem Syntaxfehler angerannt kommst dann wird dir mit der Zeit niemand mehr helfen.
Und Moep, es gibt öfters solche Leute, z.B. Kelix, die einfach nicht hören wollen was man ihnen sagt. xD
 

petecoolbelab

BeitragMo, März 31, 2008 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok.

Ich habs eingesehen. Hab zwar den Fehler noch immer nicht, suche aber selber und werde das auch weiter tun.
 

Code der Verwirrung

BeitragMo, März 31, 2008 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
vieleicht sollte man hiernach nen endif setzen:

If Pause = 1 Then xpos = xpos + 2
 

petecoolbelab

BeitragDi, Apr 01, 2008 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
Divide by zero heisst "Teile durch null." Und das ist mathematisch nicht definiert.
Es bedeutet dass du irgendwo versuchst durch null zu teilen. Der Debugger wird dir zeigen wo.
Da in dem Code den Du hier postest allerdings keine Division vorkommt muss der Fehler wohl woanders liegen (sprich du hast wohl nicht allen Code gepostet).


Sorry hier ist der neue Code mi der Fehlermeldung divide by zero:

Code: [AUSKLAPPEN]

Graphics 640 , 480 , 16 , 3
SetBuffer BackBuffer ()
Bild1 = LoadAnimImage ("AL_HEroes2.png", 87 , 180 , 0, 11) ;animation laden
MaskImage Bild1, 255, 255 , 255 ;transparenz
Local frame ;variable deklarieren
Bild2 = LoadAnimImage ("AL_HEroes2_spiegel.png", Xpos, 180, 0, 11)
Local frame2
Miene1 = LoadImage("Miene1.png")
MaskImage Miene1, 255, 255, 255
Abfont = LoadFont("Arial Black")   

Repeat
       Cls
       ;Frame weiterschalten nur wenn keine Pause
             
   
      If zeit + 100 < MilliSecs () And pause = 1 Then
           zeit = MilliSecs ()
           frame = frame + 1
           If frame = 11 Then frame = 0
       EndIf
       

      
      If zeit + 100 < MilliSecs () And pause = 0 Then
       DrawImage Bild1 ,Xpos, 310 , frame ;Bild malen
       EndIf
       
      
      If zeit + 100 < MilliSecs () And pause = 2 Then
           zeit = MilliSecs ()
           frame = frame + 1
           If frame = 11 Then frame = 0
       EndIf
       

      
      
      If zeit + 100 < MilliSecs () And pause = 2 Then
       DrawImage Bild2 ,Xpos, 310 , frame ;Bild malen
       EndIf
       
      

      ;Miene
      DrawImage Miene1, 400, 440
      ;
       ;Pause ON/OFF
       
      If KeyDown (205) Then
      pause = 1
       ElseIf KeyDown (203) Then
      pause = 2
       Else
      pause = 0
      EndIf
      
      If Pause = 1 Then xpos = xpos + 2
   
      
      
      If Pause = 0 Then
         xpos = xpos
         ElseIf Pause = 2 Then
         ypos = ypos - 2 ; Figur wieder nach links setzten
         EndIf
       If xpos > 480 Then
      xpos = 0
      EndIf

      
      If ImagesCollide(Bild1, Xpos, 310, frame, Miene1, 400, 440, 0) Then
      Cls
      SetFont Abfont
      Print("Sorry. Du hast verloren!")
      WaitKey
      End
      EndIf
      
      
      

       Flip
   
      
   Until KeyHit (1); wenn ESC dann beenden
   WaitKey
  End


Er makiert nach der Meldung immer die Zeile mit Bild2.

Glaube, dass es an de Xpos liegt, aber ich muss es auf Xpos setzen.
Wie kann ich das?

Caesium

BeitragDi, Apr 01, 2008 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
habe mir nur die ersten paar zeilen angesehn:

Code: [AUSKLAPPEN]
Bild2 = LoadAnimImage ("AL_HEroes2_spiegel.png", Xpos, 180, 0, 11)


du gibst als 'gesamtbreite' des bildes Xpos an. die variable wurde zu diesem zeitpunkt nicht definiert und wird daher deklariert und erhält automatisch den wert 0. da du - logischerweise - keine grafik mit einer breite von 0 pixeln laden kannst, gibts natürlich nen fehler.

ich bin mir nicht sicher, ob ich dich richtig verstehe was dein "auf xpos setzen" angeht, aber falls du damit die position des gezeichneten bildes meinst: die musst du mit DrawImage festlegen.

gruß,
caesium
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. Smile
 

petecoolbelab

BeitragDi, Apr 01, 2008 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,

dachte dass dies die position ist.
 

petecoolbelab

BeitragDi, Apr 01, 2008 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab da noch eine Frage, aber keine Angst, nicht so eine mit dem Code
(Ich suche ja jetzt selbst^^)

Wie kann ich programmieren, das er das Bild anzeigt, welches Bild zuletzt benutzt worden ist also z.B.:

Code: [AUSKLAPPEN]

If pause = 0 Then
DrawImage "welches als letztes benutzt wurde"
EndIf

Eingeproggt

BeitragDi, Apr 01, 2008 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn ich stur die Frage beantworte, die du gestellt hast würde ich sagen "Das musst du selber wissen"... Aber ich glaub du meinst das anders und dafür gibts natürlich eine Lösung:
Du erstellst ein Bild, so groß wie dein Graphikfenster (ql:CreateImage)
Du kopierst alles gezeichnete dort hinein (ql:CopyRect)

Hoffe, du fängst mit der Erklärung etwas an.. Der Code wären 2 Zeilen, aber die sollst du ja selber erarbeiten Wink

mfG, Christoph.

Gehe zu Seite Zurück  1, 2, 3, 4  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