Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 26

Thema: C-Programmierungs-Problem

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.04.2005
    Beiträge
    14

    C-Programmierungs-Problem

    Hallo,

    Ich will mir ein Programm mit folgender Funktiopn schreiben:

    Es soll das Spiel Solitär sein, wobei man über einen Stein hüpft und dieser dann verschwindet!

    Ich will mit diesem Programm alle Sprünge, d.h. wie ich ziehen muss berechnen, damit am Schluss immer nur ein Stein übrig bleibt.

    Wie kann Ich das realisieren? Kann mir jemand Programmcode geben oder interessant Links geben?
    mfg
    aldialdi

  2. #2
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    Wie soll das Programm jetzt aussehen? Irgendwas grafisches, oder geht es Dir erstmal um die Spiellogik?

    Poste mal einen Auszug aus den Spielregeln, dann kann man Dir einen Tip geben. "Springen" ist recht vage.
    I haven't lost my mind - It's somewhere on a backup-disc

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.04.2005
    Beiträge
    14
    Hallo,
    das Spiel sieht ungefähr so aus:



    Nachzulesen auf: http://home.arcor.de/bernd-sonnborn/Solitaer.htm

    In der Mitte ist immer ein Loch frei.
    Es soll so programmiert werden, das am Anfang nur Kreise sind, und dann immer gesprungen wird und dann immer ei Kreis wegfällt, nämlich der, über den gesprungen wird!
    Ich soll ein Programm programmieren, das die KOmbinationen der Sprünge berechnet, so dass immer nur ein oder zwei Steine über sin!
    Wie kann man das realisieren?ann mir jemand Programmcode geben oder interessant Links geben?
    mfg
    aldialdi

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Naja, am einfachsten ists wohl alles durchzuprobieren und dann die Lösung zu speichern, die muss man ja nur einmal ausrechnen...

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.04.2005
    Beiträge
    14
    ja, und dazu soll, bzw. will ich ja das C-Programm schreiben!
    Wie kann man das realisieren?ann mir jemand Programmcode geben oder interessant Links geben?
    mfg
    aldialdi

  6. #6
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    ok, ich würde folgende Datenstrukturen benutzen:
    - Einen Zähler für die Spielsteine. Er fängt bei [Anzahl Steine] an zu zählen und wenn ein Stein entfernt wird, wird auch der Zähler dekrementiert.
    - Ein mehrdimensionales Array mit booleans (besetzt/nicht besetzt) für die Spielfelder. Da es in C kein bool gibt, kannst Du short nehmen, 1 ist besetztes Feld, 0 ist leeres Feld.

    Dann brauchst Du Funktionen für:
    - Eine Spielstein-Aufstellungsfunktion. Sie allociert Speicher für das Spielfeld und intialisiert die Feldelemente, setzt also die Steine auf das Spielbrett.
    - Einen Spielzug, also den Sprung. Ein Stein springt über seinen benachbarten, wenn das Zielfeld frei ist und setzt das übersprungene Feld auf 0. Außerdem muss auch der Steinzähler dekrementiert werden.
    Ob die Steinkoordinaten automatisch oder manuell übergeben/ermittelt werden müssen, hast Du noch nicht gesagt, sollte aber recht unkompliziert zu lösen sein.
    - ggf brauchst Du Hilfsfunktionen für Analyseschritte o.ä, aber das wirst Du dann noch sehen.

    In der main() rufst Du dann in einer Schleife den Spielzug auf, bis die Steine weg sind (Zähler auf 1) oder kein Zug mehr gemacht werden kann (kein Stein hat einen Nachbarn).

    Das sollten genug Tips sein um dem Programm das Laufen beizubringen
    I haven't lost my mind - It's somewhere on a backup-disc

  7. #7
    Registrierter Benutzer
    Registriert seit
    14.04.2005
    Beiträge
    14
    Hallo,
    hättest Du dafür noch den passenden Code?

    Nein, im Ernst, kannst Du mir mal einen Code geben?

    ICh habe momentan leider gar keine Ahnung, wie Ich das realisieren kann!

  8. #8
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Übrigens ein Tipp: Wenn du die "optimale Lösung" finden willst, also dass nur ein Stein in der Mitte übrigbleibt, empfiehlt es sich, rückwärts zu lösen, d.h. mit diesem einen Stein anzufangen und dann über ein leeres Feld springen und dort dann einen Stein hinlegen, solange, bis du bei der Anfangsstellung ankommst.

    Siehe auch http://de.wikipedia.org/wiki/Backtracking

    Dein Bild könntest du so realisieren:
    Code:
    int Spielfeld[9][9] = {
      {-1,-1,-1, 1, 1, 1,-1,-1,-1},
      {-1,-1,-1, 1, 1, 1,-1,-1,-1},
      {-1,-1,-1, 1, 1, 1,-1,-1,-1},
      { 1, 1, 1, 1, 1, 1, 1, 1, 1},
      { 1, 1, 1, 1, 0, 1, 1, 1, 1},
      { 1, 1, 1, 1, 1, 1, 1, 1, 1},
      {-1,-1,-1, 1, 1, 1,-1,-1,-1},
      {-1,-1,-1, 1, 1, 1,-1,-1,-1},
      {-1,-1,-1, 1, 1, 1,-1,-1,-1}
    };
    Hierbei steht 1 für ein besetztes, 0 für ein freies und -1 für ein ungültiges Feld.
    Geändert von Joghurt (15-04-2005 um 16:28 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    14.04.2005
    Beiträge
    14
    Hallo,
    aber wie genau kann ich die Kreise erzeugen und die x?

    Mit dem Code kann ich leider nichts anfangen!
    Wenn mir jemand den Komplettcode für das Spielfeld geben könnte, dann würde ich ja weiterwissen, aber so, keine Chance, leider!

    Vielleicht kann ja jemand so nett sein!
    Bitte Bitte
    mfg
    aldialdi

  10. #10
    Registrierter Benutzer
    Registriert seit
    05.09.2002
    Ort
    Neuhausen
    Beiträge
    320
    Sollen wir zusammen mit dem Komplettcode auch gleich verschieden Skins für die Figuren mitliefern? Wenn ja auch solche in 3D?

    Gruss, Andy

  11. #11
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von aldialdi
    Ich soll ein Programm programmieren, das die KOmbinationen der Sprünge berechnet, so dass immer nur ein oder zwei Steine über sin!
    Da steht nichts darüber, dass du das Spielfeld auch graphisch darstellen willst!

  12. #12
    Registrierter Benutzer
    Registriert seit
    14.04.2005
    Beiträge
    14
    Zitat Zitat von RapidMax
    Sollen wir zusammen mit dem Komplettcode auch gleich verschieden Skins für die Figuren mitliefern? Wenn ja auch solche in 3D?

    Gruss, Andy

    Wäre nicht schlecht!:P

  13. #13
    Registrierter Benutzer
    Registriert seit
    14.04.2005
    Beiträge
    14
    Zitat Zitat von Joghurt
    Da steht nichts darüber, dass du das Spielfeld auch graphisch darstellen willst!
    Naja, wenn da noch kreise wären, wäre es gut, aber mir reicht erst mal der Code zur Errechnung der Lösungen des Springens!
    mfg
    aldialdi

  14. #14
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    eben, Du solltest erstmal mit der Spiellogik anfangen. Was Du dann für eine Oberfläche draufbastelst, das ist nachher egal.
    Außerdem: Wenn Du nicht programmieren kannst, dann ist es völlig witzlos direkt mit irgendeinem Grafikzeugs anzufangen, weil das weitere Techniken, mehr Wissen und mehr Erfahrung benötigt: Fenster, Events, Zeichnen, Doublebuffer, vielleicht Threads und dann brauchst Du noch Kenntnis in der Klassenhierarchie des Grafiktoolkits das Du verwendest (Du hast nichtmal gesagt welche Bibliothek Du dafür verwenden willst: wxWindows, GTK, QT, Java AWT/Swing, <Scriptsprache> TK, MFC, Win32 API, .net-Zeugs, ...)
    I haven't lost my mind - It's somewhere on a backup-disc

  15. #15
    Registrierter Benutzer
    Registriert seit
    14.04.2005
    Beiträge
    14
    Ich kann schon programmieren, das ist nicht das Problem, ich bräuchte nur den Code zur Errechnung der richtigen Lösungen, das grafische kann ich mir selbst basteln!
    mfg
    aldialdi

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •