Dim gemischtekarte As Short
Public Function kartenmischen()
Dim r As New Random()
gemischtekarte = r.Next(1, 37)
End Function
Dim karte1 As Short
Dim karte1b As Boolean = 0
Dim karte2 As Short
Dim karte2b As Boolean = 0
Dim karte3 As Short
Dim karte3b As Boolean = 0
Dim karte4 As Short
Dim karte4b As Boolean = 0
Dim karte5 As Short
Dim karte5b As Boolean = 0
Dim karte6 As Short
Dim karte6b As Boolean = 0
Dim karte7 As Short
Dim karte7b As Boolean = 0
Dim karte8 As Short
Dim karte8b As Boolean = 0
Dim karte9 As Short
Dim karte9b As Boolean = 0
Dim karte10 As Short
Dim karte10b As Boolean = 0
Dim karte11 As Short
Dim karte11b As Boolean = 0
Dim karte12 As Short
Dim karte12b As Boolean = 0
Dim karte13 As Short
Dim karte13b As Boolean = 0
Dim karte14 As Short
Dim karte14b As Boolean = 0
Dim karte15 As Short
Dim karte15b As Boolean = 0
Dim karte16 As Short
Dim karte16b As Boolean = 0
Dim karte17 As Short
Dim karte17b As Boolean = 0
Dim karte18 As Short
Dim karte18b As Boolean = 0
Dim karte19 As Short
Dim karte19b As Boolean = 0
Dim karte20 As Short
Dim karte20b As Boolean = 0
Dim karte21 As Short
Dim karte21b As Boolean = 0
Dim karte22 As Short
Dim karte22b As Boolean = 0
Dim karte23 As Short
Dim karte23b As Boolean = 0
Dim karte24 As Short
Dim karte24b As Boolean = 0
Dim karte25 As Short
Dim karte25b As Boolean = 0
Dim karte26 As Short
Dim karte26b As Boolean = 0
Dim karte27 As Short
Dim karte27b As Boolean = 0
Dim karte28 As Short
Dim karte28b As Boolean = 0
Dim karte29 As Short
Dim karte29b As Boolean = 0
Dim karte30 As Short
Dim karte30b As Boolean = 0
Dim karte31 As Short
Dim karte31b As Boolean = 0
Dim karte32 As Short
Dim karte32b As Boolean = 0
Private Sub stapelmischen() Handles bspielstarten.Click
If karte1b = 0 Then
kartenmischen()
karte1 = gemischtekarte
karte1b = 1
End If
If karte2b = 0 Then
kartenmischen()
If gemischtekarte karte1 Then
karte2 = gemischtekarte
karte2b = 1
Else : kartenmischen()
End If
End If
tbchat.Text = karte1
tbchateingabe.Text = karte2
End Sub
Wie ihr seht soll einer Variable ein Zufallswert zugewiesen werden der ungleich den anderen Variablen ist. Wenn ich das aber durchlaufen lasse liefert mir die Vatiable karte2 immer den Wert 0.
Kann mir wer helfen. Bin absolouter Neuling.
-Flaiker
Dim gemischtekarte As Short
Public Function kartenmischen()
Dim r As New Random()
gemischtekarte = r.Next(1, 37)
End Function
Hallo,
in der Funktion Kartenmischen wird jedes mal ein neuer Zufallszahlengenerator erzeugt. Manche Zufallszahlengeneratoren beginnen jedesmal mit der gleichen Zahl, oder beziehen ihren „Zufall“ aus der Uhrzeit. Falls zwischen den beiden Aufrufen nicht genug Zeit vergangen ist, kommt das gleiche heraus.
Also: mit r als globaler Variablen sollte es gehen.
Noch ein Tipp: Die Spielkarten lassen sich am besten in einem Array speichern
also ich hab den Code mal getestet. Wenn man auf den Button Klickt und dann das Preborium aufruft, so klappt alles. Die 2 Karten bekommen verschiedene Werte!
Aber mal ehrlich, das was du hier fabrizierst ist nicht gerade sonderlich schön
Erst einmal sprengst du mit den ganzen Declarationen den Rahmen. Dann kommen immer die selben Werte raus.Random ist nicht gleich zufaellig, sondern die Zahlen werden nach einem gewissen Schema erzeugt!
Auch mischst du in deinem Code nur 2 Karten! Wozu dann die ganzen Declarationen? Warum packst du die Karten nicht in ein Array?
Dann hast du eine Variable als Boolean erstellst, weisst ihr aber Werte zu alla 0 und 1. Besser waere True und False zu nutzen wenn es schon vom Typ Boolean sein sollte
Sicherlich führen viele Wege nach Rom. Welchen du nimmst das liegt an Dir
Aber anbei mal ein kurzes Demo, wie du die 32 Karten mischen kannst
Public Class Form1
Dim Karte(31, 1) As Integer
Private Sub bspielstarten\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bspielstarten.Click
Mische()
End Sub
Public Sub Mische()
Dim r As New Random(Now.Millisecond)
For I As Integer = 0 To 31
Karte(I, 0) = -1
Karte(I, 1) = 0
Next
For I = 0 To 31
Dim vRet As Integer
vRet = r.Next(0, 31)
While Karte(vRet, 0) \> -1
vRet = (vRet + 7) Mod 32
End While
Karte(vRet, 0) = I
Karte(vRet, 1) = 1
Next
End Sub
End Class
Also,
danke ersma für die Antworten. Warum ich das in kein Array packe? Weil ich leider nicht weiß wie ich das anstelle (ja ich = no0b). Warum ich nur 2 Karten mische? Weil ich bevor ich für alle Karten einen endlos langen code eingebe ersma testen wollte ob es funktioniert.
Werde jetzt mal versuchen eure Antworten umzusetzen.
wieso einen riesigen Source?
Das was ich dir gepostet habe, mischt alle Karten und solang ist der Source net
Was ich aber net verstehe. Wozu brauchst du die 0 oder 1 für jede Karte? Je nach vorhaben würde es sich sogar anbieten dafür eine Klasse zu basteln