Grafik laden oder "malen" ?

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

Hubsi

BeitragSo, Jul 11, 2004 10:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Types ist es zumindest komfortabler. Man könnte bei Dim-Feldern auch ein Kontroll-Feld anlegen, das nur True für existiert oder False für gelöscht gesetzt ist.

Ich weiß nicht mit welchem Grafikproggi Du arbeitest, aber das kam davon das der Hintergrund der Bubbles nicht schwarz war sondern in einem seltsamen rot. Ich hab jetzt mal die Bubbles mit schwarzem Hintergrund hochgeladen: www.hubsi.biz/data/bubbles.zip. Alternativ kannst Du auch nach dem Laden der Grafiken MaskImage 201,39,39 einsetzen um die Transparenzfarbe auf dieses seltsame rot zu setzen Wink

Edit: Da war ich aber arg langsam Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Gina

BeitragSo, Jul 11, 2004 10:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Hintergrund war rot? Also bei mir war er transparent. Sehr komisch... Hab ihn auch gerade auf schwarz geändert und jetzt geht es. Vielen Dank für deine Mühe. /kiss
Ich arbeite übrigends mit Ulead Photo Impact.

Das mit den Feldern teste ich dann mal alles durch.

Vielen lieben Dank für Eure Hilfe, Gina.

Bfox

BeitragSo, Jul 11, 2004 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Gern geschehen! 8)
Glauben ist Mangel an Wissen!

Gina

BeitragSo, Jul 11, 2004 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab da doch noch ne kleine Frage... Embarassed

Kann mir jemand erklären, warum die Bubbles immer so pixelig aussehen? Egal ob ich sie malen lasse, oder die Grafiken benutze, die Ränder sind nicht rund.
Ich lasse es ja extra im Fenster mit 640x480 laufen (1600x1200 wäre sonst etwas fett... Shocked ).
Muß ich bei den Grafiken vielleicht etwas anders machen?

Thx, Gina.

Hubsi

BeitragSo, Jul 11, 2004 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest bei den Grafiken die Kanten von Deinem Malprogramm abrunden lassen, sofern die Funktion angeboten wird. Ansonsten läßt sich da nicht viel machen, weil man leider nur ganze Pixel anzeigen lassen kann Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Gina

BeitragSo, Jul 11, 2004 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab da die Funktionen Vignette und Antialising... Das müßte es sein. Muss ich mal austesten... Danke dir user posted image

Erstmal habe ich folgendes probiert: Ich hab die Grafik in 320x320 erstellt und am Ende auf 32x32 verkleinert. Das sieht schonmal nicht schlecht aus... *freu*

Thx, Gina.
 

Edlothiol

BeitragSo, Jul 11, 2004 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Bringt aber nichts, wenn das Bild transparent ist (sieht dann eher noch schlechter aus). So einfach kannst du mit B2D ( - Befehlen) nämlich nicht Antialias bzw. gealphablendete Pixel machen, und das bräuchtest du damits gut aussieht. Allerdings hat TheShadow da eine wirklich gute Lösung für gefunden: https://www.blitzforum.de/viewtopic.php?t=4070

Gina

BeitragSo, Jul 11, 2004 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, das ist ja schade. Sad Macht aber im Moment nix, da für mein kleines Beispiel der Hintergrund schwarz bleiben soll.
Ist aber gut zu wissen für spätere Projekte, wenn man mit "richtigem" Hintergrund arbeitet.

Vielen Dank also für den Hinweis. Wink

Gina.

Gina

BeitragSo, Jul 11, 2004 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Sooo... Habe das Ganze mal als Type-Feld umgebaut. Kann mir mal please jemand erklären, warum das jetzt so langsam ist? Hab ich was falsch gemacht?

Hier mal der Code:
Code: [AUSKLAPPEN]
GRAPHICS 640,480,0,2
SETBUFFER BACKBUFFER()
;Bubble-Grafiken laden
bubble1 = loadimage("bubble1.png")  ;blau
bubble2 = loadimage("bubble2.png")  ;rot
bubble3 = loadimage("bubble3.png")  ;gelb
bubble4 = loadimage("bubble4.png")  ;hellgrün
bubble5 = loadimage("bubble5.png")  ;grün
bubble6 = loadimage("bubble6.png")  ;pink
;------------------------------------------------
type Bubbles
Field xPos, yPos, Farbe, Da
End type
;------------------------------------------------
SeedRnd MilliSecs()
dim Bubb.Bubbles(300)
For i = 1 to 300
 Bub.Bubbles = new Bubbles
next
WHILE NOT KEYHIT(1)
for Bub.Bubbles = each Bubbles
 For x = 0 to 19
   For y = 0 to 14
   Bub\xPos = x*32
   Bub\yPos = y*32
   Bub\Farbe = rand(1,6)
   Bub\Da = 1
   select Bub\Farbe
    case 1
     DRAWIMAGE bubble1, Bub\xPos, Bub\yPos
    case 2
     DRAWIMAGE bubble2, Bub\xPos, Bub\yPos
    case 3
     DRAWIMAGE bubble3, Bub\xPos, Bub\yPos
    case 4
     DRAWIMAGE bubble4, Bub\xPos, Bub\yPos
    Case 5
     DRAWIMAGE bubble5, Bub\xPos, Bub\yPos
    Case 6
     DRAWIMAGE bubble6, Bub\xPos, Bub\yPos
   End select
   Next
 Next
next
;------------------------------------------------
flip
waitkey
wend
end

Ist schon schwer genug, das mit den Types Wink

Und HIER noch die neuen Grafiken Smile

Big Thx, Gina.

Bfox

BeitragSo, Jul 11, 2004 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das
Code: [AUSKLAPPEN]
Dim Bubb.Bubbles(300)

kannst du weglassen! Rolling Eyes
Glauben ist Mangel an Wissen!

Hubsi

BeitragSo, Jul 11, 2004 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab das ganze mal auf Speed optimiert:Code: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()
Dim bubble(5)
;Bubble-Grafiken laden
bubble(0) = LoadImage("bubble1.png")  ;blau
bubble(1) = LoadImage("bubble2.png")  ;rot
bubble(2) = LoadImage("bubble3.png")  ;gelb
bubble(3) = LoadImage("bubble4.png")  ;hellgrün
bubble(4) = LoadImage("bubble5.png")  ;grün
bubble(5) = LoadImage("bubble6.png")  ;pink
;------------------------------------------------
Type Bubbles
Field xPos, yPos, Da
End Type
;------------------------------------------------
SeedRnd MilliSecs()
;Dim Bubb.Bubbles(300)
For x = 0 To 19
 For y = 0 To 14
  Bub.Bubbles = New Bubbles
  Bub\xPos = x*32
  Bub\yPos = y*32
  Bub\Da = 1
 Next
Next

While Not KeyHit(1)
For Bub.Bubbles = Each Bubbles
 If Bub\Da Then DrawImage bubble(Rand(0,5)), Bub\xPos, Bub\yPos
Next
;------------------------------------------------
Flip
WaitKey ; <--- Absicht?
Wend
End
Lief aber schon vorher ganz ordentlich, wenn man das WaitKey() rausnimmt Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Gina

BeitragSo, Jul 11, 2004 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Bfox
Das stand so in Renés Buch drin. Rolling Eyes Es schien auch etwas schneller zu sein, als ich es reingemacht habe. Er reserviert dann vorher den Speicher, oder?

@ Hubsi
Das sieht ja richtig gut aus, und so schön schnell, danke dir. user posted image
Warum war das nu so langsam bei mir?

Gina.
  • Zuletzt bearbeitet von Gina am So, Jul 11, 2004 18:47, insgesamt einmal bearbeitet

Hubsi

BeitragSo, Jul 11, 2004 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Funzte bei mir einwandfrei Question Findet er sie beim Laden nicht? Ich denke einfach mal Du hast den Code noch nicht gespeichert, so das er im Temp-Ordner von Blitz oder sonst irgendwo ausgeführt wird und somit keinen Zugriff auf die Grafiken hat.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Gina

BeitragSo, Jul 11, 2004 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Jup, bin heute etwas blond, sorry... Embarassed

PS: Das mit dem Waitkey, war erstmal Absicht. Er sollte erst bei Tastendruck alles neu machen...

Hubsi

BeitragSo, Jul 11, 2004 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Gina hat Folgendes geschrieben:
Jup, bin heute etwas blond, sorry... Embarassed
Laughing
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Gina

BeitragSo, Jul 11, 2004 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwie verstehe ich das mit der Mausabfage nicht so ganz. Ich will, dass er bei dem Bubble, den ich angeklickt habe, Da auf 0 setzt und beim nächsten mal nicht zeichnet.

Habs etwa so probiert:
Code: [AUSKLAPPEN]
Repeat
xMaus = MouseX()
yMaus = MouseY()
xMaus = xMaus/32*32
yMaus = yMaus /32*32
Until Getmouse() = 1
For Bub.Bubbles = each Bubbles
 If xMaus = Bub\xPos and yMaus = yPos Then
  Bub\Da = 0
 EndIf
Next

Aber das funktioniert irgendwie nicht... Crying or Very sad

Hubsi

BeitragSo, Jul 11, 2004 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab das einfach mal eingebaut:
Code: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()
Dim bubble(5)
;Bubble-Grafiken laden
bubble(0) = LoadImage("bubble1.png")  ;blau
bubble(1) = LoadImage("bubble2.png")  ;rot
bubble(2) = LoadImage("bubble3.png")  ;gelb
bubble(3) = LoadImage("bubble4.png")  ;hellgrün
bubble(4) = LoadImage("bubble5.png")  ;grün
bubble(5) = LoadImage("bubble6.png")  ;pink
;------------------------------------------------
Type Bubbles
Field xPos, yPos, Da
End Type
;------------------------------------------------
SeedRnd MilliSecs()
For x = 0 To 19
 For y = 0 To 14
   Bub.Bubbles = New Bubbles
   Bub\xPos = x*32
   Bub\yPos = y*32
   Bub\Da = 1
 Next
Next

While Not KeyHit(1)
Cls ; Löschen
mausx=MouseX()
mausy=MouseY()
mh=MouseHit(1)
For Bub.Bubbles = Each Bubbles
 If mh
 ; Wenn Linksklick dann prüfen
  If mausx>bub\xpos And mausx<bub\xpos+32 And mausy>bub\ypos And mausy<bub\ypos+32
   bub\da=False
 EndIf
EndIf
If Bub\Da Then DrawImage bubble(Rand(0,5)), Bub\xPos, Bub\yPos
Next
;------------------------------------------------
Flip
WaitKey
Wend
End
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Gina

BeitragSo, Jul 11, 2004 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Tausend Dank, das funktioniert ja wunderbar... *freufreu*
Mit MouseDown() hatte ich es schonmal probiert, aber ich nehme an, das geht nur, wenn man das in einer Variable speichert?

Welchen Unterschied macht es, ob ich MouseHit() oder MouseDown() benutze? Ich dachte MouseHit() nimmt man zum Mausklickzählen... user posted image

Und dann stand in Renés Buch, dass man erst eine Maus zeichnen muss, da im Vollbild keine vorhanden ist. Heißt das, dass ich in jedem Spiel, wo ich einen Mauszeiger haben will so etwas drum herum basteln muss?
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
maus = LoadImage("pointer.bmp")
Repeat
 Cls
 X = MouseX()
 Y = MouseY()
 DrawImage maus, X, Y
  ; If GetMouse() = 1 Then Oval X-10, Y-10, 20, 20, 1
 Flip
Until KeyHit(1)


Und wie durchsucht man ein Typefeld rückwärts? Wenn ich Bub.Bubbles = Before (Bub) benutze, dann ist ihm das Objekt unbekannt.

Oje, schon wieder so viele Fragen... Embarassed

Vielen lieben Dank jedenfalls, Gina.

Bfox

BeitragMo, Jul 12, 2004 8:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Also der Unterschied zwischen MouseHit() und MouseDown() ist:
Bei MouseHit() kann man nicht draufbleiben, die Funktion nimmt nur einen Klick je Druck an! Bei MouseDown() kannst du immer drauf bleiben! 8)

Du kannst mit MouseHit() auch die Tastendrücke zählen das stimmt!

Das mit dem Typefeld rückwärts auslesen weiß nicht ob das geht! Embarassed

Brobier mal alle Einträge in eine For Next Schleife zu Fertauschen!
Glauben ist Mangel an Wissen!

Gina

BeitragMo, Jul 12, 2004 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Bfox hat Folgendes geschrieben:
Also der Unterschied zwischen MouseHit() und MouseDown() ist:
Bei MouseHit() kann man nicht draufbleiben, die Funktion nimmt nur einen Klick je Druck an! Bei MouseDown() kannst du immer drauf bleiben! 8)

Aso, danke. Dann wäre MouseHit() in meinem Fall wohl besser.

Zu den Types:
Mit "For Bub.Bubbles = Each Bubbles" lese ich sie vom ersten bis letzten ein. Weiß jetzt nicht, was ich da vertauschen kann Sad Wenn ich einen zurück gehen will, muss ich entweder von vorne anfangen, was unheimlich Speicher kostet oder mit Before arbeiten, was ich irgendwie nicht hinbekomme. So hab ich es jedenfalls nach Renés Buch verstanden. Und wenn das so nicht stimmt, dann hab ichs gar nicht verstanden...Wink Dann klärt mich bitte auf... Razz

Ich probiere es jetzt mal mit Dim-Feldern. Die kann ich wenigstens direkt mit ihrer Nummer ansprechen...

Besten Dank erstmal, Gina.

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group