Snake Schlange verkleinern

  • geschlossen
  • C#

  • who93
  • 2915 Aufrufe 13 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Snake Schlange verkleinern

    Hallo
    Ich habe vor ein Snake mithilfe von C# zu programmieren, doch ich habe insgesamt erst ca 10 Stunden im Unterricht C# gelernt. Ein bisschen Vorkenntnis hab ich jedoch in Visual Basic 2008 Express Edition.
    Bis jetzt hab ich folgende Dinge gelöst:
    -Das Spielfeld wurde eingeschränkt
    -Sobald man über die Beschränkung herrausfährt kommt die Schlange am
    anderen Ende wieder herraus
    Doch Probleme hab ich bei der Größe der Schlange
    Bis jetzt ist es Möglich mit den Pfeiltasten das Symbol (in meien Fall ein °) zu steuern, doch wenn ich z.b. die linke Pfeiltaste drücke werden 2 Symbole angezeigt usw.
    Ich möchte das am Anfang die Schlange 5 Zeichen groß ist und wenn ich sie bewege auch 5 Zeichen groß bleibt!
    Hier ist mein bisheriger Code:
    ...
    Ich hoffe jemand kann mir helfen!
    lg
    und vielen dank
    who
    [SIZE="2"]Eine Raubkopierte Version von Windows 1.0 wurde vor ca. 20 Jahren in einem Atomkraftwerk in Tschernobyl verwendet.[/SIZE]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von who93 ()

  • Naja, 5 '°' Zeichen zu schreiben anstatt 1 sollte wohl nicht das Problem sein. ;)
    Du musst dir nur merken wo das Ende der Schlange(*) ist und dann kann man halt in jedem Schritt ans Ende z.B. ein Leerzeichen schreiben.

    (*) Das koennte man z.B. so machen: Man macht eine Queue (z.B. als Liste), die genau so lang ist wie die Schlange selbst, also am Anfang die Laenge 5. Sagen wir mal die Schlange kuckt am Anfang nach rechts, dann schreibt man in die Queue erstmal 5 mal "Rechts" rein.Und in jedem Schritt bewegt man das Ende in die Richtung, die am Ende der Queue ist. Dann laesst man die Queue 1 mal "nachruecken", so dass der vorletzte Eintrag jetzt der letzte ist etc. und der Anfang ist dann leer. Und an den Anfang schreibt man die Richtung, in die der User gedrueckt hat. Somit steht am Ende der Queue immer das, was der User vor 5 Schritten gedrueckt hat und man weiss also immer genau wo das Ende der Schlange ist.
    Wo ist der Discord Server

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Skyte ()

  • who93 schrieb:

    enn ich aber statt gerade aus fahre hinunterfahre sind alle nebeneinander

    Nee, du darfst nur den Kopf neu schreiben, der Rest bleibt so. (Naja und das Ende wird halt "geloescht".)

    Du kennst also immer nur 2 Positionen, Anfang und Ende, der Rest ergibt sich automatisch.

    Edit: Aso und mit den 5 Zeichen schreiben meinte ich einmalig, nur am Anfang.
    Wo ist der Discord Server

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Skyte ()

  • who93 schrieb:

    das wird wahrscheinlich nur mti einer array gehen


    Nein, eine Liste, hab ich doch geschrieben:
    Man macht eine Queue (z.B. als Liste)


    Ein Array ist bloed, weil es eine feste Groesse hat und das ist stoerend, falls du vor hast die Schlange wachsen zu lassen.

    LinkedList(T) Class (System.Collections.Generic)

    Das Nachruecken ist somit ganz einfach: RemoveLast und AddFirst: LinkedList(T) Methods (System.Collections.Generic)
    Wo ist der Discord Server
  • ok danke ich muss mal nachdenken wie ich das jetzt mache
    danke!

    Edit: hm ich kapier das mit der Queue nicht
    wo finde ich eine gute anleitung wie ich sie nutze, den die von msdn kapier ich nicht ^^
    [SIZE="2"]Eine Raubkopierte Version von Windows 1.0 wurde vor ca. 20 Jahren in einem Atomkraftwerk in Tschernobyl verwendet.[/SIZE]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von who93 ()

  • hi, wie geht es aber weiter?

    Quellcode

    1. Queue myQueue = new Queue();
    2. // Queue füllen
    3. for(int i = 0; i < 5; i++)
    4. myQueue.Enqueue(i);
    5. // Ausgabe an der Konsole
    6. PrintStack(myQueue);
    7. Console.ReadLine();
    8. }
    9. public static void PrintStack(Queue obj) {
    10. // alle Elemente aus dem Stack holen
    11. while(obj.Count != 0) {
    12. Console.WriteLine(obj.Dequeue());
    13. }
    14. }
    Alles anzeigen

    jetzt hab 5 Zahlen ausgegeben, doch wie lösche ich wieder eine zahl?
    [SIZE="2"]Eine Raubkopierte Version von Windows 1.0 wurde vor ca. 20 Jahren in einem Atomkraftwerk in Tschernobyl verwendet.[/SIZE]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Broken Sword () aus folgendem Grund: Code-Tag hinzugefügt

  • vielen dank für deine antwort
    doch bei mir kommt jetzt folgender fehler
    Error 1 Using the generic type 'System.Collections.Generic.Queue<T>' requires '1' type arguments

    bei diesem code:

    PHP-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. namespace ConsoleApplication1
    6. {
    7. class Program
    8. {
    9. static void Main(string[] args)
    10. {
    11. Queue myQueue = new Queue();
    12. // Queue füllen
    13. for (int i = 0; i <= 10; i++)
    14. myQueue.Enqueue(i * i);
    15. // Ausgabe an der Konsole
    16. PrintStack(myQueue);
    17. Console.ReadLine();
    18. }
    19. public static void PrintStack(Queue obj)
    20. {
    21. // alle Elemente aus dem Stack holen
    22. while (obj.Count != 0)
    23. {
    24. Console.WriteLine(obj.Dequeue());
    25. }
    26. }
    27. }
    28. }
    Alles anzeigen
    [SIZE="2"]Eine Raubkopierte Version von Windows 1.0 wurde vor ca. 20 Jahren in einem Atomkraftwerk in Tschernobyl verwendet.[/SIZE]
  • who93 schrieb:

    Using the generic type 'System.Collections.Generic.Queue<T>' requires '1' type arguments


    Richtig. Das ist ne generische Queue. ;)
    Da musste, weiss nicht genau wies in C# ist, entweder schreiben:

    Quellcode

    1. Queue<int> myQueue = new Queue<int>();

    oder

    Quellcode

    1. Queue<Integer> myQueue = new Queue<Integer>();


    Oder du nimmst eben die nicht generische Queue, dann muss es oben heissen:

    Quellcode

    1. using System.Collections;
    Wo ist der Discord Server
  • who93 schrieb:

    bis auf das das dies chlange noch keine kurven fahren kann funktioniert alles

    Ja nee, wer braucht schon Kurven bei Snake...

    Was klappt denn nicht?

    Also ich krieg hier unter Linux irgendwie keine generische Klassen zum Laufen, aber nicht generisch funktionierts einwandfrei.

    Edit: Omg, war n bloeder Fehler von mir, Generics gehen auch einwandfrei.

    Und es heisst Queue<int>, also:

    PHP-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. namespace ConsoleApplication1
    6. {
    7. class Program
    8. {
    9. static void Main(string[] args)
    10. {
    11. Queue<int> myQueue = new Queue<int>();
    12. // Queue füllen
    13. for (int i = 0; i <= 10; i++)
    14. myQueue.Enqueue(i * i);
    15. // Ausgabe an der Konsole
    16. PrintStack(myQueue);
    17. Console.ReadLine();
    18. }
    19. public static void PrintStack(Queue<int> obj)
    20. {
    21. // alle Elemente aus dem Stack holen
    22. while (obj.Count != 0)
    23. {
    24. Console.WriteLine(obj.Dequeue());
    25. }
    26. }
    27. }
    28. }
    Alles anzeigen
    Wo ist der Discord Server

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Skyte ()