Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Ich habe den Code jetzt nochmal intensiver kommentiert. Bevor ihr ihn öffnet: Es ist ein Anfängercode, ich habe schon überlegt von vorn anzufangen, aber dazu fehlt mir die Lust! Aus diesem Grunde ist mir klar das vieles unübersichtlich ist und einfacherer gemacht werden könnte. Ich würde mich aber freuen wenn genau solche Optimierungsvorschläge gemacht werden.
Ich habe mir das Buch "C++ für Spieleprogrammierer" gekauft - hiermit erstmal ein Lob an den Autor! Da mich das Kapitel "6 - Zeiger" etwas abgeschreckt hatte, habe ich mich an ein kleines Spiel gesetzt um mein Wissen zu festigen. Leider ist es noch nicht fertig und ich weiß auch nicht ob ich daran weiter arbeiten werde, aber um diese Entscheidung leichter fällen zu können würde ich gern ein bisschen Feedback haben!
Entstanden ist das Programm aus einer kleinen Array-Bearbeitung (aus dem Buch, zugegebener Maßen, habe die Aufgabe aber selbst und ohne Hilfe programmiert).
Ich habe mich dann an eine Planung gesetzt, dabei kam das hier raus:
Nun, das also zur Vorgeschichte. Damit ihr mal einen genauen Einblick ins Spielprinzip bekommt gibts hier schon die fertige Readmedatei (bitte unbedingt lesen):
Sooo. Nun könnt ihr ja schonmal bisschen was dazu sagen! Ich habe das Spiel fast fertig. Was noch fehlt: Alle eigenen Interaktionen, also Einheiten bauen und setzen! Desweiteren erschafft der Gegner nicht automatisch Kämpfer. Das ist nun nicht weiter problematisch...
Jetzt aber zu dem Problem, das mich etwas nervt. Wenn ihr euch die Exe zieht und immer wieder "Runde beenden" drückt, dann fängt der K ja ab Jahr 6 an auf euch zuzugehen. Um das Problem zu erläutern erkläre ich noch wie die "KI" funktioniert:
Die K bewegt sich IMMER auf X oder Y Achse zur B hin. Er wird nie den Abstand erhöhen! Wenn der K auf der gleichen X oder Y Position wie die B ist, so wird die andere Achse erzwungen, damit sich der K nicht entfernt sondern zielstrebig zur B läuft.
Wenn ein W-Feld um ihm herum steht, so wird dies erstmal erkannt und dessen Daten werden zwischengespeichert. Wenn das Feld im Weg des K liegt, so geht der K auf der anderen Achse weiter um den W nicht zu überqueren. Ist das W-Feld in der entgegengesetzten Richtung wird es natürlich ignoriert.
Das Problem ist jetzt, wenn der W eine Ecke bildet, oder wenn er eine Linie bildet (Y Achse) - auf der linken Seite ist das B und auf der rechten Seite ist das K. Wenn nun K und B auf der gleichen Y-Achsenposition sind, so wird sich der K nicht mehr weiterbewegen, (er darf ja nicht ausweichen da das eine Entfernung auf einer der Achsen bedeuten würde) und bleibt an der gleichen Stelle. Ich weiß nicht wie ich das beheben soll... wenn es überhaupt möglich ist... ihr erkennt das Problem bestimmt in der Exe, dort wird auch angezeigt wenn eine Achse erzwungen wird! Ist schwer zu erklären.
Naja falls ich das hinkriegen sollte, wäre das nächste Problem wenn die KI mehrere K's setzen soll usw... aber darüber habe ich mir noch keine Gedanken gemacht.
Schauts euch mal an!
PS: Code ist - sofern erwünscht - natürlich zugänglich!
1. Um irgendwelche Probleme zu lösen brauchen wir den Code.
2. Unübersichtlich, da der 'alte' Bildschirm nicht gelöscht wird.
Um zu löschen: windows.h einbinden und dann unter den zu löschenden Text system ("cls") schreiben. So hab's ich zumindest in meinem Konsolen-Spiel gemacht (Download siehe unten). Aber irgenwie sagen alle 'Proprogger', zu denen ich nicht gehöre, das alles was mit system () zu tun hat nur nachteile hat...
Ich finde die Idee auch klasse. Wäre cool, wenn Du das weiterführen würdest.
Meiner Meinung nach genau der richtige Weg: Aus den "ersten Grundlagen" was machen und nicht gleich an den dicken 1st Person Shooter denken. Saubere Leistung.
no-ip? liegt das Zeug daheim? Soll mans sooft probieren bis du mal on bist?
Ansonsten @threadersteller: man schreibt keinen Programmiercode auf Papier sondern, wenn überhaupt nen Pap oder struktogramm oder ähnliches. Google mal nach programmablaufplan.
@DarkRage: Geh' mal in meinen Thread 'Sammlung von Win32-Konsolenanwendungs-Spielen'. Den Thread hab' ich für alle erstellt, die Konsolen-Games geproggt haben. Der Sinn davon ist eine saubere Auflistung von solchen Spielen. - Ich weiß, meine Ideen sind einfach FANTASTISCH
Der CLS Befehl steht schon ein paar mal drin. Wann und wo der eingesetzt wird habe ich mir aber noch nicht komplett überlegt, denn bei einigen Menüoptionen wäre der ungünstig angesetzt. Aber das ist Feintuning
@Heiko Kalista
Danke für das Lob. Vielleicht guckst du dir ja auch mal den Code an, kann ja sein du hast nen guten Lösungsansatz für mein Problem. Mir soll ja keiner das Programmieren abnehmen aber ich komme nicht dahinter wie das funktionieren sollte!
@Sicaine
No-Ip? Hä? ... bitte hier jetz nich Off Topic...
Warum schreibt man keinen Programmiercode auf Papier? Der Code war fast immer 1:1 so übernehmbar und für mich ist das x-Mal übersichtlicher als so ein Struktogramm. Bei solchen simplen IF Fragen usw. kann man das doch wohl gleich in Code schreiben. Mir hats viel gebracht
@Viso
So ging es mir auch. Langeweile haben, die Lösung finden und dann keinen PC dahaben *g*. Auch dir danke für das Lob.
@All
Ich habe den Code jetzt nochmal intensiver kommentiert. Bevor ihr ihn öffnet: Es ist ein Anfängercode, ich habe schon überlegt von vorn anzufangen, aber dazu fehlt mir die Lust! Aus diesem Grunde ist mir klar das vieles unübersichtlich ist und einfacherer gemacht werden könnte. Ich würde mich aber freuen wenn genau solche Optimierungsvorschläge gemacht werden.