Das gute alte Lotto

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Mr Hopp

Betreff: Das gute alte Lotto

BeitragDi, Aug 30, 2005 10:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Hier mal ein Lotto-Code(ohne Superzahl). Ich hätte nicht gedacht, das das doch so kompiliziert sein kann, is dementsprechend gut komentiert.

Code: [AUSKLAPPEN]
Graphics 800, 600, 32, 1
SetBuffer BackBuffer()
SeedRnd(MilliSecs())

;Alles nötige, globale deklarieren
Global Arial_Gross = LoadFont("Arial", 40)
Global Arial_Normal = LoadFont("Arial", 20)

Dim z(6)
Dim Tipp(6)

;Start der Hauptschleife
Repeat
Cls

y = 200 ;Dient zur Platzierung des Textes

;Die 6 Zahlen abfragen (Was wird getippt?)
For i = 0 To 5

;Diese Schleife wird solange wiederholt, bis die gewählte Zahl akzeptabel ist
Repeat
Cls

error = 0
ok = 0
y_2 = 200

;Diese Schleife schriebt alles schon bestehende an
For j = 0 To 5
If Tipp(j) > 0 And Tipp(j) < 50 Then Text 325, y_2, "Sie Tippen: "+Tipp(j)
y_2 = y_2 + 25
Next
Flip

;Und nun kommt die eigentliche Abfrage
Locate 325, y
Tipp(i) = Input("Sie Tippen: ")
l = i + 1
For k = 0 To 4
If Tipp(l) = Tipp(i) Then
error = 1
Tipp(i) = 0
EndIf
l = l + 1
If l > 5 Then l = 0
Next
If error = 0 Then ok = 1
Flip
Until Tipp(i) > 0 And Tipp(i) < 50 And ok = 1

y = y + 25

Next
;Abfrage beendet

Losen;Erklärt sich von selbst ^^

;Überprüft, wieviele Treffer entstanden sind
For i = 0 To 5
For j = 0 To 5
If Tipp(i) = z(j) Then richtige = richtige + 1
Next
Next

;Diese Schleife gibt die Infos aus
x1 = -200
x2 = 1000
Repeat
Cls
Text x1, 50, "Sie haben getippt: "+Tipp(0)+"|"+Tipp(1)+"|"+Tipp(2)+"|"+Tipp(3)+"|"+Tipp(4)+"|"+Tipp(5), 1
Text x2, 100, "Und haben "+richtige+" Richtige", 1
x1 = x1 + 1
x2 = x2 - 1
Zeichne_Kugel(125,300,z(0))
Zeichne_Kugel(225,300,z(1))
Zeichne_Kugel(325,300,z(2))
Zeichne_Kugel(425,300,z(3))
Zeichne_Kugel(525,300,z(4))
Zeichne_Kugel(625,300,z(5))
Flip
Until x1 = 400 And x2 = 400

Locate 250, 500
nochmal$ = Input("Nochmal(Ja/Nein): ")

If nochmal$ <> "Ja" And nochmal$ <> "JA" And nochmal$ <> "ja" Then End

;Sollte "nochmal$" die Bedingungen erfüllt haben wird hier alles nötige genullt
For i = 0 To 5
Tipp(i) = 0
Next
SetFont Arial_normal
Cls
Flip
Forever
;-------------------------------------------------------------------------------------------

Function Losen()

For i = 0 To 5;Natürlich, 6 zahlen
Repeat
error = 0

z(i) = Rnd(1,49);Zahl auswählen...

;...Und auf Einzigartigkeit prüfen
k = i + 1
For j = 0 To 4
If Tipp(k) = Tipp(i) Then error = 1
k = k + 1
If k > 5 Then k = 0
Next

Until error = 0
Next

x = 125
y = -50

;Und hier fliegen die Kugeln rein, setzen auf, hopsen hoch und fallen wieder runter
For i = 0 To 5
Repeat
Cls

Zeichne_Kugel(x, y,z(i))
y = y + 3

If z1_a <> 0 Then Zeichne_Kugel(125,300,z(0))
If z2_a <> 0 Then Zeichne_Kugel(225,300,z(1))
If z3_a <> 0 Then Zeichne_Kugel(325,300,z(2))
If z4_a <> 0 Then Zeichne_Kugel(425,300,z(3))
If z5_a <> 0 Then Zeichne_Kugel(525,300,z(4))
If z6_a <> 0 Then Zeichne_Kugel(625,300,z(5))

Flip
Until y > 300

bewegen# = 1.5
Repeat
Cls

Zeichne_Kugel(x, y,z(i))

y = y - bewegen#
bewegen# = bewegen# - 0.025

If z1_a <> 0 Then Zeichne_Kugel(125,300,z(0))
If z2_a <> 0 Then Zeichne_Kugel(225,300,z(1))
If z3_a <> 0 Then Zeichne_Kugel(325,300,z(2))
If z4_a <> 0 Then Zeichne_Kugel(425,300,z(3))
If z5_a <> 0 Then Zeichne_Kugel(525,300,z(4))
If z6_a <> 0 Then Zeichne_Kugel(625,300,z(5))

Flip
Until bewegen# < 0.3

bewegen# = 1.5
Repeat
Cls

Zeichne_Kugel(x, y,z(i))

y = y + bewegen#
bewegen# = bewegen# -0.025

If z1_a <> 0 Then Zeichne_Kugel(125,300,z(0))
If z2_a <> 0 Then Zeichne_Kugel(225,300,z(1))
If z3_a <> 0 Then Zeichne_Kugel(325,300,z(2))
If z4_a <> 0 Then Zeichne_Kugel(425,300,z(3))
If z5_a <> 0 Then Zeichne_Kugel(525,300,z(4))
If z6_a <> 0 Then Zeichne_Kugel(625,300,z(5))

Flip
Until bewegen# < 0

y = - 50
x = x + 100
If i = 0 Then z1_a = 1
If i = 1 Then z2_a = 1
If i = 2 Then z3_a = 1
If i = 3 Then z4_a = 1
If i = 4 Then z5_a = 1
If i = 5 Then z6_a = 1
Next

End Function

;--------------------------------------------------------------------------------------------
;Ich denke, hier muss man alles verstehen können
Function Zeichne_Kugel(x, y, Nr)

SetFont Arial_Gross
Color 255, 255, 255
Oval(x, y, 75, 75)
Color 0, 0, 0
Text x+37.5, y+37.5, Nr, 1, 1
Color 255, 255, 255
End Function

Spikespine

BeitragDi, Aug 30, 2005 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
der Code ist schon lustig, aber so viel Mühe hättest du dir nicht machen müssen.
Da gibt es einige Sachen zu verkürzen!
Außerdem können bei der Ziehung zwei gleiche Zahlen gezogen werden...

Ich hab mal selber so ein Spiel gebastelt, ich hoffe du verzeihst mir, aber ich konnte es einfach nicht lassen Smile

Code: [AUSKLAPPEN]
Graphics 280,320,32,2
SeedRnd MilliSecs()
SetBuffer BackBuffer()
AppTitle "...:: LOTTO ::..."
Dim tipp(5)
Dim gewinnkugel(5)
Dim kugel#(5,1)

Repeat
   Cls
   If zustand = 0 Then
      ;Wahlfeld einblenden
      For y=0 To 6
         For x=0 To 6
            If RectsOverlap(mousex(),mousey(),1,1, x*40,y*40,40,40) Then
               gewaehlt = 1
               nummergewaehlt = (x+(y*6)+y)+1
            Else
               gewaehlt = 0
            EndIf
            Color 255,255,255
            Rect x*40,y*40,40,40,gewaehlt
            Color 255-gewaehlt*255,255-gewaehlt*255,255-gewaehlt*255
            Text x*40+20,y*40+20,(x+(y*6)+y)+1,1,1
            If MouseHit(1) Then
               For i=0 To 5
                  If nummergewaehlt=tipp(i) Then nichtwaehlen = 1
                  
               Next
               If nichtwaehlen = 0 then
                  tipp(getippt)=nummergewaehlt
                  getippt = getippt + 1
               Else
                  nichtwaehlen = 0
               EndIf
            EndIf
            
         Next
      Next
      For i=0 To 5
         If tipp(i) Then
            Text i*56- (i*3),295,tipp(i)
         EndIf
      Next      
      
      If getippt >= 6 Then zustand =1
   ElseIf zustand = 1 Then
      ;Kugeln zufällig wählen lassen
      If kugelngelost=0 then
         For i=0 To 5
            Repeat
               gewinnkugel(i) = Rand(49)
               nichtwaehlen = 0

               If i>0 then
                  For j=0 To i-1
                     If gewinnkugel(i) = gewinnkugel(j) Then
                        nichtwaehlen = 1
                     EndIf
                  Next
               EndIf
            Until nichtwaehlen = 0
            nichtwaehlen = 0
         Next
         For i=0 To 5
            For j=0 To 5
               If tipp(i) = gewinnkugel(j) Then treffer = treffer + 1
            Next
         Next
         For i=0 To 5
            getipptstring$ = getipptstring + ("["+tipp(i)+"] ")
         Next
         
         kugelngelost = 1
      EndIf
      
      kugel(fallendekugel,0) = kugel(fallendekugel,0) + .2
      kugel(fallendekugel,1) = kugel(fallendekugel,1) + kugel(fallendekugel,0)
      If kugel(fallendekugel,1) > 230 Then
         kugel(fallendekugel,1) = 230
         kugel(fallendekugel,0) = kugel(fallendekugel,0) * (-0.3)
         aufprall = aufprall + 1
      EndIf
      If aufprall = 2 Then
         aufprall = 0
         If fallendekugel < 5 Then
            fallendekugel = fallendekugel + 1
         Else
            Color 255,255,255
            Text 140,10,"Taste drücken",1,0

            Text 140,50,"Ihr Tipp:",1,0
            Text 140,65,getipptstring,1,0
            For i = 0 To 5
               Color 255,255,255
               Oval i * 52, kugel(i,1), 20, 20, 1   
               Color 0,0,0
               Text i*52+10,kugel(i,1)+10,gewinnkugel(i),1,1
            Next
            
            Color 255,255,255
            Text 140,90,treffer+" Richtige"+(string("r",treffer=1))+"!",1,0
            
            Flip
            WaitKey
            End
         EndIf
      EndIf
      
      For i = 0 To 5
         Color 255,255,255
         Oval i * 52, kugel(i,1), 20, 20, 1   
         Color 0,0,0
         Text i*52+10,kugel(i,1)+10,gewinnkugel(i),1,1
      Next
      Color 255,255,255
      Text 140,50,"Ihr Tipp:",1,0
      Text 140,65,getipptstring,1,0
            
   EndIf
   
   Flip
Until KeyHit(1)
End
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

Mr Hopp

BeitragDi, Aug 30, 2005 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
nich schlecht...

Kabelbinder

Sieger des WM-Contest 2006

BeitragDo, Sep 15, 2005 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Aber bei Lotto können doch eigentlich keine Zahlen Doppelt vorkommen. Ich hatte mal die 45 bei deinem Code doppelt, Mr Hopp.

Ich fänd mal so'n Lotto Simulator Cool, wo echt diese ganzen Bälle erst gemischt werden und dann die irgendwo reinrollen und dann die ersten 6 gewählt werden. Wie in echt halt. Und alles Physikalisch korekt. Das wär doch mal cool.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>
 

Mr Hopp

BeitragSa, Sep 17, 2005 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann viel Spaß beim proggen Wink

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group