Zahlenratespiel

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Zahlenratespiel

    Hallo,

    bin Anfänger, und lerne gerade mit verschiedenen Tutorials, meine Frage ist, der untenstehende Code funktioniert aber wie funktioniert die Zeile Zufallszahl = Rnd() * 100 +1 also Randomze erstellt eine Zahl zwischen 1 und 0 die dann mit 100 malgenommen wird aber warum plus 1 und es müsste doch eine Zahl mit Nachkomme sein, aber es funktioniert das Spiel.

    Mann könnte noch Int verwenden habe ich gelesen aber warum funktioniert es weil oben die Zufallszahl als Integer ist oder warum kommt da eine Ganzzahl raus und warum + 1
    das verstehe ich nicht.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim zufallszahl As Integer
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Randomize()
    5. zufallszahl = Rnd() * 100 + 1
    6. End Sub
    7. Private Sub cmdPrüfen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrüfen.Click
    8. Dim eingabe As Integer
    9. eingabe = txtEingabe.Text
    10. lblAnzeige.Text = ""
    11. If eingabe = zufallszahl Then
    12. lblAnzeige.Text = "Die Zufallszahl ist " & zufallszahl
    13. Else
    14. If eingabe < zufallszahl Then
    15. lblAnzeige.Text = "Die Zahl " & eingabe & " ist zu klein"
    16. Else
    17. lblAnzeige.Text = "Die Zahl " & eingabe & " ist zu groß"
    18. End If
    19. End If
    20. End Sub
    21. End Class




    Vielen Dank im voraus

    elo63

    Edit by der_Kurt:
    * VB-Tags eingefügt *

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

    Ist leicht veraltet der Code.
    Um eine Zufallszahl zu bekommen, solltest du unter Public Class Form1 schreiben:

    VB.NET-Quellcode

    1. Dim rn as new Random
    2. Dim zufallszahl as Integer

    Damit hast du einen Zufallszahlengenerator und eine Integervariable, die später die Zufallszahl erhalten soll.

    Mit

    VB.NET-Quellcode

    1. zufallszahl = rn.next(0, 5)

    erhält zufallszahl einen Wert vzwischen 0 und 4. Warum die Obergrenze um 1 höher sein muss, kann ich dir net sagen. Leb damit.^^

    MSDN schrieb:

    Die Rnd-Funktion gibt einen Wert zurück, der kleiner als 1, aber größer oder gleich 0 ist.

    @elo63: in deinem Beispiel würde ohne die Addition von 1 niemals die Zahl 100 gezogen. Die Random-Klasse arbeitet nach dem selben Prinzip, deshalb ist auch hier +1 notwendig.
    Hallo,

    achso wegen der 100 OK und was ist mit den Nachkommastellen weil es ja eigentlich eine Zahl zwischen
    0 und 1 ist.

    Was ist mit Visual Basic Tags gemeint die kenne ich nur von HTML.

    Vielen Dank

    elo63
    Hallo,

    vielen Dank für die Antworten.

    also mit Deklaration habe ich ,mich schon beschäftigt, aber ich weiss nicht was passiert wenn ich eine Zahl mit Nachkommastellen habe
    und die dann einfach als Integer deklariere, Rundet die dann die Nachkommastellen auf und ab, oder schneidet die eindach die Nachkommastellen weg
    z.B 4.45 wird dann einfach 4 und 4.93 wird auch 4 ist es so.

    mfg

    elo
    Wenn Du ordentlicherweise mit Option Strict On arbeitest, bekommst Du einen Fehler:
    "Option Strict On" lässt keine impliziten Konvertierungen von Double in Integer zu.

    Ansonsten wird sauber gerundet, besser ist es natürlich, wenn Du das Runden steuerst:

    VB.NET-Quellcode

    1. Dim i As Integer = CInt(1.23 / 4.56)
    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!