stein löschen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: stein löschen

BeitragMi, Okt 11, 2006 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

If ImagesCollide(kugel,k\kugel_x,k\kugel_y,0,stein,s\stein_x,s\stein_y,0) Then Delete s\stein And k\kugel_winkel# = 360 - k\kugel_winkel#[quote]

hi,habt ihr ne ahnung warum das nicht geht???
wäre nettwenn ihr antworten würdet
thx[/quote]

Christoph

BeitragMi, Okt 11, 2006 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If ImagesCollide(kugel,k\kugel_x,k\kugel_y,0,stein,s\stein_x,s\stein_y,0) Then Delete s\stein And k\kugel_winkel# = 360 - k\kugel_winkel#


AND ist hier völlig falsch. Verwende den Doppelpunkt als Trennzeichen einzelner Befehle

Blitzcoder

Newsposter

BeitragMi, Okt 11, 2006 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
das sieht uahcn irgendwie so aus, als ob du nur ein feld löschen würdest. Das geht nicht.
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

mas93

BeitragMi, Okt 11, 2006 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
danke,aber da kommt jetzt ne meldung type field not found

StepTiger

BeitragMi, Okt 11, 2006 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
weil das feld, was du löschen oder verändern willst, garnicht vordefiniert ist.

beschäftige dich mal mit den kommandos:
field
type
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Christoph

BeitragMi, Okt 11, 2006 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Delete s\stein

Den Befehl Delete kannst du nicht mit einzelnen Feldern verwenden.

Wie heißt dein Typename?

Delete s.[Typename]


Den Typename legst du irgendwo weiter oben fest:

Code: [AUSKLAPPEN]
type TStein
  field x,y
  field blablabla
end type

mas93

BeitragMi, Okt 11, 2006 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 1024,768,16,1
SetBuffer BackBuffer()

Global player1 = LoadImage("gfx/player1.png")
MaskImage player1,0,0,255
Global player1_x=100,player1_y=650
Global kugel= LoadImage("gfx/kugel.png")
MaskImage kugel,0,0,255
Global back=LoadImage("gfx/back.png")
Global stein = LoadImage("gfx/stein.bmp")
MaskImage stein,0,0,255

;daten für die kugel
Type kugel
Field kugel_x#
Field kugel_y#
Field kugel_winkel#
End Type

;Types für die steine
Type stein
  Field stein_x
  Field stein_y
End Type

;17 steine nach rechts und 15 steine nach unten erzeugen
For i=1 To 17
  For j=1 To 15
    s.stein = New stein
    s\stein_x = s\stein_x + i*55
    s\stein_y = s\stein_y + j*20
 
 Next
Next


;Zufallsgenerator
SeedRnd MilliSecs()

;1 kugel erzeugen

k.kugel = New kugel
k\kugel_x = Rnd(100,700)
k\kugel_y = Rnd(100,700)
k\kugel_winkel = Rnd(0,359)
 

;--------------->>>>Hauptschleife<<<<----------------

Repeat
Cls

;Alle kugeln abfragen die bisher erzeugt wurden
  For k.kugel = Each kugel
    DrawImage kugel, k\kugel_x,k\kugel_y,0
    k\kugel_x = k\kugel_x + Cos(k\kugel_winkel#)*4
    k\kugel_y = k\kugel_y + Sin(k\kugel_winkel#)*4

    If k\kugel_x < 0 Or k\kugel_x > 1000 Then
      k\kugel_winkel# = 180 - k\kugel_winkel#
    EndIf
    If k\kugel_y <0 Then
      k\kugel_winkel# = 360 - k\kugel_winkel#
    EndIf
 

If ImagesCollide(kugel,k\kugel_x,k\kugel_y,0,player1,player1_x,player1_y,0) k\kugel_winkel# = 360 - k\kugel_winkel#
If ImagesCollide(kugel,k\kugel_x,k\kugel_y,0,stein,s\stein_x,s\stein_y,0) Then Delete s\stein And k\kugel_winkel# = 360 - k\kugel_winkel#


;Alle steine abfragen
  For s.stein = Each stein
    DrawImage stein,s\stein_x,s\stein_y
  Next


Next

;--------------------BEWEGUNG--------------------------------

 ;Den Balken nach links bewegen
  If KeyDown(203) Then
    ;Solange Spieler_x grösser ist als 0, dann nach links bewegen
    If player1_x > 0 Then player1_x = player1_x - 5
  EndIf

  ;Den Balken nach rechts bewegen
  If KeyDown(205) Then
    ;Solange Spieler_x kleiner ist als 950, dann nach rechts bewegen
    If player1_x < 950 Then player1_x = player1_x + 5
  EndIf




DrawImage back,0,0
DrawImage player1,player1_x,player1_y

Flip
Until KeyHit(1)


das is mein code
 

NaTaS

BeitragMi, Okt 11, 2006 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
du löschst ein feld (,was gar nicht geht), was es sowieso nicht gibt?

willst du nicht vielleicht den stein löschen?

Code: [AUSKLAPPEN]
delete s
Diese von ihnen gewählte Signatur ist vorrübergehend nicht zu erreichen. Bitte versuchen sie es später noch einmal.
The signature you've called is temporarely not avaibled, please try again later.

mas93

BeitragMi, Okt 11, 2006 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
jap ich will den stein löschen aber wnn ich jetzt anstatt delte s\stein

delete s schreibe,kommt da object does not exist???

Christoph

BeitragMi, Okt 11, 2006 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
If ImagesCollide(kugel,k\kugel_x,k\kugel_y,0,stein,s\stein_x,s\stein_y,0) Then Delete s\stein And k\kugel_winkel# = 360 - k\kugel_winkel#

1. Ersetze das And durch ein :
2. Du hast kein Stein ausgewählt also kommt auch "Entity does not exist"
->Mach diese Zeile auch in die "For s.stein=each stein"-Schleife
 

bruce85

BeitragDo, Okt 12, 2006 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
er möchte das dieser stein wo berührt wird gelöscht wird.

also Delete s.stein

mit Delete s löscht du alle bisher erstellte steine, also alle Eigenschaften die du bisher erstellt hast.

und wie es aussieht hat er die eine For Schleife weiter unten beendet und die gleiche Schleife nochmal in dieser rein geschrieben.

so sollte es gehen:

Code: [AUSKLAPPEN]
Graphics 1024,768,16,2
SetBuffer BackBuffer()

Global player1 = LoadImage("gfx/player1.png")
MaskImage player1,0,0,255
Global player1_x=100,player1_y=650

;Stein laden
Global stein = LoadImage("gfx/stein.bmp")
MaskImage stein,0,0,255

;Kugel laden
Global kugel = LoadImage("gfx/kugel.png")
MaskImage kugel,0,0,255

;Types für die steine
Type stein
  Field stein_x
  Field stein_y
  Field stein_loeschen
End Type

;17 steine nach rechts und 15 steine nach unten erzeugen
For i=1 To 17
  For j=1 To 15
    s.stein = New stein
    s\stein_x = s\stein_x + i*55
    s\stein_y = s\stein_y + j*20
  Next
Next

;daten für die kugel
Type kugel
Field kugel_x#
Field kugel_y#
Field kugel_winkel#
End Type

;Zufallsgenerator aktivieren
SeedRnd MilliSecs()

;1 kugel erzeugen

k.kugel = New kugel
k\kugel_x = Rnd(100,700)
k\kugel_y = Rnd(100,700)
k\kugel_winkel = Rnd(0,359)
 
;--------------->>>>Hauptschleife<<<<----------------

Hauptspiel()

Function Hauptspiel()
Repeat
Cls

  ;Alle kugeln abfragen die bisher erzeugt wurden
  For k.kugel = Each kugel
    DrawImage kugel,k\kugel_x,k\kugel_y
    k\kugel_x = k\kugel_x + Cos(k\kugel_winkel#)*4
    k\kugel_y = k\kugel_y + Sin(k\kugel_winkel#)*4

    If k\kugel_x < 0 Or k\kugel_x > 900 Then
      k\kugel_winkel# = 180 - k\kugel_winkel#
    EndIf
    If k\kugel_y < 0 Or k\kugel_y > 700 Then
      k\kugel_winkel# = 360 - k\kugel_winkel#
    EndIf
  Next

  ;Den Balken für Player1 zeichnen
  DrawImage player1,player1_x,player1_y

  ;Den Balken nach links bewegen
  If KeyDown(203) Then
    ;Solange Spieler_x grösser ist als 0, dann nach links bewegen
    If player1_x > 0 Then player1_x = player1_x - 5
  EndIf

  ;Den Balken nach rechts bewegen
  If KeyDown(205) Then
    ;Solange Spieler_x kleiner ist als 700, dann nach rechts bewegen
    If player1_x < 700 Then player1_x = player1_x + 5
  EndIf

  ;Alle steine abfragen
  For s.stein = Each stein
    DrawImage stein,s\stein_x,s\stein_y
  Next

  ;Alle steine und kugel abfragen, und eine kollision prüfen
  For k.kugel = Each kugel
    For s.stein = Each stein
      If ImagesCollide(kugel,k\kugel_x,k\kugel_y,0,stein,s\stein_x,s\stein_y,0) Then
        k\kugel_winkel# = 360 - k\kugel_winkel#
        s\stein_loeschen = 1
      EndIf
      If s\stein_loeschen = 1 Then
        Delete s.stein
      EndIf
    Next
  Next

Flip
Until KeyHit(1)
End Function


Gruss Andreas

Christoph

BeitragDo, Okt 12, 2006 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
er möchte das dieser stein wo berührt wird gelöscht wird.

Schon klar ich habe geschrieben:
Zitat:
->Mach diese Zeile auch in die "For s.stein=each stein"-Schleife


Da die Zeile eine if-Bedingung enthält werden nicht alle, sondern nur berührte Steine gelöscht. Idea

StepTiger

BeitragDo, Okt 12, 2006 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
@bruce
so ganz doll viel ahnung hast du nicht, oder?
delete s
ist in diesem fall genau das selbe wie
delete s.stein

nur, dass das .stein garnicht da hin muss, da die variable bereits vordeklariert ist
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

bruce85

BeitragDo, Okt 12, 2006 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
StepTiger sry du hast recht, hab mich ein bissel vertan.
aber ich habe schon ahnung wie man mit Types arbeitet.

Andreas

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group