Würfel automat für Tabletop

  • C#
  • .NET 5–6

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Würfel automat für Tabletop

    Hallo Leute,

    ich habe mich extra für mein Problem Registriert und bin sonst in Foren eher weniger Aktiv, daher entschuldigt bitte, falls ich gegen kleinere gepflogenheiten verstoße

    Ich heiße Gabriel bin 34 Jahre Jung und mache zurzeit eine Ausbildung zum Fachinformatiker.


    Unser Dozent hat uns die Aufgabe gegeben ein eigenes Programm zu erstellen, welches wir dann zweckgebunden auch präsentieren. Also in einer alltäglichen anwendung verwendung findet.
    Was eignet sich hierfür nicht besser als ein Würfelspiel?!

    Leider habe ich hierzu bzw. zu meinem Fehler keine wirkliche Hilfe gefunden. Gegebenenfalls weiß ich auch einfach nicht wonach ich suchen muss.
    Im Grunde geht es bei meinem Würfelspiel darum, aus einer Zufälligen Zahl heraus (12 Seiten) eine Seite zu "erwürfeln" durch zusatzangaben wie Maximal würfeln etz. soll dies Begrenzt werden. Das alles funktioniert schon.
    Jedoch bekomme bei der Ausgabe nur 0 Statt der "gewürfelten" Zahl heraus.

    Anbei mal der Code. GGf. wisst ihr ja woran es liegt?!


    Freundliche Grüße euer Gabriel

    C#-Quellcode

    1. {
    2. Random Rrandom = new Random(); //Random number generation
    3. string dreport;
    4. int dDice = 0; //determs the Eyes of each dice
    5. int dSum = 0; //Sum of the eyes
    6. int dTry = 0; //Shows how often you tried
    7. int dMax = 0; //You can choose a number how often you can roll the dice
    8. if (txtMax.Text == "")
    9. {
    10. MessageBox.Show("How often would you like to roll max ?");
    11. }
    12. else
    13. {
    14. dMax = Convert.ToInt32(txtMax.Text);
    15. txtDice.ResetText();
    16. do
    17. {
    18. dMax = Rrandom.Next(1, 13); //random Eyes between 1 and 12)
    19. txtDice.Text = txtDice.Text +""+ dDice.ToString();
    20. dSum = dSum + dDice;
    21. dTry += 1;
    22. } while (dDice != 12 && dTry < dMax);
    23. txtSum.Text = dSum.ToString();
    24. txtTry.Text = dTry.ToString();
    25. switch (dTry)
    26. {
    27. case 1:
    28. dreport = "Not worthy 1";
    29. break;
    30. case 2:
    31. dreport = "Dragon Slayer 2";
    32. break;
    33. case 3:
    34. dreport = "Impressive 3";
    35. break;
    36. case 4:
    37. dreport = "4";
    38. break;
    39. case 5:
    40. dreport = "5";
    41. break;
    42. case 6:
    43. dreport = "6";
    44. break;
    45. case 7:
    46. dreport = "7";
    47. break;
    48. case 8:
    49. dreport = "8";
    50. break;
    51. case 9:
    52. dreport = "9";
    53. break;
    54. case 10:
    55. dreport = "10";
    56. break;
    57. case 11:
    58. dreport = "11";
    59. break;
    60. case 12:
    61. dreport = "YES! 12";
    62. break;
    63. default:
    64. dreport = "well, may god be with you";
    65. break;
    66. }
    67. MessageBox.Show(dreport, "dice !", MessageBoxButtons.OK, MessageBoxIcon.Information);
    68. }
    69. }
    70. }
    71. }


    CodeTags korrigiert; bitte zukünftig darauf achten, das richtige CodeHighlighting zu verwenden ~VaporiZed

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

    @Triton Willkommen im Forum. :thumbup:
    Zunächst packst Du die Zeile

    C#-Quellcode

    1. Random Rrandom = new Random(); //Random number generation
    aus der Prozedur in die Klasse, denn es kann nur einen geben.
    Dann befasst Du Dich mit Debugging:
    Debuggen, Fehler finden und beseitigen
    und überzeugst Dich, dass Dein Programm genau das tut, was es tuen soll.
    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!
    Willkommen im Forum.

    Wenn man ne 12 würfeln kann, hat man entweder 2 normale 6er-Würfel oder einen speziellen 12-seitigen. Wenn man aber 2 6er Würfel hat, kann man keine 1 würfeln. Wie kommt dann aber auch der switch-default-zusammen. Der kann nie erreicht werden. Da gehört dann eigentlich ein Exception-Throwing rein, aber das ist ein Detail.
    Was kommt vor Zeile#1? Ist das ne Methode? Bitte immer vollständig den eigenen Methodencode hier zeigen.
    Was passiert, wenn jemand in die txtMax das Wort unendlich schreibt und Deine gezeigte Methode ausführt?
    Deine do-Schleife macht und macht und macht. Aber die Ergebnisse werden nicht für jeden Durchgang, sondern erst dann ausgewertet, wenn die Schleife durch ist. ?(
    Schau mal bitte, was Du in Zeile#26 bei dem switch auswertest, dann dürfte klar werden, wo der Wolf verbuddelt liegt.
    Ich frag mich, wie diese Methode entstanden ist. Da passiert sooo viel auf einmal. Wie kann man sich da erst nach soviel Code wundern, dass es nicht klappt? Ah, ich seh grad, dass Du gar nicht nur hier mit dem Thema unterwegs bist, sondern auch auf vbforums
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.