Stoppuhr

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Spikespine

Betreff: Stoppuhr

BeitragSo, Jun 13, 2004 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiß nich obs sowas schonmal gab, aber ich hab mal so ein programmchen geschrieben, dass eine Stoppuhr darstellen soll. Der Code ist nicht sehr schlau programmiert und könnte wohl doppelt so klein sein ... Very Happy ... aber egal:
BlitzBasic: [AUSKLAPPEN]
Graphics 640,480
AppTitle "Stoppuhr"
SchriftA = LoadFont("Courier new", 40, 1,0,0) ; Schrift für Sekunden, Minuten
SchriftB = LoadFont("Courier new", 32, 0,0,0) ; Schrift für Tausendstel
.Beginn
SetBuffer BackBuffer()
Stoppzeit = 0 ; Falls man zu "Beginn" zurückkommt, muss die Stoppzeit (gesamtzeit des Stoppens)
Start = 0 ; und die Variable Start (eigentlich umgehbar) zurückgesetzt werden.
Repeat
Cls
Rect 170,190,255,100,0 ; Das Rechteck des "Displays"
Rect 170,170,50,20,1 ; Knopf
Rect 375,170,50,20,1 ; Knopf
SetFont SchriftA
Text 200,220,"00:00"
SetFont SchriftB
Text 325,226, "000"
Rect 170,190,255,100,0
Rect 170,170,50,20,1
Rect 375,170,50,20,1

MausX = MouseX()
MausY = MouseY()

If MausX > 169 And MausX < 221 And MausY > 169 And MausY < 191 Then
Color 255,0,0 ; Falls die Maus sich über einen Knopf bewegt, wird dieser rot gezeichnet
Rect 170,170,50,20,1
Color 255,255,255 ; Farbe zurücksetzen
If MouseHit(1) Then ;wenn dazu noch die Maus benutzt wird, wird
Start = 1 ;gestartet
EndIf
EndIf
Flip
Until Start = 1 Or KeyHit(1)
Anfang = MilliSecs()
.Hptschl
Repeat
FlushKeys
Cls
Zwischenzeit = MilliSecs() ; Die Zwischenzeit minus den Anfang bestimmt ...

Spanne = (Zwischenzeit - Anfang)-Stoppzeit ; ... die Atuelle Zeitspanne (in Tausendstel)


Tausendstel = Spanne - TBegrenzung ; Die Tausendstel sind gleich Spanne. Da aber die Spanne höher wird als 999,
Sekunden = (Spanne / 1000) - SBegrenzung ; rechne ich immer minus die Begrenzung (bei Sekunden das gleiche)
Minuten = (Spanne / 1000) / 60 ; Die Minuten sind gleich Sekunden (spanne / 1000) durch 60.


If Tausendstel > 999 Then TBegrenzung = TBegrenzung + 1000 ; Ist der Wert höher als 999, wird die Begrenzung
If Sekunden > 59 Then SBegrenzung = SBegrenzung + 60 ; erhöht. Das gleiche geschieht bei den Sekunden.



SetFont SchriftA ; für Minuten und Sekunden wird große Schrift eingeschaltet.
Text 200,220, Replace$(RSet$(Minuten, 2), " ", 0) + ":" + Replace$(RSet$(Sekunden,2), " ", 0)
; Mit RSet vergrößer ich die zeichenketten der Zahlen (mit leerstellen) auf 2. Danach
; tausche ich die Leerzeichen mit Replace gegen Nullen.
SetFont SchriftB
Text 325,226, Replace$(RSet$(Tausendstel, 3), " ", 0)


Rect 170,190,255,100,0
Rect 170,170,50,20,1
Rect 375,170,50,20,1


MausX = MouseX()
MausY = MouseY()
If MausX > 169 And MausX < 221 And MausY > 169 And MausY < 191 Then
Color 255,0,0
Rect 170,170,50,20,1
Color 255,255,255
If MouseHit(1) Then Goto Stopp
EndIf
If MausX > 374 And MausX < 426 And MausY > 169 And MausY < 191 Then
Color 255,0,0
Rect 375,170,50,20,1
Color 255,255,255
If MouseHit(1) Then Goto Zwzeit
EndIf

Flip
Until KeyHit(1)
FlushKeys
WaitKey()
End
.Stopp
Stoppanfang = MilliSecs()
Repeat
Cls
Stoppzwischenzeit = MilliSecs()

SetFont SchriftA ; für Minuten und Sekunden wird große Schrift eingeschaltet.
Text 200,220, Replace$(RSet$(Minuten, 2), " ", 0) + ":" + Replace$(RSet$(Sekunden,2), " ", 0)
; Mit RSet vergrößer ich die zeichenketten der Zahlen (mit leerstellen) auf 2. Danach
; wechsel ich die Leerzeichen mit Replace gegen Nullen.
SetFont SchriftB
Text 325,226, Replace$(RSet$(Tausendstel, 3), " ", 0)
Rect 170,190,255,100,0
Rect 170,170,50,20,1
Rect 375,170,50,20,1
MausX = MouseX()
MausY = MouseY()
If MausX > 169 And MausX < 221 And MausY > 169 And MausY < 191 Then
Color 255,0,0
Rect 170,170,50,20,1
Color 255,255,255
If MouseHit(1) Then
Stoppzeit = Stoppzeit + (Stoppzwischenzeit - Stoppanfang)
Goto Hptschl
EndIf
EndIf
If MausX > 374 And MausX < 426 And MausY > 169 And MausY < 191 Then
Color 255,0,0
Rect 375,170,50,20,1
Color 255,255,255
If MouseHit(1) Then
Goto Beginn
EndIf
EndIf
Flip
Until KeyHit(1)
.Zwzeit
Repeat
Cls
SetFont SchriftA ; für Minuten und Sekunden wird große Schrift eingeschaltet.
Text 200,220, Replace$(RSet$(Minuten, 2), " ", 0) + ":" + Replace$(RSet$(Sekunden,2), " ", 0)
; Mit RSet vergrößer ich die zeichenketten der Zahlen (mit leerstellen) auf 2. Danach
; wechsel ich die Leerzeichen mit Replace gegen Nullen.
SetFont SchriftB
Text 325,226, Replace$(RSet$(Tausendstel, 3), " ", 0)
Rect 170,190,255,100,0
Rect 170,170,50,20,1
Rect 375,170,50,20,1
MausX = MouseX()
MausY = MouseY()
If MausX > 374 And MausX < 426 And MausY > 169 And MausY < 191 Then
Color 255,0,0
Rect 375,170,50,20,1
Color 255,255,255
If MouseHit(1) Then Goto Hptschl
EndIf
Flip
Until KeyHit(1)

soli

BeitragSo, Jun 13, 2004 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
nur doppelt so klein?
http://www.blitzbase.de/quellcode/stoppuhr.bb
solitaire

Spikespine

BeitragMo, Jun 14, 2004 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Nahjahhh... das ist doch nicht ganz das selbe...

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group