Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 27.04.2008, 20:09 Titel: bild springt automatisch um? |
|
|
ich habe das Problem, dass das bild automatisch umspringt, wenn ich mit der maus auf einen schalter klicke und beim nächsten Fenster an der selben stelle ein feld ist wird dieses automatisch auch angecklickt. wie kann ich das verhindern?
Hier der code:
Code: |
DIM SHARED AS INTEGER x, y, a, b
SUB Start
Cls
BLOAD "DATA\marv1.bmp"
print "marv1"
b = 1
END SUB
SUB marv2
CLS
bload "Data\marv2.bmp"
PRINT "marv2"
b = 2
sleep
END SUB
SUB marv3
CLS
bload "data\marv3.bmp"
PRINT "marv3"
END SUB
SUB marv4
CLS
PRINT "info"
SLEEP
END SUB
SUB thom1
CLS
PRINT "intro"
SLEEP
END SUB
SCREEN 21, 32
BLOAD "DATA\menue.bmp"
DO
GETMOUSE (x,y, ,a)
LOCATE 1,1
PRINT USING "####:####"; x,y
IF a AND 1 AND x >= 338 AND x <= 855 AND y >= 98 AND y <= 576 THEN Start 'Bild im menü (start)
IF a AND 1 AND x >= 474 AND x <= 764 AND y >= 883 AND y <= 951 and b = 0 THEN END ' Beenden Button im Menü
IF a AND 1 AND x >= 1141 AND x <= 1250 AND y >= 895 AND y <= 1007 AND b = 1 THEN marv2 'Von marv1 zu marv2
IF a AND 1 AND x >= 1141 AND x <= 1250 AND y >= 895 AND y <= 1007 AND b = 2 THEN marv3 'Von marv 2 zu marv3
IF a AND 1 AND x >= 1141 AND x <= 1250 AND y >= 895 AND y <= 1007 AND b = 3 THEN marv4
IF a AND 1 AND x >= 1141 AND x <= 1250 AND y >= 895 AND y <= 1007 AND b = 4 THEN thom1
LOOP until inkey = chr(27) |
(das ganze soll eine art erweiterte Präsentation werden.) |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 27.04.2008, 20:13 Titel: |
|
|
du solltest wohl nach einem klick erst warten, bis die maustaste wieder losgelassen wurde, bevor du fortfährst.
Code: |
do
getmouse x,y,z,button
loop until button = 0
|
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 27.04.2008, 20:19 Titel: |
|
|
wow danke es funktioniert
war ja wohl zu einfach
danke  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 27.04.2008, 20:21 Titel: |
|
|
oh, und natürlich bitte das SLEEP 1 in der schleife nicht vergessen, damit die cpu-last schön auf 0% bleibt  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 02.10.2008, 21:29 Titel: |
|
|
Noch eine frage wie ich "richtig" runden kann und zwar habe ich zahlen wie 15, 2, 3,29,usw. diese will ich auf den nächsten zehner aufrunden (10,20,30,40,usw.) kann mir vll einer verraten wie das geht ??? ich habe keinen plan!! danke schon mal für eure antworten, welche hoffentlich bald komen  |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 03.10.2008, 04:52 Titel: |
|
|
durch 10 teilen, normal runden, mit 10 malnehmen _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 03.10.2008, 12:27 Titel: |
|
|
stimmt aber ich weis nicht mal wie man ormal rundet xD werd wohl mal die referenz studieren.
edit: außerdem muss immer aufgerundet werden. dies könnte ich aber auch dur + 0,4 erreichen^^. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 03.10.2008, 14:03 Titel: |
|
|
runden: y = int(x+.5)
mit nochmal +.4 (insgesamt also +.9) rundest du nicht auf, 0.01 würde immernoch zu 0. aufrunden könntest du zB so:
if x=int(x) then y=x else y=int(x+1)
oder so:
y=-int(-x) _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 03.10.2008, 18:29 Titel: |
|
|
cint rundet meines Wissens nach auch mathematisch richtig... _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 565 Wohnort: Jüterbog
|
Verfasst am: 04.10.2008, 04:10 Titel: |
|
|
dieses Rundungsproblem hat mich jetzt doch interessiert...
meine Lösung:
Code: | zahl= int((zahl-1)/10) * 10 + 10 |
..und jetzt gibbed Küppel uff Kopp bei mir, wegen Lerneffekt und so...
Mutton |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 04.10.2008, 14:09 Titel: |
|
|
ist übrigens dasselbe wie
(beachte die Richtung des Schrägstriches) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 04.10.2008, 16:51 Titel: |
|
|
hier noch meine Lösung nach google und referenz
Code: |
dim as single a,b,c,d,e,f,g,h
dim as integer i,j,k,l,m,n,o,p
screen 19
cls
a = 12.967
b = 56.483
c = 432.432
d = 56.3245
e = 5.45
f = 345.3415
g = 34.675
h = 1345.1435
i = cint(a)
j = cint(b)
k = cint(c)
l = cint(d)
m = cint(e)
n = cint(f)
o = cint(g)
p = cint(h)
print a;i
print b;j
print c;k
print d;l
print e;m
print f;n
print g;o
print h;p
sleep
end |
so funzt des einwand frei und um nur aufzurunden müsste des dann so aussehen:
Code: |
'Nötige Variablen:
dim as single a,b,c,d,e,f,g,h
dim as integer i,j,k,l,m,n,o,p
screen 19
cls
' einfach mal paar testzahlen:
a = 12.967
b = 56.483
c = 432.432
d = 56.3245
e = 5.45
f = 345.3415
g = 34.675
h = 1345.1435
' dmit nur aufgerundet wird:
a = a + 0.4
b = b + 0.4
c = c + 0.4
d = d + 0.4
e = e + 0.4
f = f + 0.4
g = g + 0.4
h = h + 0.4
'der eigentliche vorgan der rundung (cint)
i = cint(a)
j = cint(b)
k = cint(c)
l = cint(d)
m = cint(e)
n = cint(f)
o = cint(g)
p = cint(h)
'zum überprüfen ob das gerundete korrekt ist (Ausgangszahl : gerundete zahl)
print a;":";i
print b;":";j
print c;":";k
print d;":";l
print e;":";m
print f;":";n
print g;":";o
print h;":";p
sleep
end |
ich weiß es wäre auch einfacher gegangen aber so isses übersichtlicher.
Mfg, Sippo |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 04.10.2008, 17:46 Titel: |
|
|
ok kann sein aber das muss ich erst au no lernen vll könnt ihr mir ja ein beispiel reinstellden. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 04.10.2008, 18:32 Titel: |
|
|
Achtung, deine Methode enthält einen Fehler!
Code: | ' einfach mal paar testzahlen:
a = 3.012
[...]
' damit nur aufgerundet wird:
a = a + 0.4
[...]
'der eigentliche Vorgang der Rundung (CINT)
i = CINT(a)
' i ist jetzt 3 !!
|
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 04.10.2008, 18:36 Titel: |
|
|
stimmt ich habe nur auf die 1. nachkommastelle gechtet o.O
edit: weiß nun auch wieder warum: das Programm für das ich das brauch hat nur immer 1 nachkommastelle. aber hier ein neuer code ( der is auch noch kürzer xD)
Code: |
dim as single a,b,c,d,e,f,g ,h,i,j,k,l,m,n
a = 12.067
b = 56.483
c = 432.432
d = 56.0245
e = 5.45
f = 345.3415
g = 34.675
h = cint(a)
i = cint(b)
j = cint(c)
k = cint(d)
l = cint(e)
m = cint(f)
n = cint(g)
if a >= h then h = h +1
if b >= i then i = i +1
if c >= j then j = j +1
if d >= k then k = k +1
if e >= l then l = l +1
if f >= m then m = m +1
if g >= n then n = n +1
print h
print i
print j
print k
print l
print m
print n
sleep
end |
|
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 04.10.2008, 19:29 Titel: |
|
|
Code: | aufgerundet = CInt(x + .5 * ((Frac(x) <> 0) And Sgn(x))) |
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 04.10.2008, 19:39 Titel: |
|
|
Mir gefällt MisterDs Lösung sehr gut:
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 04.10.2008, 19:39 Titel: |
|
|
hier noch meine array variante, ist wirklich kleiner aber übersichtlicher???
muss ich wohl noch üben bisses so aussieht wie bei cherry. xD
Code: |
dim as single a(1 to 7), b(1 to 8),c
a(1) = 12.067
a(2) = 56.483
a(3) = 432.432
a(4) = 56.0245
a(5) = 5.45
a(6) = 345.3415
a(7) = 34.675
do
c = c + 1
b(c) = cint(a(c))
if b(c) >= a(c) then b(c) = b(c)+1
locate c,1
print b(c)
loop until c = 7
sleep
end |
|
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 04.10.2008, 19:51 Titel: |
|
|
nemored hat Folgendes geschrieben: | Mir gefällt MisterDs Lösung sehr gut:
|
Da wird dann aber -4.1 z.B. zu -4. Beim Runden wird dann aber meistens -5 gewünscht.
Btw - lol, "Print -0f" gibt tatsächlich "-0" aus! Ich wusste gar nicht, dass es das gibt.
EDIT: Sippo hat Folgendes geschrieben: | Code: |
DIM AS SINGLE a(1 TO 7), b(1 TO 8),c
a(1) = 12.067
a(2) = 56.483
a(3) = 432.432
a(4) = 56.0245
a(5) = 5.45
a(6) = 345.3415
a(7) = 34.675
DO
c = c + 1
b(c) = CINT(a(c))
IF b(c) >= a(c) THEN b(c) = b(c)+1
LOCATE c,1
PRINT b(c)
LOOP UNTIL c = 7
SLEEP
END |
|
Das geht noch kleiner - wobei noch immer der selbe Algorithmus verwendet wird:
Code: |
DIM AS SINGLE a(6) => {12.067, 56.483, 432.432, 56.0245, 5.45, 345.3415, 34.675}, b(6)
For i As Integer = LBound(a) To UBound(a)
b(i) = CINT(a(i))
IF b(i) >= a(i) THEN b(c) += 1
PRINT b(c)
Next
SLEEP
END |
Zuletzt bearbeitet von Cherry am 04.10.2008, 19:59, insgesamt 3-mal bearbeitet |
|
Nach oben |
|
 |
|