Löschen von Rechtecken, die über Types erstellt wurden
Übersicht

Blitzkrieg BopBetreff: Löschen von Rechtecken, die über Types erstellt wurden |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
ICh habe Bilder erstellt, die pber folgendes Type Feld funktionieren: Code: [AUSKLAPPEN] Type gegner Field posx Field posy Field entfernung Field richtung End Type wenn man jetzt mit der maus über so einem Bild ist und linke taste drückt,soll es gelöscht werden! wie stelle ich es da? der anfang sieht sicher lich so aus: Code: [AUSKLAPPEN] If ImagesOverlap(gegner,huhn\posx,huhn\posy,cursor,x_maus,y_maus) Then If MouseDown(1) Text 400,400,"Getroffen!" ; HIER SOLL DAS GETROFFENE HUHN GELÖSCHT WERDEN EndIf EndIf |
||
~ Hey Ho Let's Go ~ |
dubitat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jetzt lünchen mich alle weils ziemlich speicheraufwendig ist aber mir fällt im mom nichts besseres ein indem du das zb. so machst:
Code: [AUSKLAPPEN] If ImagesOverlap(gegner,huhn\posx,huhn\posy,cursor,x_maus,y_maus) Then If MouseDown(1) Text 400,400,"Getroffen!" ; HIER SOLL DAS GETROFFENE HUHN GELÖSCHT WERDEN posx = 10000 posy = 10000 ;damit setzt du das huhn außerhalb des sichtbaren bereichs! EndIf EndIf so wie ich das oben gemacht habe gehts nicht ganz! du musst das noch auf types anpassen! ich mag types nicht weshalb ich mich damit noch nicht so oft auseinander gesetzt hab! |
||
Erare humanum est - Irren ist Menschlich |
Blitzkrieg BopBetreff: danke....aber... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Danke erstmal. Ich benutze nun die Methode las Übergang, bis ich etwas bessere gefunden habe. Doch nun habe ich noch ne Frage! Ich erstelleüber die Types ja Hühner....Hier ist nochmal die Funktion für einen neuen Gegner: Code: [AUSKLAPPEN] Function Neuer_Gegner() ;Function für ein neues Huhn SeedRnd MilliSecs() huhn.gegner = New gegner huhn\posy = Rand(0,300);Rand(0,300) gibt an wie hoch die hühner sein sollen (y-#Richtung) huhn\entfernung = Rand(0,4);Rand(0,4) gibt entfernuhng an, zur zeit unnütz huhn\richtung = Rand(0,3);Rand(0,3) ;festlegen der richtung: zur zeit unnütz If huhn\richtung = 1 Then ;wenn richtung nach rechts dann startet das huhn links huhn\posx = -1 ;-1 Else ;siehe oben nur andersherum huhn\posx = 990 EndIf End Function wie schaffe ich es nun, das die Bilder, die auf dme Bildschirm vorhanden sind, nicht über oder untereinander vorhandne sind, sondern höchsten 1 an einer stelle.? |
||
~ Hey Ho Let's Go ~ |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] For huhn.gegner=Each gegner If ImagesOverlap(gegner,huhn\posx,huhn\posy,cursor,x_maus,y_maus) If MouseDown(1) Text 400,400,"Getroffen!" Delete huhn EndIf EndIf Next So wird jeder Gegner durchgegangen und überprüft ob sdessen bild sich mit dem curso überschneidet und dann noch ob die maustaste gedrückt wurde. Dann kommt der getroffen text und der gegner/huhn wird gelöscht. Hoffe dass es das ist was du wolltest |
||
![]() |
AlfadurBetreff: aloa... |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi erstmal...
is ja eigentlich alles ziemlich simpel...für types gibts ja die wundervolle for ...each schleife... ergo sieht deine löschfunktion ungefähr so aus ... Code: [AUSKLAPPEN] if mousehit(1) then for huhn.Thuhn=each Thuhn if imagesoverlap(huhn,huhn\x,huhn\y,maus,mausx,mausy) then delete huhn:exit next end if huhn mußt du natürlich mit deinem gegner typ anpassen, ich war nur zu faul um das lange wort gegner zu schreiben ... und beim erstellen deiner hühner machst du auch einfach so eine for ... each schleife und checkst bei jedem neu erzeugten huhn ob sich an der stelle nich schon etwas befindet...wenn ja, huhn löschen, neu generieren, bis es mal klappt.... hoffe die verwirrung is jetzt komplett.... adios[/code] |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Besonders danke an Batolo! Die Lösch funktion geht nun und als nächstes versuche ich mit einer ähnlichen Schleife zu überprüfen, ob an dem und dem Feld bereits ein Bild ist oder nicht! Bei FRagen melde ich mich nochmal |
||
~ Hey Ho Let's Go ~ |
Blitzkrieg BopBetreff: hmmm |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also es geht nicht so einfach, wie ich dachte.....
ich habe folgendes geschrieben: Code: [AUSKLAPPEN] For huhn.gegner = Each gegner If ImagesOverlap(gegner,huhn\posx,huhn\posy,gegner,huhn\posx,huhn\posy) Delete huhn EndIf Next damit wollt eich in worten sagen: wenn ein bild gemalt wird und die position mit einem vorher gemalten bild übereinstimmt, wird es gelöscht. aber das geht so nciht, deshalb frage ich hiermit noch enmal direkt weiter, wie löst man das prob? |
||
~ Hey Ho Let's Go ~ |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit deinem code würdest du abfragen ob das huhn mit sich selbst überlappt.
du musst ne andere bezeichnung nehmen zum beispiel pruefen.gegner. einfach ans ende deiner neuer_gegner function hängen. und sollten sie überlappen dann das huhn löschen und die funktion erneut aufrufen. Außerdem benutzt man das seedrnd nur einmal am anfang des Programms und nicht immer wieder in der Funktion. |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich verstehe nicht ganz .... | ||
~ Hey Ho Let's Go ~ |
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
mach am besten zwei for ... each schleifen, so in der art :
Code: [AUSKLAPPEN] for Vhuhn.Thuhn=each Thuhn for Zhuhn.Thuhn=each Thuhn if Vhuhn\id<>Zhuhn\id and imagescollide(huhn,Vhuhn\x,Vhuhn\y,huhn,Zhuhn\x,Zhuhn\y) then delete Zhuhn end if next next also, jedes huhn wird mit jedem verglichen, damit nich ein und dasselbe huhn verglichen wird, wird noch die id geprüft... am ende solltest du an jedem fleckchen spielfeld nur noch ein huhn haben. hoffentlich wirds denen alleine nich zu langweilig ... have fun |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
- Zuletzt bearbeitet von Alfadur am Fr, März 19, 2004 18:04, insgesamt einmal bearbeitet
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
code beispiel und ich würde es kapieren denke ich | ||
~ Hey Ho Let's Go ~ |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function Neuer_Gegner() ;Function für ein neues Huhn huhn.gegner = New gegner huhn\posy = Rand(0,300) ;Rand(0,300) gibt an wie hoch die hühner sein sollen (y-#Richtung) huhn\entfernung = Rand(0,4) ;Rand(0,4) gibt entfernuhng an, zur zeit unnütz huhn\richtung = Rand(0,3) ;Rand(0,3) ;festlegen der richtung: zur zeit unnütz If huhn\richtung = 1 ;wenn richtung nach rechts dann startet das huhn links huhn\posx = -1 ;-1 Else ;siehe oben nur andersherum huhn\posx = 990 EndIf For pruefen.gegner=Each gegner If pruefen.gegner<>huhn.gegner If ImagesOverlap(gegner,huhn\posx,huhn\posy,gegner,pruefen\posx,pruefen\posy) Delete huhn neuer_gegner() EndIf EndIf Next End Function So würde ich die neue neuer_gegner Funktion machen. |
||
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
funktioniert meiner meinung nach nicht weil ja wieder ein und dasselbe huhn mit sich selber verglichen wird...
das heißt das neue huhn.gegner ist auch bei pruefen.gegner dabei. solange da keine id mit dabei ist wirds schwierig. ergo : mach in den type ne id rein ... |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
habe ich bereits editiert.
Code: [AUSKLAPPEN] If pruefen.gegner<>huhn.gegner das reicht vollkommen aus |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
und wie genau funktioniert das?
kannst du mal ein komplexen code-bau demonstrieren? kommst auch in die credits ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
oben steht doch die verbesserte neuer_gegner funktion.
Oder was soll ich demonstrieren? |
||
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
yo blatolo hat recht... hab ich übersehen ... muchos gracias.
@blitzkrieg bop: diese geschichte ist alles andere als komplex, ehrlich gesagt ziemlich simpel, blatolo hat dir die komplette funktion gepostet, was willst du noch? vielleicht kommt dir die erleuchtung wenn du dich mal vom computer loseist und bißchen ramones hörst... |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
"object doeas not exist" wird mir angezeigt! | ||
~ Hey Ho Let's Go ~ |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
RAMONES ![]() ne, aber shcerz bei seite, bei mir liegt die obige fehlermeldung vor, wobei der mir auf die if imagesoverlap stelle zeigt |
||
~ Hey Ho Let's Go ~ |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
zur übersicht, meine komplette funktion:
Code: [AUSKLAPPEN] Function Neuer_Gegner() ;Function für ein neues Huhn SeedRnd MilliSecs() huhn.gegner = New gegner huhn\posy = Rand(0,300);Rand(0,300) gibt an wie hoch die hühner sein sollen (y-#Richtung) huhn\entfernung = Rand(0,4);Rand(0,4) gibt entfernuhng an, zur zeit unnütz huhn\richtung = Rand(0,3);Rand(0,3) ;festlegen der richtung: zur zeit unnütz If huhn\richtung = 1 Then ;wenn richtung nach rechts dann startet das huhn links huhn\posx = -1 ;-1 Else ;siehe oben nur andersherum huhn\posx = 990 EndIf For pruefen.gegner = Each gegner If pruefen.gegner<>huhn.gegner If ImagesOverlap(gegner,huhn\posx,huhn\posy,gegner,pruefen\posx,pruefen\posy) Delete huhn neuer_gegner() EndIf EndIf Next End Function |
||
~ Hey Ho Let's Go ~ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group