Warum funkts das nicht?
Übersicht

White-air |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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
![]() ![]() ![]() |
||
Todeskop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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...? |
||
BlitzBasic303Betreff: RE: |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. ![]() |
||
MolchMitDolch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@0penguin0
versteh ich nicht ganz, meinst du meine schreibweise von Schleife? ![]() ![]() @White-air Du hast 3 Fehler in einer Zeile ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@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... |
||
BlitzBasic303Betreff: RE: |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da magst du rechthaben ![]() |
||
White-air |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() Ich bin noch ein anfänger ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 ![]() mfg MolchMitDolch |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group