VB.net Zufallsgenerator

real-insanity

Erfahrenes Mitglied
Nabend liebe Community,

ich hab wieder ein Problem :D
Also fürn Freund programmiere ich gerade einen Zahlen und Formengenerator. Jedoch funktioniert dieser nicht ganz so wie ich will. Die Vorraussetzung ist: es darf sich keine gegenüber liegende Form nach einander wuederholen. Sprich kommt diese Form => darf direkt danach nicht <= kommen oder auch mit oben und unten.

Hier die Logik des Programms:
Code:
If (LetzteRichtung = 1) And (zahlForm = 3) Then
            Do Until zahlForm <> 3
                zahlForm = R.Next(1, 4)
            Loop
        ElseIf (LetzteRichtung = 3) And (zahlForm = 1) Then
            Do Until zahlForm <> 1
                zahlForm = R.Next(1, 4)
            Loop
        ElseIf (LetzteRichtung = 2) And (zahlForm = 4) Then
            Do Until zahlForm <> 4
                zahlForm = R.Next(1, 4)
            Loop
        ElseIf (LetzteRichtung = 4) And (zahlForm = 2) Then
            Do Until zahlForm <> 2
                zahlForm = R.Next(1, 4)
            Loop
        End If

Die Zahlen in den IF entsprechen den Bildern. Die ich als Anlage beigefügt habe.
 

Anhänge

  • Images.zip
    148,2 KB · Aufrufe: 26

Spyke

Premium-User
Mach es eher so Geradezahlen (2 und 4) sind für oben und unten
Ungerade Zahlen (1 und 3) für Links und rechts dann prüfst du einfach in einer Schleife über Modulo

Code:
Do Until (letzteZahl Mod 0) <> (zahlForm Mod 0)
                zahlForm = R.Next(1, 4)
            Loop

habs versucht oben in VB nachzubilden, leider ist mein VB nicht so jut aber vielleicht hilft dir der C# ausschnitt
Code:
 double letzteZahl = 2;
double neueZahl;
Random rnd = new Random();
do
{
     neueZahl = rnd.Next(1, 5);
} while ((neueZahl % 2) == (letzteZahl % 2));
die Schleife soll solange laufen wie der Rest der Divisionen durch 2 von neueZahl und letzteZahl gleich ist.

So wie es jetzt ist darf aber öfter hintereinander das gleiche Objekt, falls dies nicht sein soll einfach die bedingung erweitern mit
((neueZahl % 2) == (letzteZahl % 2) || neueZahl==letzteZahl)