Warum funkts das nicht?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen

 

White-air

BeitragSa, Jan 06, 2007 9:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ich check net was du meinst aba ich hab das robsite tutorial fast durch und versteh das nciht was du da schreibst und was ich jez machen soll
Question Question Question
 

Todeskop

BeitragSa, Jan 06, 2007 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
denk doch mal nach du erstellst ein mausimage und positionierst das bei der maus das dürftest du ja wisse wie das geht und dann machst du anstatt
das die maus mit dem button collidieren soll, das ,dass image kollidieren soll...
ganz simpel...sag doch genauer was du daran nicht verstehst...?
 

BlitzBasic303

Betreff: RE:

BeitragSa, Jan 06, 2007 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Muss er doch nicht, dafür ist doch imageRECTcollide da. Die Funktion prüft ob ein Bild mit einem angegebenen Bereich collidiert. Aber du hast recht, ein Bild für die Maus wird er sowieso brauchen.

@White-Air: Guck dir nochmal die beiden Tutorials von der Robsite an, dann müsstest du das eigentlich können.
 

White-air

BeitragSa, Jan 06, 2007 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
If IMAGERECTCOLLIDE(Frage1Ja, 70, 450, 0, Mousex(), MouseY,1, 1) and Mousehit(1) then

das ist doch das hier oder?
also das funtks irgendwie bei mir nicht,ich guck mir mal das tutorial an von robsite aba das hab ich mir schon mal angesehen aba irgendwie fand ich da nichts das mir helfen könnte. Question
 

MolchMitDolch

BeitragSa, Jan 06, 2007 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
@0penguin0
versteh ich nicht ganz, meinst du meine schreibweise von Schleife? Question Very Happy


@White-air
Du hast 3 Fehler in einer Zeile Very Happy

1. Du nimmst: "ImageRectCollide" aber du brauchst "ImageRectOverlap"

"ImageRectCollide" überprüft nur ob die Ränder zweier Bilder sich berühren,
"ImageRectOverlap" prüft jedoch ob sich die gesamten Bilder berühren, also auch wenn ein bild sich innerhalb eines anderen befindet

2. die Null ist überflüssig:
IMAGERECTOVERLAP(Frage1Ja, 70, 450, 0, Mousex(), MouseY,1, 1)


3. Du hast die kKammern hinter MouseY() vergessen:
IMAGERECTOVERLAP(Frage1Ja, 70, 450, Mousex(), MouseY(),1, 1)


Und dann noch ein Tipp:
Wenn du das in einer Schleife laufen lässt und "Setbuffer Backbuffer()" und "Flip" verwendest dann wird dein "Print" nur angezeigt solange die schleife aktiv ist, also nur solange du die Maus drückst ==>Also ca 1/30 Sekunde. Deshalb soltest du die Schleife besser so machen:

Code: [AUSKLAPPEN]
If ImageRectOverlap(Frage1Ja, 70, 450, MouseX(), MouseY(),1, 1) And MouseHit(1) Then
   frage1ja_textanzeigen=True       ;hier nur die bedingung für die zweite schleife
                                    ;erfüllen
EndIf

If frage1ja_textanzeigen=True Then  ;hier dann die schleife die durch die
                                    ;bildkollision DAUERHAFT erfüllt ist
   Cls
   Locate 400,300
   Print "hallo"
EndIf


mfg MolchMitDolch
 

BlitzBasic303

BeitragSa, Jan 06, 2007 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
@MolchMitDolch: Ich habe bewusst die Null nur bei ImageRectCollide gemacht, denn da musst du den Frame mit angeben...

@White-Air: Aber wahrscheinlich wirst du sowieso bald ImagesCollide benutzen müssen, da du spätestens wenn du im Vollbildmodus bist einen Mauszeigerersatz brauchst.
 

MolchMitDolch

BeitragSa, Jan 06, 2007 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@BlitzBasic303
Auch bei einem Mauszeigerersatz ist es besser die Kollisionsabfrage so zu schreiben das die Maus immer ein Rect mit 1 Seitenlänge ist. So ist es auch unter Windows: nur die Spitze des Cursors zählt, der Rest ist uninteresant.

Wenn man das gesamte Mausbild nach Kollisionen abfragt kann es vorkommen das man mehrere buttons (o.ä.) berührt...
 

BlitzBasic303

Betreff: RE:

BeitragSo, Jan 07, 2007 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Da magst du rechthaben Wink
 

White-air

BeitragSo, Jan 07, 2007 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
hä ich hab jez alles so gemacht wie ihr das gesagt habt nur das funkts net ich
geb euch jez einfach den ganzen code and es wäre schön wenn ihr sagt was ich falsch geacmht habe Rolling Eyes
Ich bin noch ein anfänger Wink

Graphics 800,600
SetBuffer BackBuffer()


Anfang = LoadImage("Bilder\Startbild1.jpg")

DrawImage Anfang, 0,0


Schrift5 = LoadFont("Arial",20,1,0,0)
SetFont Schrift5
Locate 235,300
Print "Bist du bereit für den Idiotentest?"
Locate 235,325
JaNein$ = Input("Ja/Nein:")

If JaNein$ = "Nein"
DrawImage Anfang, 0,0

Color 250,0,0
Schrift1 = LoadFont("Arial",20,1,0,0)
SetFont Schrift1
Locate 250,300
Print "Schade vielleicht ein andern Mal"
Flip
Delay 2000
EndIf

If JaNein$ = "Ja"
DrawImage Anfang, 0,0

Schrift2 = LoadFont ("Arial",22,1,1,0)
SetFont Schrift2
Locate 300,300
Print "Gute Entscheidung"
Delay 200

Delay 2000
Cls
DrawImage Anfang, 0,0
Locate 200,100
Print "Hier kommt auch schon die erste Frage:"
Schrift3 = LoadFont("Arial",16,0,0,0)
SetFont Schrift3
Else
End
EndIf



Delay 3000
DrawImage Anfang, 0,0


Frage1 = LoadImage("Bilder\banner3Frage1.jpg")
DrawImage Frage1, 130,325
Flip




Frage1Ja = LoadImage("Bilder\banner3ja.jpg")
DrawImage Frage1Ja, 70,450
Flip




Frage1Nein = LoadImage("Bilder\banner3nein.jpg")
DrawImage Frage1Nein, 435,450
Flip


If ImageRectOverlap(Frage1Ja, 70, 450, MouseX(), MouseY(),1, 1) And MouseHit(1) Then
frage1ja_textanzeigen=True
EndIf

If frage1ja_textanzeigen=True Then

Cls
Locate 400,300
Print "hallo"
EndIf
Flip

Delay 2000
Waitkey
End
 

MolchMitDolch

BeitragMo, Jan 08, 2007 1:36
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich hab dein code gerade nur kurz überflogen, ich weis nicht ob das der einzigste fehler ist, aber du soltest dein program so schreiben es in einer schleife läuft:

Code: [AUSKLAPPEN]
;alle einmaligen einstellungen hier:
graphics ...
setbuffer backbuffer()

;bilder laden...

while not keydown(1) ;solange nicht [escape] gedrückt wurde
   ;program anzeigen
   ;z.b.
   text 1, 1, "das ist die sogenante Main-loop, die hauptschleife"
   flip
   cls
wend ;jumpt zurrück zu "while not keydown(1)"
end


wenn du dein program so aufbaust dann wir der bildschirm so wie es sich gehört ca 50mal die sekunde neu "geschrieben", das ist auf langesicht vieeeel angenehmer als wenn du dein bildschirm "vor sich hin gammeln lässt", also bei einem program ohne main-loop...

probier mal dein program so aufzubauen, und poste dann, wenn es probleme gibt wieder den code Very Happy

und um gleich einem anderen fehler vorzubeugen:
schreib deine bild-lade befehle AUSERHAULB der schleife da du sonst das bild andauern neu schreibst un dir daudurch langzeitig den ram voll laufenlässt Wink

mfg MolchMitDolch

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group