Image frame out of range

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

Dreamora

BeitragMo, Apr 16, 2007 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Also änderst du die variable irgendwo oder hast fälschlicherweise irgendwo in deinem gesamten code eine variable die ebenfalls so heisst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Smily

BeitragMo, Apr 16, 2007 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich vermute mal, du lädst ein Bild, sound o.ä. in die Variable.
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

Lord AdZ

BeitragMo, Apr 16, 2007 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab ein bisschen rumexperimentiert und ich hab dabei festgestellt, das der Error nicht kommt, wenn ich "Mod 1" einstelle. Bei "Mod 2" dauert es ca. eine Sekunde, erst dann der Error wiederkommt und wenn ich Mod>2 hab, kommt der Error sofort. Was bedeutet das schon wieder?
 

Dreamora

BeitragMo, Apr 16, 2007 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
die mod sind egal
Das problem ist das du die variable die du für das frame benutzt irgendwo anders nochmal benutzt für etwas. Benenn eine der beiden um oder du kannst dir jegliche mühe sparen!
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Lord AdZ

BeitragDi, Apr 17, 2007 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab die Variablen umbennant aber der Error ist immer noch da, ich glaub, ich kapier hier irgendwas nicht.
Ich poste hier mal meinen Code, da ich anscheinend zu blöd bin, um den Fehler selber zu finden. (Für alle, die sich wundern: die Functions und Globals sind in einem anderen .bb file, diese Datei include ich nur)
Code: [AUSKLAPPEN]

;---------------------------------------------Einstellungen
beweglichkeit=geschwindigkeit


cheats=0



ClsColor 0,0,200;blauer Hintergrund

resetkugel;richtige Position der Kugel

Repeat
WaitTimer (frametimer)


For z2=0 To 1
 If  z2=1 Then x=xmax-50 Else x=0
 For z=0 To ymax/50
  DrawImage begrenzung,x,z*50
 Next
Next


;-----------------------------------------verschiedene Befehle


; der Spielstand von beiden Spielern ist gleich 0, wenn 0 gedrückt wurde
If KeyHit(11) Then
  fehlersp1=0
  fehlersp2=0
EndIf

If KeyHit(38) Then cheats=cheats+1 ;aktiviert die Cheateingabe, wenn L gedrückt wurde

If KeyHit(1) Then End ;beendet das Spiel, wenn esc gedrückt wurde

If KeyHit(201) Then geschwindigkeit=geschwindigkeit+1 ;erhöht die spielgeschwindigkeit um 1, wenn man 5 drückt
If KeyHit(209) Then geschwindigkeit=geschwindigkeit-1 ;verringert die spielgeschwindigkeit um 1, wenn man 6 drückt

If KeyDown(78) Then geschwindigkeit=geschwindigkeit+1 ;erhöht die spielgeschwindigkeit um 1, wenn man + drückt
If KeyDown(74) Then geschwindigkeit=geschwindigkeit-1 ;verringert die spielgeschwindigkeit um 1, wenn man - drückt


If KeyHit(14) Then resetkugel;setzt die kugel zurück, wenn entf gedrückt wurde

;cheats
If KeyHit(59) And cheats=1 Then geschwindigkeit=geschwindigkeit+100000 ;wenn F1 gedrückt wurde, verändert sich die Geschwindigkeit

If KeyHit(60) And cheats=1 Then geschwindigkeit=10 ;wenn F2 gedrückt wurde, ist die Geschwindigkeit wieder normal

If KeyHit(61) And cheats=1 Then ClsColor 10, 100, 29 ;wenn F3 gedrückt wurde verändert sich der Hintergrund

If KeyHit(62) And cheats=1 Then ClsColor 0,0,200 ;wenn F4 gedrückt wurde, ist der Hintergrund wieder blau

If KeyHit(63) And cheats=1 Then fehlersp2=fehlersp2+142480647 ;haha


;-------------------------------------------Sieg oder Niederlage?

;wenn die Kugel durchgelassen wurde
If ykugel<-10 Then ;oben
 fehlersp2=fehlersp2+1 ;der Obere bekommt einen Fehlerpunkt dazu
 resetkugel
EndIf

If ykugel>ymax+10 Then ;unten
  fehlersp1=fehlersp1+1 ;der Untere bekommt einen Fehlerpunkt dazu
  resetkugel
EndIf


;hat Spieler1 gewonnen?
If fehlersp2>9 Then
 Text xmax/2, 100, "Spieler1 hat gewonnen"
 resetkugel
 geschwindigkeit=0
EndIf

;hat Spieler2 gewonnen?
If fehlersp1>9 Then
 Text xmax/2, 100, "Spieler2 hat gewonnen"
 resetkugel
 geschwindigkeit=0
EndIf

;neues Spiel, wenn W gedrückt wurde
If fehlersp1>9 And KeyHit(17) Then
 fehlersp1=0
 fehlersp2=0
 geschwindigkeit=10
EndIf

If fehlersp2>9 And KeyHit(17) Then
 fehlersp1=0
 fehlersp2=0
 geschwindigkeit=10
EndIf


;--------------------------------------------Steuerung


;die Spielersteuerung
If KeyHit(2) Then
 resetkugel
 sp1st=sp1st+1;verändert die Spielsteuerung, wenn 1 gedrückt wurde
EndIf

If KeyHit(3) Then
 sp2st=sp2st+1;verändert die Spielsteuerung, wenn 2 gedrückt wurde
 resetkugel
EndIf


If sp1st>2 Then sp1st=0
If sp2st>2 Then sp2st=0

;die automatische Steuerung, wenn die Steuerungsvariable 0 ist:
If xsp1>xkugel And sp1st=0 And ykugel>GraphicsHeight()/2 Then xsp1=xsp1-beweglichkeit
If xsp1<xkugel And sp1st=0 And ykugel>GraphicsHeight()/2 Then xsp1=xsp1+beweglichkeit

If xsp2>xkugel And sp2st=0 And ykugel<GraphicsHeight()/2 Then xsp2=xsp2-beweglichkeit
If xsp2<xkugel And sp2st=0 And ykugel<GraphicsHeight()/2 Then xsp2=xsp2+beweglichkeit

;erweiterte KI von Spieler2
If ykugel>768/2 And sp2st=0 Then 
 
   ;hin und her wackeln von Spieler2
   xZufall#=xZufall#+Rnd(-3,3)
   If xZufall<-3.5 xZufall=-3.5 Else If xZufall>3.5xZufall=3.5
   xsp2=xsp2+xZufall
       
EndIf

;erweiterte KI von Spieler1
If ykugel<768/2 And sp1st=0 Then

   ;hin und her wackeln von Spieler1
   xZufall#=xZufall#+Rnd(-3,3)
   If xZufall<-3.5 xZufall=-3.5 Else If xZufall>3.5xZufall=3.5
   xsp1=xsp1+xZufall

EndIf 



;die Tastatursteuerung, wenn die Steuerungsvariable 1 ist:
If KeyDown(203) And sp1st=1 Then xsp1=xsp1-beweglichkeit;linke Pfeiltaste
If KeyDown(205) And sp1st=1 Then xsp1=xsp1+beweglichkeit;rechte Pfeiltaste

If KeyDown(208) And sp1st=1 Then ysp1=ysp1+beweglichkeit;Pfeiltaste hoch
If KeyDown(200) And sp1st=1 Then ysp1=ysp1-beweglichkeit;Pfeiltaste runter



If KeyDown(44) And sp2st=1 Then xsp2=xsp2-beweglichkeit;Y
If KeyDown(45) And sp2st=1 Then xsp2=xsp2+beweglichkeit;X

;die Maussteuerung, wenn die Steuerungsvariable 2 ist:
If sp1st=2 Then xsp1=xsp1+MouseXSpeed()
If sp2st=2 Then xsp2=xsp2+MouseXSpeed()

If sp1st=2 Then ysp1=ysp1+MouseYSpeed()
If sp2st=2 Then ysp2=ysp2+MouseYSpeed()

;die X-Überprüfung:
If xsp1<70 Then xsp1=70
If xsp1>xmax-70 Then xsp1=xmax-70
If xsp2<70 Then xsp2=70
If xsp2>xmax-70 Then xsp2=xmax-70

;die Y-Überprüfung
If ysp1<576 Then ysp1=576
If ysp1>ymax Then ysp1=ymax-5

;die Kollisionsabfrage der Spieler
If ImagesCollide(spieler1,xsp1,ysp1,0,kugel,xkugel,ykugel,0) Then ;wenn eine Kollision besteht
 winkel=360-winkel ;prallt die Kugel ab
 abweichung=2*(xsp1-xkugel) ;Richtungssteuerung der Kugel
 winkel=winkel+abweichung
EndIf

If ImagesCollide(spieler2,xsp2,ysp2,0,kugel,xkugel,ykugel,0) Then
 winkel=360-winkel
 abweichung=2*(xsp2-xkugel)
 winkel=winkel-abweichung
EndIf

;damit der Winkel nicht über den Bereich von 0-360 geht:
If winkel>360 Then winkel=winkel-360
If winkel<0 Then winkel=winkel+360


;Kollisionsabfrage Seitenwände
If xkugel<60 Then
 winkel=180-winkel ;damit prallt die Kugel ab
EndIf

If xkugel>xmax-60 Then
 winkel=180-winkel
EndIf



;Berechnung der Kugelkoordinaten
xkugel=xkugel+Cos(winkel)*geschwindigkeit
ykugel=ykugel-Sin(winkel)*geschwindigkeit

;----------------------------------Informationen auf dem Bildschirm
SetFont font2
Color 100,235,100
Text 200,300,"Geschwindigkeit:" + geschwindigkeit
Text 500,300,"Spielstand:  "+fehlersp2 + "       :       " + fehlersp1
;Steuerungsart
Text 55,ymax-25,"Spieler1 "
If sp1st>0 Then
        If sp1st=2 Then Text 120,ymax-25," Maussteuerung " Else Text 120,ymax-25," Tastatursteuerung "
        Else Text 120,ymax-25," Computer "
EndIf
If spieler1man>0 Then Text 250,ymax-25,scorep1


Text 55,5,"Spieler2 "
If sp2st>0 Then
 If sp2st=2 Then
  Text 120,5," Maussteuerung "
 Else
  Text 120,5," Tastatursteuerung "
 EndIf
Else
  Text 120,5," Computer "
EndIf


Text 200, 370, "1 drücken, um die Steuerung von Spieler1 zu verändern"
Text 200, 390, "2 drücken, um die Steuerung von Spieler2 zu verändern"
Text 200, 410, "Bild auf drücken, um die Geschwindigkeit zu erhöhen"
Text 200, 430, "Bild ab drücken, um die Geschwindigkeit zu verringern"
Text 200, 450, "W drücken, um nach einem gewonnenem oder verlorenem Spiel fortzufahren"
Text 200, 470, "ESC drücken, um das Spiel zu beenden"

Text 200, 150, "Spieler2 mit y und x steuern"
Text 200, 600, "Spieler1 mit den Pfeiltasten steuern"



   If MilliSecs() > tmrlhintergrund + 200 Then
      tmrlhintergrund=MilliSecs()
      framehintergrund=(framehintergrund + 1) Mod 30
   End If
   DrawImage hintergrundladen,0,0,framehintergrund ;hintergrund
   DrawImage kugel,xkugel,ykugel;Kugel
   DrawImage spieler1,xsp1,ysp1 ;Spieler1
   DrawImage spieler2,xsp2,10   ;Spieler2
   

   
   

;-----------------------------------------Hauptschleife
Flip
Cls
Until KeyHit(1)
End

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group