Slot machine hilfeeeee

  • VB6

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von dfelbel.

    Hallo,

    bin momentan an einem kleinen spielchen dran und zwar ein slot spiel....

    soweit sogut funktioniert bereits ganz gut allerdings habe ich ein problem und zwar überprüfe ich den gewinn in dem ich einfach gucke ob pic 1 = pic 2 usw und bei 3 richtigen gibts immer 20 cent egal welche bilder geladen wurden nun möchte ich aber das wenn ein höheres symbol kommt der gewinn dem symbol angepasst ist weis aber nicht wie ich das hinbekomme


    quellcode:

    Visual Basic-Quellcode

    1. If Picture1.Picture = Picture2.Picture Then
    2. If Picture2.Picture = Picture3.Picture Then
    3. If Picture3.Picture = Picture4.Picture Then
    4. If Picture4.Picture = Picture5.Picture Then
    5. Label2.Caption = Label2.Caption + 1#
    6. Line1.Visible = True
    7. Picture1.BorderStyle = 1
    8. Picture2.BorderStyle = 1
    9. Picture3.BorderStyle = 1
    10. Picture4.BorderStyle = 1
    11. Picture5.BorderStyle = 1
    12. MsgBox ("Sie Haben 1 € Gewonnen")
    13. Exit Sub
    14. End If
    15. End If
    16. End If
    17. End If

    meine idee wäre noch zb

    Visual Basic-Quellcode

    1. if pic1 = bild1 then
    2. If Picture1.Picture = Picture2.Picture Then
    3. If Picture2.Picture = Picture3.Picture Then
    4. If Picture3.Picture = Picture4.Picture Then
    5. If Picture4.Picture = Picture5.Picture Then
    6. Label2.Caption = Label2.Caption + 1#
    7. Line1.Visible = True
    8. Picture1.BorderStyle = 1
    9. Picture2.BorderStyle = 1
    10. Picture3.BorderStyle = 1
    11. Picture4.BorderStyle = 1
    12. Picture5.BorderStyle = 1
    13. MsgBox ("Sie Haben 1 € Gewonnen")
    14. Exit Sub
    15. elseif pic1 = bild2 then
    16. bla bla
    17. End If
    18. End If
    19. end if
    20. End If
    21. End If



    aber ich denke man kann es bestimmt eleganter lösen...


    sry das ich nich den vb code da benutze aber da steht dann immer alles in ener reihe weis nicht wie der zeilen umbruch geht sry nochmal .. hoffe ihr könnt mir weiter helfen


    Edit by LaMa5:
    - VB-Tag eingefügt, das nächste Mal bitte selbst dran denken

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „LaMa5“ ()

    dfelbel schrieb:

    sry das ich nich den vb code da benutze aber da steht dann immer alles in ener reihe weis nicht wie der zeilen umbruch geht sry nochmal
    VB-Tag richtig benutzen von EDR


    Edit by LaMa5:
    - Link korrigiert (es gibt mittlerweile einen eigene Thread in Borddiskussionen, bitte diesen nutzen!) ;)


    Edit by Me:
    - kommt doch aufs gleiche raus, oder? :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „BjöNi“ ()

    Also erstmal: Option Strict On (findest du in den Projekteistellungen), du addierst hier nämlich Strings...
    Dann: Verschachtelte If-Abfragen sind gar nicht gern gesehen, schonmal was von den Operatoren And, AndAlso und Or gehört?

    Zum Problem: Wie wäre es, wenn du während du die verschiedenen Symbole "auslosen" lässt, eine Variable für jedes Feld festlegst - jeweils im Wert des Symbols. Anschließend kannst du addieren / auf Gleichheit überprüfen...
    ... oder hab ich dich überhaupt richtig verstanden?

    dfelbel schrieb:

    in dem ich einfach gucke ob pic 1 = pic 2 usw und bei 3 richtigen gibts immer 20 cent

    Du solltest Design und Logik trennen ... !

    Dein "Ergebnis" ist im Zweifel ein Array mit drei (einfachheitshalber) Integer-Werten. Diese Werte entsprechen irgendwelchen Bildern, aber das ist ein komplett andere Baustelle!

    Visual Basic-Quellcode

    1. Private Sub foo()
    2. Dim erg(3) As Integer
    3. If erg.Distinct.Count = 1 Then
    4. ' alle sind gleich
    5. MessageBox.Show("Gewonnen, aber richtig!")
    6. End If
    7. End Sub


    EDIT: Ein simpler Tester:

    Visual Basic-Quellcode

    1. Private Sub foo()
    2. Dim erg(3) As Integer
    3. Dim r As New Random
    4. Dim tries As Integer = 1
    5. Do
    6. For i = 0 To erg.Count - 1
    7. erg(i) = r.Next(1, 7) ' nehme von 1 bis 6
    8. Next
    9. If erg.Distinct.Count = 1 Then
    10. Exit Do
    11. End If
    12. tries += 1
    13. Loop
    14. Debug.Print("Gewonnen hat drei mal die {0} nach {1} Versuchen", erg.Distinct.First, tries)
    15. End Sub
    vielen dank für euer antworten... ja and andalso or kenne ich hab aber schon lange nicht mehr programmiert und so entfällt einem ne menge. aber danke das du sie mir wieder ins Gedächtnis gerufen hast.

    ja das mit design und logik habe ich mir auch gedacht das es getrennt sein soll weis aber nicht so richtig wie.

    zum letzten beitrag weis leider nichts damit anzufangen also wie ich das nun auf meine bilder übertragen soll... werde erstmal so versuchen fortzufahren wie bisher allerdings ohne die verschachtelten if abfragen...
    @Ricky: Hab ich 4 Beiträge vorher schonmal geschrieben und wurde 1 Beitrag vorher bestätigt :)

    @dfelbel: das heißt, du brauchst aktuell gar keine Hilfe?


    P.S.: sehe gearade, dass das VB 6.0 ist, und dass du eher am Anfang mit deiner Programmiererfahrung bist. Warum gewöhnst du dir nicht gleich VB.NET an? Im Gegensatz zu VB 6 kostenlos und neuer :)
    Hallo dfelbel,
    die meisten der Antworten beziehen sich auf .Net,
    die Frage bezieht sich aber auf VB6.
    Option Strict und AndAlso gibt es in VB6 nicht.
    Du kannst beim Laden eines Bildes in eine Picturebox
    der Tag-Eigenschaft einen Wert mitgeben, der dem
    Gewinn entspricht. Belegen sieht dann so aus:

    Visual Basic-Quellcode

    1. Set Picture1.Picture = Bild(5)
    2. Picture1.Tag = 7 ' Wert

    Auslesen geht so:

    Visual Basic-Quellcode

    1. Wert = Val(Picture1.Tag)

    Mehrere Bilder auf Gleichheit testen kannst du mit And oder
    z.B. so:

    Visual Basic-Quellcode

    1. Dim i As Long, flgGleich As Boolean
    2. flgGleich = True
    3. For i = 2 To 5
    4. If Picture1.Picture <> Me.Controls("Picture" & i).Picture Then flgGleich = False
    5. Next i
    6. If flgGleich = True Then
    7. Label2.Caption = Val(Label2.Caption) + 1#
    8. ' ...
    9. End If

    Wenn du, wie hier, mehrere Controls mit gleicher Funktion hast, verwendest
    du besser ein Steuerelementefeld. Dann kannst du die Controls über den
    Index ansprechen:
    vbarchiv.net/faq/details.php?id=allg_controls
    Gruss,

    Neptun
    @ neptun vielen dank für deine antwort hat mich schon viel weiter gebracht....



    wieso ich kein .net benutze ist einfach... habe damals 6.0 gelernt und da ich vieles vergessen habe dachte ich mir lerne ich erstmal wieder fahren mit einem alten rad.... denke mal das spielt doch auch nicht so eine rolle denn so eine slot machine sollte sich doch auch problemlos mit 6.0 erstellen lassen...


    mit der grundfunktion bin ich auch schon fast fertig der nächste schritt wäre dann das ganze etwas zu animieren... zb durch eine sich drehende walze wie es auch bei den echten maschinen so ist... allerdings weis ich da noch garnicht wie das funktionieren soll... aber eins nach dem anderen.... vielen dank für die vielen antworten...
    danke für den link


    sorry das ich nochmal nerve aber habe eben auf youtube etwas gesehen youtube.com/watch?v=jOn9v1U1ZK…etJ8orfgg&feature=mh_lolz




    so wie er die bewegung der shapes hat hätte ich das gerne mit meinen bildern. habe schonmal sowas versucht indem ich immer die top eigenschaften der elemente verändere und wenn sie unten angekommen sind sollen sie wieder oben starten. nur mein problem dabei ist wie halte ich diese so an das sie an einer bestimmten stelle (einrasten) ...

    Edit by der_Kurt:
    Bitte keine Doppelposts. Verwendet bitte die Bearbeiten-Funktion

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „der_Kurt“ ()