wenn getroffen, dann löschen
Übersicht BlitzBasic Beginners-Corner
PousupBetreff: wenn getroffen, dann löschen |
Do, Jan 17, 2008 16:24 Antworten mit Zitat |
|
---|---|---|
Hallo, mal wieder eine Frage
Und zwar würd ich gern wissen, mit welchem Befehl man ein Image löschen kann. Mit delete scheints nicht zu klappen. Das alles soll in einer if-abfrage geschehen die, bis auf's löschen steht. Code: [AUSKLAPPEN] If ImagesOverlap(maus,mx,my,enemy,jx,jy) And MouseHit(1) Then score = score + 1 "Bild löschen" Dann direkt noch eine zweite Frage: Wie kann ich mehrere Bilder an zufälligen Positionen erscheinen lassen? Und eine dritte: Kann man in BB machen, das ein bestimmtes Bild im Vordergrund steht, zum Beispiel der Mauszeiger? |
||
ChristianK |
Do, Jan 17, 2008 16:41 Antworten mit Zitat |
|
---|---|---|
1. Bilder kannst du mit FreeImage löschen. Es gibt aber kaum einen Grund, das während des Programm-Ablaufs zu tun.
2. http://blitzbase.de/menu/2y.htm 3. Das Bild, das du zuletzt zeichnest, ist im Vordergrund. Also zeichnest du den Mauszeiger nach allen anderen Bildern. |
||
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT |
BigMaexle |
Do, Jan 17, 2008 17:29 Antworten mit Zitat |
|
---|---|---|
zu 1.
zeiche dein Bild einfach im nächsten Schleifendurchlauf nicht mehr. Nimm dazu einfach eine zusätzliche Variable |
||
--------------------------------------
Ich bin unfreiwillig ein Mitglied dieser kapitalistischen Gesellschaft, wo jeder Geldgeile Unternehmer an mein Geld will und ich selbst bei meinen Entscheidungen so gut wie willenlos bin...... und ich bin glücklich drüber |
panky |
Do, Jan 17, 2008 21:00 Antworten mit Zitat |
|
---|---|---|
Die Idee mit der Variable ist erstmal nicht schlecht. Besser, aber auch noch nicht optimal, wäre die Verwendung von Feldern. Eigentlich sollte man diese nach Möglichkeit für die Verwaltung von Objekten nicht benutzen, aber sie sind leicht verständlich und einsetzbar.
Dein Problem besteht ja darin, dass ein Objekt "gelöscht" werden soll. Im folgenden Codeabschnitt, werde ich die vorgehensweise kommentieren. Code: [AUSKLAPPEN] Dim objekte(100) ;Erstellt ein Feld mit der Größe 100 for a = 1 to 100 objekte(a) = 1 next ;Setzt alles auf 1. (1 = existiert) ;Wenn nun ein Objekt gelöscht wird, dann setzt du diesen Feldeintrag einfach auf 0. z.B: objekte(63) = 0 ;Diese Objekt wird dann einfach nicht mehr gezeichnet. In diesem Beispiel wurde nicht beachtet, dass das Objekt auch eine Grafik, eine Position oder andere Eigenschaften hat. Dafür würde ich Unterfelder erstellen. Beispiel: DIM objekte(100,10). So kann man jedem Objekt 10 Eigenschaften zuordnen, wie existent, Grafik, X-Position,Y-Position usw. Man greift genauso auf diese Felder zu, wie auf die einfachen. So, ich hoffe ich konnte dir helfen... |
||
The_Nici |
Do, Jan 17, 2008 21:09 Antworten mit Zitat |
|
---|---|---|
Eine Lösung heisst: Types!
Code: [AUSKLAPPEN] Type obj Field x Field y End Type o.obj=New obj o\x=100 o\y=100 bild=Loadimage("bla.png") ;Anmerkung: Ich speichere die Grafik mal nicht in den type, man kann 2D-Bilder auch mehrmals im gleichen Buffer zeichnen. Falls du verschiedene Objekte hast dann mach dir einfach ein Grafik-ID Field, und dann kannst du beim zeichnen abfragen, welche Grafik es sein soll etc... While not Keyhit(1) mx=MouseX() my=MouseY() mh=MouseHit(1) For o.obj=Each obj Drawimage bild, o\x, o\y If Rectsoverlap(o\x,o\y,Imagewidth(bild), ImageHeight(bild),mx,my,10,10) Delete o EndIf Next Wend End |
||
panky |
Do, Jan 17, 2008 21:16 Antworten mit Zitat |
|
---|---|---|
An Types hab ich auch gedacht, statt an böse Felder.
Aber ich dachte mir der Einfachheit halber dann doch die Felder zu nehmen. |
||
The_Nici |
Do, Jan 17, 2008 21:21 Antworten mit Zitat |
|
---|---|---|
Ich denke ein Array ist nicht für sich bewegende Objekte geeignet. | ||
Pousup |
Do, Jan 17, 2008 21:48 Antworten mit Zitat |
|
---|---|---|
oh hab mich wahrscheinlich falsch ausgedrückt. ich wollte nämlich das das bild von links nach rechts über den bildschirm fährt. anstatt das der bildschirm gelöscht wird und wieder neu aufgebaut wird, damit eine bewegung entsteht, sind nur hunderte von bildchen überlappt und haben den bildschirm gefüllt. deswegen wollte ich in einer repeat-until schleife noch mal extra den befehl zum löschen und wiederaufbau geben. hat sich aber von alleine erledigt. danke euch | ||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group