Type Problem.(< Neues Problem, bitte um Hilfe!)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Type Problem.(< Neues Problem, bitte um Hilfe!)

BeitragSo, Mai 23, 2004 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi!
Also, folgendes Problem: Warum kann ich per Druck auf die Leertaste nicht nacheinander die Kreise löschen?

Code: [AUSKLAPPEN]

   Graphics 800,600,23,2
   SetBuffer BackBuffer()
   SeedRnd MilliSecs()
   
   Type mauer
   Field x,y
   End Type
   
   
   m.mauer = New mauer
   m\x  = 200
   m\y  =  200

   
   m.mauer = New mauer
   m\x  = 400
   m\y  =  200


   Repeat


   For m.mauer = Each mauer
      Oval m\x,m\y,50,50
      If KeyHit(57)
         Delete m.mauer
      EndIf
   Next       
   
   

   Flip
   Forever
~ Hey Ho Let's Go ~
  • Zuletzt bearbeitet von Blitzkrieg Bop am So, Mai 23, 2004 18:21, insgesamt 2-mal bearbeitet

Mr.Keks

BeitragSo, Mai 23, 2004 10:25
Antworten mit Zitat
Benutzer-Profile anzeigen
die werden gelöscht... nur das bild wird nicht gelöscht Very HappyD

versuch mal cls! Wink
MrKeks.net
 

Blitzkrieg Bop

BeitragSo, Mai 23, 2004 10:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Very Happy
Aber das war nur ein anschauliches Beispiel, ich habe hier mal meinen Code gepostet, mit dem das gleiche passieren soll (und hier habe ich cls). Tschuldigung für die mysteriösen Variablen Bezeichnungen Confused Ist halt nur schnell geschrieben.

Code: [AUSKLAPPEN]

   Graphics 800,600,23,2
   SetBuffer BackBuffer()
   SeedRnd MilliSecs()
   

   
   Type zahn
   Field x,y,ill,art
   End Type
   
   
   Global rmod = 0 , vari = 0 ,ko = 0, ko2 = 0 ,ko3 = 0, ko4 = 0
   
   
   z.zahn = New zahn ;zahn 1
   z\x = 100
   z\y = 200
   If rmod = 0 Then
   z\ill = Rand(1,3)
   EndIf
   If z\ill = 1
   ko = 1
   rmod = 99
   EndIf
   If ko = 1
   Color 255,0,255
   Text z\x,z\y-100,"Zahn Nr. "+ko+" ist es!"
   Oval z\x,z\y,50,50
   Color 129,129,129
   EndIf
   If ko <> 1
   Color 129,129,129
   Oval z\x,z\y,50,50
   EndIf
   
   
   z.zahn = New zahn ;zahn 2
   z\x = 200
   z\y = 200
   If rmod = 0 Then
   z\ill = Rand(1,3)
   EndIf
   If z\ill = 1
   ko = 2
   rmod = 99
   EndIf
   If ko = 2
   Color 255,0,255
   Text z\x,z\y-100,"Zahn Nr. "+ko+" ist es!"
   Oval z\x,z\y,50,50   
   Color 129,129,129
   EndIf
   If ko <> 2
   Color 129,129,129
   Oval z\x,z\y,50,50
   EndIf

   
   Repeat
         Cls

   For z.zahn = Each zahn
      If KeyHit(57)
         Delete z.zahn
      EndIf
   Next       
   
   

   Flip
   Forever





~ Hey Ho Let's Go ~

Mr.Keks

BeitragSo, Mai 23, 2004 10:37
Antworten mit Zitat
Benutzer-Profile anzeigen
funktioniert doch, wenn man die ifblöcke richtig positioniert Smile
Code: [AUSKLAPPEN]

   Graphics 800,600,23,2
   SetBuffer BackBuffer()
   SeedRnd MilliSecs()
   

   
   Type zahn
   Field x,y,ill,art
   End Type
   
   
   Global rmod = 0 , vari = 0 ,ko = 0, ko2 = 0 ,ko3 = 0, ko4 = 0
   
   
   z.zahn = New zahn ;zahn 1
   z\x = 100
   z\y = 200
   
   
   z.zahn = New zahn ;zahn 2
   z\x = 200
   z\y = 200

   
   Repeat
         Cls

   For z.zahn = Each zahn
      If rmod = 0 Then
         z\ill = Rand(1,3)
         EndIf
         If z\ill = 1
         ko = 1
         rmod = 99
         EndIf
         If ko = 1
         Color 255,0,255
         Text z\x,z\y-100,"Zahn Nr. "+ko+" ist es!"
         Oval z\x,z\y,50,50
         Color 129,129,129
         EndIf
         If ko <> 1
         Color 129,129,129
         Oval z\x,z\y,50,50
         EndIf
      If KeyHit(57)
         Delete z.zahn
      EndIf
   Next       
   
   

   Flip
   Forever
MrKeks.net
 

Blitzkrieg Bop

BeitragSo, Mai 23, 2004 10:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber bei deinem neuen verbessertem Code, verfehlt das Prog ja das Ergebniss, denn:
Da sind die beiden Kreise immer Lila! Es soll ja sozusagen gelost werden, welcher Lila ist. (So wie es bei meinem Prog oben ist, wenn du da das CLS entfernst!!! < Probiere mal und du wirst es sehen!). Aber trotzdem Danke Smile
~ Hey Ho Let's Go ~
 

Blitzkrieg Bop

BeitragSo, Mai 23, 2004 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, altes problem gelöst, neues ist da.
Ich habe foglgendes in einer Funktion stehen:
Code: [AUSKLAPPEN]

      If RectsOverlap(z\x,z\y,50,50,MouseX(),MouseY(),1,1)
         vari2 = 1
      EndIf    


Das klappt auch gut, nur wnen man mit der Maus über das Objekt geht, steht die Variable die ganze Zeit auf eins. Normalerweise müsste die doch nur auf 1 stehen , wenn der Zeiger mit Objekt überlappt oder?...sehr komisch... Rolling Eyes
~ Hey Ho Let's Go ~

Michi1988

BeitragSo, Mai 23, 2004 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein warum?

Dann musst du schreiben

if bab then
bla=1
else
bla=0
end if
 

Blitzkrieg Bop

BeitragSo, Mai 23, 2004 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
häh.. Rolling Eyes

edit: achso...ok, werds gleich mal testen Very Happy
~ Hey Ho Let's Go ~
 

Blitzkrieg Bop

BeitragSo, Mai 23, 2004 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
habe es nun so stehen:

Code: [AUSKLAPPEN]


For z.zaun = Each zaun
   
      
If RectsOverlap(z\x,z\y,50,50,MouseX(),MouseY(),1,1)
   vari2 = 1
Else
   vari2 = 0
EndIf
            
   
Next


Wenn ich das nun so mache, klappt das acuh, aber nur auf einem meiner insgesamt 9 objekte! immer auf dme, was ganz unten rechts ist....!?
Rolling Eyes
~ Hey Ho Let's Go ~

Michi1988

BeitragSo, Mai 23, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
BLOP.

Weil es immer der letzte is der dann geändert wird. bei den anderen werden die nachfolgenden auch noch geprüft und die berührst du ja nich alse wird sie WIEDER null gesetzt

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group