Zahlenschloss

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Schnuff

Betreff: Zahlenschloss

BeitragSa, Apr 09, 2005 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe gerade ein Zalenschloss Programmiert und wollte mal wissen,
wie ichs anstelle, dass wenn man einmal Klickt auch nur eine Zahl kommt.
mit mousehit funktioniert das ganze nicht!!!!
also musste ich mousedown nehmen!
hier einmal der Quelltext

BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()


Const Pfad$ = \"D:\bmp\\"
Const Gr = 20
Const Ab = 60

B = LoadAnimImage(Pfad$+\"Buttom1.bmp\",Gr,Gr,0,8)
;ResizeImage B,80,80
Dim Sch(12,3);< 10=Button > , [1=Status(Betätigt?)] , [2=X] , [3=Y]


Sch( 1,2)= Ab : Sch( 1,3)= 10
Sch( 2,2)= Ab : Sch( 2,3)= Sch(1,3)+Gr*2
Sch( 3,2)= Ab : Sch( 3,3)= Sch(2,3)+Gr*2

Sch( 4,2)= Sch(1,2)+Gr*2 : Sch( 4,3)= 10
Sch( 5,2)= Sch(2,2)+Gr*2 : Sch( 5,3)= Sch(4,3)+Gr*2
Sch( 6,2)= Sch(3,2)+Gr*2 : Sch( 6,3)= Sch(5,3)+Gr*2

Sch( 7,2)= Sch(4,2)+Gr*2 : Sch( 7,3)= 10
Sch( 8,2)= Sch(5,2)+Gr*2 : Sch( 8,3)= Sch(7,3)+Gr*2
Sch( 9,2)= Sch(6,2)+Gr*2 : Sch( 9,3)= Sch(8,3)+Gr*2

Sch(11,2)= Sch(7,2)+Gr*2 : Sch(11,3)= Sch(1,3);+Gr*2
Sch(10,2)= Sch(7,2)+Gr*2 : Sch(10,3)= Sch(1,3)+Gr*2
Sch(12,2)= Sch(7,2)+Gr*2 : Sch(12,3)= Sch(2,3)+Gr*2


For i = 1 To 10
Sch(i,1) = 0
Next





Repeat
X = MouseX()
Y = MouseY()
Color 127,127,127
Rect 0,Ab-10,(Gr*9-Gr*2-Gr/2) , (Gr*10-Gr*2+Gr/2),1

Color 255,255,255
For i = 1 To 12
If MouseDown(1) And RectsOverlap(X,Y,1,1, Sch(i,3),Sch(i,2),Gr,Gr) Then
Sch(i,1) = 2
If Right(Txt$,1)=Str$(i) And L > MilliSecs()/100 Then Goto W
If Right(Txt$,1)=i-10 And L > MilliSecs()/100 Then Goto W
L = MilliSecs()/100+50
If i <= 9 Then Txt$ = Txt$ + Str$(i)
If i = 10 Then Txt$ = Txt$ + \"0\"
If i = 12 And Len(Txt$) > 0 Then Txt$ = Left$(Txt$,Len(Txt$)-1)
EndIf
.W
DrawImage B,Sch(i,3),Sch(i,2),Sch(i,1)
If i <= 9 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"\"+i+\"\",1,1
If i = 10 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"0\",1,1
If i = 11 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"OK\",1,1
If i = 12 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"R\",1,1
If Sch(i,1) <> 0 Xor (MouseDown(1) And RectsOverlap(X,Y,1,1, Sch(i,3),Sch(i,2),Gr,Gr)) Then Sch(i,1) = 0
Next

Text (Gr*9-Gr*2),10,Txt$

Flip
Cls
Until KeyHit(1)

End


für "Buttom1.bmp" habe ich etwas im Stiel von B+ eingesetzt, da ich kein B+ habe Sad

PS: warum kann man eigentlich nur B+ oder B3D haben Question
 

Apocalyptic

BeitragSa, Apr 09, 2005 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Speicher in jedem Schleifendurchgang den Rückgabewert von Mousehit(1) in eine Variable und frag deren Wert ab. Dieses Thema gabs hier schon so oft, falls du nicht weiterkommst, hilft dir die Suche bestimmt Wink
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Ebola33

BeitragSo, Apr 10, 2005 4:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
BlitzBasic: [AUSKLAPPEN]

While Not KeyDown(1)
maustaste=MouseHit(1)
If maustaste Then bla
Wend

Mfg Ebola
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/
 

Schnuff

BeitragSo, Apr 10, 2005 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Apocalyptic hat Folgendes geschrieben:
Speicher in jedem Schleifendurchgang den Rückgabewert von Mousehit(1) in eine Variable und frag deren Wert ab. Dieses Thema gabs hier schon so oft, falls du nicht weiterkommst, hilft dir die Suche bestimmt Wink


aber wenn ich mouseHit(1) einsetze Funktioniert das alles nicht mehr Sad
 

Timo

BeitragSo, Apr 10, 2005 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
du fragst zeimal in deiner Schleife den Mauszustand ab. Bei Maushit() löscht du damit gleichzeitig den (sagen wir) inneren Speicher für die Maus. Bekommst du also beim ersten mal eine 1 zurück, erhälst du das zweite mal in der schleife von Mousehit() garantiert eine 0 zurück. Darum währe es eine gute möglichkeit, den Zustand der Maus in einer Variable zu speichern, damit der Wert nicht verloren geht. D.h. du fragst nur einmal am Anfang die Maus ab, den rest erledigst du mit der Variable
 

Apocalyptic

BeitragSo, Apr 10, 2005 12:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Timo hat Folgendes geschrieben:
du fragst zeimal in deiner Schleife den Mauszustand ab.


Zweimal? Wohl eher zwölfmal...BlitzBasic: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()


Const Pfad$ = \"D:\bmp\\"
Const Gr = 20
Const Ab = 60



B =LoadAnimImage(Pfad$+\"Buttom1.bmp\",Gr,Gr,0,8)
;ResizeImage B,80,80
Dim Sch(12,3);< 10=Button > , [1=Status(Betätigt?)] , [2=X] , [3=Y]


Sch( 1,2)= Ab : Sch( 1,3)= 10
Sch( 2,2)= Ab : Sch( 2,3)= Sch(1,3)+Gr*2
Sch( 3,2)= Ab : Sch( 3,3)= Sch(2,3)+Gr*2

Sch( 4,2)= Sch(1,2)+Gr*2 : Sch( 4,3)= 10
Sch( 5,2)= Sch(2,2)+Gr*2 : Sch( 5,3)= Sch(4,3)+Gr*2
Sch( 6,2)= Sch(3,2)+Gr*2 : Sch( 6,3)= Sch(5,3)+Gr*2

Sch( 7,2)= Sch(4,2)+Gr*2 : Sch( 7,3)= 10
Sch( 8,2)= Sch(5,2)+Gr*2 : Sch( 8,3)= Sch(7,3)+Gr*2
Sch( 9,2)= Sch(6,2)+Gr*2 : Sch( 9,3)= Sch(8,3)+Gr*2

Sch(11,2)= Sch(7,2)+Gr*2 : Sch(11,3)= Sch(1,3);+Gr*2
Sch(10,2)= Sch(7,2)+Gr*2 : Sch(10,3)= Sch(1,3)+Gr*2
Sch(12,2)= Sch(7,2)+Gr*2 : Sch(12,3)= Sch(2,3)+Gr*2


For i = 1 To 10
Sch(i,1) = 0
Next


Repeat
X = MouseX()
Y = MouseY()
mhit=MouseHit(1)

Color 127,127,127
Rect 0,Ab-10,(Gr*9-Gr*2-Gr/2) , (Gr*10-Gr*2+Gr/2),1

Color 255,255,255
For i = 1 To 12
If mhit And RectsOverlap(X,Y,1,1, Sch(i,3),Sch(i,2),Gr,Gr) Then
Sch(i,1) = 2
;If Right(Txt$,1)=Str$(i) And L > MilliSecs()/100 Then Goto W
;If Right(Txt$,1)=i-10 And L > MilliSecs()/100 Then Goto W
L = MilliSecs()/100+50
If i <= 9 Then Txt$ = Txt$ + Str$(i)
If i = 10 Then Txt$ = Txt$ + \"0\"
If i = 12 And Len(Txt$) > 0 Then Txt$ = Left$(Txt$,Len(Txt$)-1)
EndIf
.W
DrawImage B,Sch(i,3),Sch(i,2),Sch(i,1)
If i <= 9 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"\"+i+\"\",1,1
If i = 10 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"0\",1,1
If i = 11 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"OK\",1,1
If i = 12 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"R\",1,1
If Sch(i,1) <> 0 Xor (MouseDown(1) And RectsOverlap(X,Y,1,1, Sch(i,3),Sch(i,2),Gr,Gr)) Then Sch(i,1) = 0
Next

Text (Gr*9-Gr*2),10,Txt$

Flip
Cls
Until KeyHit(1)

End
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]
 

Timo

BeitragSo, Apr 10, 2005 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
au da ist ja ne schleife Very Happy
aber dann sinds auch nicht 12 mal sondern 24 mal Wink
im quelltext stand zwei mal Mousedown(), darum dachte ich am anfang, es würde nur 2mal abgefragt werden ^^
 

Schnuff

BeitragSo, Apr 10, 2005 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
OK hier mein neuer Queltext
BlitzBasic: [AUSKLAPPEN]

Graphics 640,480,16,2
SetBuffer BackBuffer()


Const Pfad$ = \"D:\bmp\\"
Const Gr = 20
Const Ab = 60

B = LoadAnimImage(Pfad$+\"Buttom1.bmp\",Gr,Gr,0,8)
;ResizeImage B,80,80
Dim Sch(12,3);< 10=Button > , [0=Millisec()] [1=Status(Betätigt?)] , [2=X] , [3=Y]


Sch( 1,2)= Ab : Sch( 1,3)= 10
Sch( 2,2)= Ab : Sch( 2,3)= Sch(1,3)+Gr*2
Sch( 3,2)= Ab : Sch( 3,3)= Sch(2,3)+Gr*2

Sch( 4,2)= Sch(1,2)+Gr*2 : Sch( 4,3)= 10
Sch( 5,2)= Sch(2,2)+Gr*2 : Sch( 5,3)= Sch(4,3)+Gr*2
Sch( 6,2)= Sch(3,2)+Gr*2 : Sch( 6,3)= Sch(5,3)+Gr*2

Sch( 7,2)= Sch(4,2)+Gr*2 : Sch( 7,3)= 10
Sch( 8,2)= Sch(5,2)+Gr*2 : Sch( 8,3)= Sch(7,3)+Gr*2
Sch( 9,2)= Sch(6,2)+Gr*2 : Sch( 9,3)= Sch(8,3)+Gr*2

Sch(11,2)= Sch(7,2)+Gr*2 : Sch(11,3)= Sch(1,3);+Gr*2
Sch(10,2)= Sch(7,2)+Gr*2 : Sch(10,3)= Sch(1,3)+Gr*2
Sch(12,2)= Sch(7,2)+Gr*2 : Sch(12,3)= Sch(2,3)+Gr*2


For i = 1 To 10
Sch(i,1) = 0
Next





Repeat
X = MouseX()
Y = MouseY()
Color 127,127,127
Rect 0,Ab-10,(Gr*9-Gr*2-Gr/2) , (Gr*10-Gr*2+Gr/2),1

Color 255,255,255
Mouse = GetMouse()
Locate 0,200
For i = 1 To 12
If Mouse = 1 And RectsOverlap(X,Y,1,1, Sch(i,3),Sch(i,2),Gr,Gr) Then
Sch(i,1) = 2
Sch(i,0) = MilliSecs()
;If Right(Txt$,1)=Str$(i) And L > MilliSecs()/100 Then Goto W
;If Right(Txt$,1)=i-10 And L > MilliSecs()/100 Then Goto W
If i <= 9 Then Txt$ = Txt$ + Str$(i)
If i = 10 Then Txt$ = Txt$ + \"0\"
If i = 12 And Len(Txt$) > 0 Then Txt$ = Left$(Txt$,Len(Txt$)-1)
EndIf
DrawImage B,Sch(i,3),Sch(i,2),Sch(i,1)
If i <= 9 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"\"+i+\"\",1,1
If i = 10 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"0\",1,1
If i = 11 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"OK\",1,1
If i = 12 Then Text Sch(i,3)+Gr/2,Sch(i,2)+Gr/2,\"R\",1,1
If Sch(i,1) <> 0 And Sch(i,0) > MilliSecs()+500 Then Sch(i,1) = 0
Next

Text (Gr*9-Gr*2),10,Txt$

Flip
Cls
Until KeyHit(1)

End


aber jetzt noch ein Problem: wenn ich einmal auf eine Taste Drücke, dann Bleibt der Schalter nur ca 0,0002 sec dunkel-Grau!
ich hab schon versucht das auf ca 0,5 sec zu änder klappt aber nicht Sad
 

Apocalyptic

BeitragSo, Apr 10, 2005 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Timo hat Folgendes geschrieben:
au da ist ja ne schleife Very Happy
aber dann sinds auch nicht 12 mal sondern 24 mal Wink
im quelltext stand zwei mal Mousedown(), darum dachte ich am anfang, es würde nur 2mal abgefragt werden ^^


Stimmt, da hat sich ja noch mal eins versteckt Smile

BlitzBasic: [AUSKLAPPEN]
If Sch(i,1) <> 0 And MilliSecs()>Sch(i,0)+500 Then Sch(i,1) = 0
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group