Brauche hilfe mit Progressbar

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Don_Batisto.

    Brauche hilfe mit Progressbar

    Hallo liebe com.,

    Und zwar habe ich folgendes Problem mit meiner Progressbar, und zwar möchte ich einen fortschrittsbalken in meinem spiel einbauen indem angezeigt wie viel forschritt mann hatte.
    Nur kommt dann immer eine kommazahl raus und ich kann keine kommazahl als value setzten. deshalb ist mein frage wie ich es lösen kann.
    Hinweis: Das Level entspricht den Punkten geteilt durch 600
    Mein aktuellen Punkte die auf dem Server liegen: 950 Level: 1

    Mein Code:

    VB.NET-Quellcode

    1. Try
    2. Dim P As Decimal = Punkte
    3. Dim a As String = CDec(P / 600)
    4. akt_level.Text = Level
    5. If Level = "100" Then
    6. next_level.Text = "100"
    7. Else
    8. next_level.Text = Level + 1
    9. End If
    10. MetroProgressbar1.Maximum = next_level.Text
    11. MetroProgressbar1.Value = a
    12. Catch ex As Exception
    13. End Try
    @Max_Engl
    Du kannst die Zahl, die herauskommt runden.
    Kurzes Beispiel:

    VB.NET-Quellcode

    1. Dim fortschritt As Integer = CInt(Math.Round(DeineZahl))
    2. ProgressBar1.Value = fortschritt

    Gruß
    Switcherlapp97
    RubiksCubeSolver


    Jetzt im Showroom
    Verwende statt "/" "\", damit führst du eine Ganzzahlteilung durch.

    Und wenn ich sowas
    MetroProgressbar1.Maximum = next_level.Text
    oder auch sowas
    Level = "100"
    sehe, dann läuft es mir kalt den Rücken runter.
    Bitte schalte Option Strict On.
    Danke schonmal für die antwort.

    Aber das Problem ist wenn wie bei meinen Punkten (950 mit level:1) das Level 1,583333 rauskommt und man rundet es dann auf 2 ist die Value also 2, dort wird die Progressbar mit dem ziel 2 erreicht und ergibt 100% obwohl der fortschritt erst 75% ist

    Max_Engl schrieb:

    wie bei meinen Punkten (950 mit level:1) das Level 1,583333 rauskommt
    Wenn Du mit Integerdivision nicht klarkommst:

    VB.NET-Quellcode

    1. Dim c = 12345 / 10
    2. Dim d = 12345 \ 10
    3. MessageBox.Show(c.ToString & Environment.NewLine & d.ToString)
    poste mal ein paar Punkte und die entsprechenden Anzeigewerte, wie sie sein sollen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Oder setzte andere Werte für ProgressBar1.Minimum und ProgressBar1.Maximum, so dass deine Abstufung zuwischen zwei Werten kleiner ist. Dann kannst du auch genauere Werte anzeigen lassen :)
    wincrash
    (\_/) Das ist Hase.
    (O.o) Kopiere Hase in deine Signatur
    (> <) und hilf ihm so auf seinem Weg zur Weltherrschaft.

    Max_Engl schrieb:

    VB.NET-Quellcode

    1. Dim a As String = CDec(P / 600)
    Fang bitte an mit Option Strict On, denn aus Äpfeln und Glühbirnen kann man keinen Obstsalat machen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Falls du dich im Bereich von so kleinen Werten (1 und 2) wiederfindest dann multipliziere einfach diesen Wert mit zB 1000.
    Den Max-Value musst du natürlich auf mit 1000 multiplizieren.

    Somit hätte deine Progressbar bar dann MaxValue 2000 und der Wert davon wäre 1583.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Bereits in der Grundschule - oder sonst 5, / 6, Klasse - sollte man beigebracht bekommen haben, wie man mit KommaZahlen rechnet.

    Wenn man nun folgendes berechnen möchte, geht man so vor:

    12,34 * 13 = ??

    >> Verschieben des Kommas auf beiden Stellen bis kein Komma mehr da ist:
    1234 * 1300 = 1604200

    >> Einfügen des verschobenen Kommas
    Oben haben wir das Komma jeweils 2mal verschoben. Dh. nun zählen wir von hinten 4 Stellen ab
    1604200 <=> 160,4200

    >> Weglassen der letzten Nullen
    160,4200 <=> 160,42

    ~~~~~~~~~~~~~~

    Und somit kommen wir auf das Ergebnis
    12,34 * 13 = 160,42


    ==================================

    Das oben von mir erklärte Vorgehen solltest du auf deine Denkweise anwenden.
    So hast du es dann relativ einfach im Nachhinein auf die Komma-Beträge zu kommen.
    Denn wenn du zB. runden würdest, wäre diese "Rückblick" nicht möglich!