Forum

> > Off Topic > Pommes Games
Forums overviewOff Topic overviewLog in to reply

German Pommes Games

261 replies
Page
To the start Previous 1 28 9 1013 14 Next To the start

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Hast du Leerzeivehn eingegeben?? Da stimmt irgendwas nicht, ich weiß aber nicht wieso. Wenn man nämlilch Leerzeilen eigibt passiert das gleiche, wie wenn man anstatt ne Zahl beim Auswaehlen nen Buchstaben eingibt . Weiß einer von euch, warum das so ist??

Uebrigens: Ich versuche gerade ne KI zu entwickeln. Hat jmd. Ideen, wie man das am besten Verwirklichen kann??

old Re: Pommes Games

stealth
User Off Offline

Quote
Pommes die Fritte has written
Hast du Leerzeivehn eingegeben?? Da stimmt irgendwas nicht, ich weiß aber nicht wieso. Wenn man nämlilch Leerzeilen eigibt passiert das gleiche, wie wenn man anstatt ne Zahl beim Auswaehlen nen Buchstaben eingibt . Weiß einer von euch, warum das so ist??

Also wenn man bei der Zahlenauswahl Buchstaben schreibt passiert das.
Das Problem ist wohl dass dann ein String in choice geschrieben wird obwohl das auf int ist...
Vllt machst du int choise zu string choise

Pommes die Fritte has written
Uebrigens: Ich versuche gerade ne KI zu entwickeln. Hat jmd. Ideen, wie man das am besten Verwirklichen kann??

Einfach irgendne Waffe auswählen lassen
Ausser wenn die Bots nicht genug KP haben

old Re: Pommes Games

HW
User Off Offline

Quote
stealth has written
Also wenn man bei der Zahlenauswahl Buchstaben schreibt passiert das.
Das Problem ist wohl dass dann ein String in choice geschrieben wird obwohl das auf int ist...
Vllt machst du int choise zu string choise

Afaik schreibt cin gar nichts, wenn der Typ nicht passt. Die Zahl, die vorher drin stand, bleibt auch weiterhin bestehen. Daher wird das vorhin gesagte auch wiederholt. Wieso es zur Endlosschleife kommt, konnte ich bisher aber nicht rausfinden. Normalerweise müsste der Programmablauf bei cin stehenbleiben und auf Usereingabe warten.

Pommes has written
Uebrigens: Ich versuche gerade ne KI zu entwickeln. Hat jmd. Ideen, wie man das am besten Verwirklichen kann??

Bisher würde ich mich stealths Vorschlag anschließen. Einfach per Zufall irgendeine Waffe auswählen.
Wenn du mehr Waffen hast, die man auch ausgeklügelter einsetzen kann, kannst du ja versuchen, eine anspruchsvollere KI zu entwickeln. Bei einem rundenbasierten Spiel sollte das auch nicht allzu schwer sein.


Ich würde dir zunächst aber mal raten, deinen Programmierstil grundsätzlich zu überarbeiten. Mir sind da mehr Punkte aufgefallen als ich hier auflisten könnte, aber hier mal die wichtigsten/die, an die ich mich noch erinnere:
• Falsches Verständnis von Modulen und Headern:
In Header gehört kein echter Programmcode, nur Deklarationen von Funktionen, Klassen, Enums, Makros etc. (war bei Pet so, beim Kampfsim verwendest du keine richtigen Header) und Module (*.c bzw. *.cpp Dateien) werden nicht included, denn sonst wären sie Header. Die Funktionen und Klassen in einem Modul, die andere Module verwenden können, deklarierst du in einem Header und die einzelnen Module kompilierst du letztendlich separat.
Informier dich besser mal woanders über den Grund warum es Module und Header überhaupt gibt, sonst würde mein Post zu groß. Wenn du die Problematik dahinter verstehst, wirst du das Zeug wohl auch so einsetzen wie es eingesetzt werden soll.
• Sprachmischmasch im Programmcode:
Ist nicht so schlimm wie das davor, zeugt aber trotzdem von schlechtem Stil und von Mangel am Erfahrung. Am besten, du schreibst den gesamten Code auf Englisch, das macht die Sache einheitlicher. Strings für den Output musst du nicht in derselben Sprache wie den Code verfassen (was aber dennoch der Idealfall wäre), sie sollten aber untereinander einheitlich sein. Am elegantesten wäre wohl ein Header, in dem du sämtliche Texte mit Makros definierst und diese Makros dann im Code verwendest. Auf die Weise müsste man zum Übersetzen nicht blöd im Code rumwühlen (bei großen Projekten [die für sowas aber ohnehin meist gettext verwenden] wäre das wirklich eine Folter) und die Strings würden nicht direkt im Code auftauchen, es wäre aber dennoch ersichtlich, was für eine Meldung jeweils ausgegeben wird (vorrausgesetzt, die Makronamen sind geschickt gewählt).
Kommentare verfasst man übrigens auch grundsätzlich auf Englisch.
Auch die Dateinamen der Module sollten durchgängig klein geschrieben und auf Englisch sein.
• Massig Tippfehler in Texten:
Spricht für sich. Falls du bisher nicht gelernt hast, professionell an einer Maschine/Tastatur zu schreiben, dann tu es am besten jetzt.
Außerdem kannst du in Strings (in Strings, nicht im Code) getrost Sonderzeichen einsetzen, solange es keine wirklich sonderbaren Sonderzeichen (soll heißen Unicode-Zeichen; die sind zwar unter Linux möglich, aber nicht unter Windows) sind.
edited 1×, last 17.05.07 06:27:19 pm

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Also ich hatte die Idee, dass ich zuerst verschiedene Gegnertypen mache, die verschiedene Waffen haben. z.B. hat einer das Schnellfeuergewehr und den Blaster. Dann könnte ich das so machen, dass er, wenn er für die eine nicht genug KP hat die andere wählt. Hat er aber so viele KP, dass er in der nächsten Runde (nachdem die KP ja wieder erhöt wurden) dann genug KP hätte, um die stärkere Waffe zu benutzen, dann wählt er in dieser Runde keine Waffe aus => in der nächsten Runde kann er die stärkere auswählen. Habt ihr verstanden, was ich mein?




EDIT zum oberen Post:
alles klar, bloß auf dass, wie ich ich das mit den Modulen und Header mach (darauf hat mich mein Bruder auch schon hingewießen). also steht in einer Header alle Funktionsdeklarationen (z.B. player1Pistole(); ). Aber wie kann ich die dann im Hauptprogramm aufrufen??

zu den Tippfehlern: Ich hab seit anfang dieses Schuhljares Maschienenschreibunterricht . Aber ich hab in meinen Outputs bis jetzt gar keine Fehler gefunden (außer 1/2 Stück).
Das mit den sonderzeichen weiß ich, aber da ich das Teil ja auch für Windows mache hab ich keine Lust, alle sonderzeichen unterm Windows auszubessern.
Zum Sprachmischmasch: Werde ich beachten .
edited 1×, last 17.05.07 06:58:08 pm

old Re: Pommes Games

bizzl
User Off Offline

Quote
Pommes die Fritte has written
alles klar, bloß auf dass, wie ich ich das mit den Modulen und Header mach (darauf hat mich mein Bruder auch schon hingewießen). also steht in einer Header alle Funktionsdeklarationen (z.B. player1Pistole(); ). Aber wie kann ich die dann im Hauptprogramm aufrufen??

Wie wäre es wenn du die Header-Datei mit #include einbindest?
Dann müsste es gehen.

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
@ bizzl: das hab ich ja gemacht, aber die Datei is ja eigentlich gar keine Header. Kannst des dir ja mal auf deiner Seite angucken.

old Re: Pommes Games

bizzl
User Off Offline

Quote
Pommes die Fritte has written
@ bizzl: das hab ich ja gemacht, aber die Datei is ja eigentlich gar keine Header. Kannst des dir ja mal auf deiner Seite angucken.


Die Funktions- und Klassendeklarationen kommen in den Header, zbsp Weapons.hpp , und die Implementations in eine Datei mit gleichem Namenspräfix, also Weapons.cpp
Eingebunden wird dann die Headerdatei, nicht die Implementationsdatei.
Ich gebe zu das ist bescheuert, aber C/C++ ist nunmal so (ist übrigens die einzige mir bekannte sprache mit solchen missbildungen)

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
ich versuchs mal...

tja, es geht nicht :(. ich hab jetzt alle deklarationen in ne header datei rein und die auch eingebunden.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[b]weapons.hpp[/b]
void player1MiniGun();

[b]weapons.cpp:[/b]
void player1MiniGun()
{ ... }

[b]kampfsimmain.cpp[/b]
#include <iostream>
#include <string>
#include "weapons.hpp"

main()
{
     cout << "Blablabla";
     player1MiniGun();
}

Aber wenn ich das so mache kommt immer ein Fehler, dass in kampfsimmain.cpp das cout nicht deklariert wurde. Ich hab doch die iostream header ganz normal eingebunden, wie immer.
edited 1×, last 17.05.07 07:29:40 pm

old Re: Pommes Games

bizzl
User Off Offline

Quote
stealth has written
Mach doch einfach gar keine header-dateien...

Das ist aber nach den regel von c++ kein guter stil und dann wird er von echten programmierern ausgelacht


ne, hast schon recht, ich würde es auch so lassen, zumal es nur zusätzlichen Dateischrott bedeutet

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
ihr wart irgendwie zu schnell ;). Schaut oben, da hab ich nen Post, den ich gerade erst verfasst habe ;).

old Re: Pommes Games

HW
User Off Offline

Quote
Zu den Tippfehlern:
- Wo man auch hinsieht, sieht man ein "Gehwer" statt einem Gewehr
- "Praezisinswaffe" statt Praezisionswaffe (bei der Auswahl)
- "Maschienen Gewehr" -> Maschinengewehr
- "Waffe nicht verfübar. Bitte erneut auswarhlen"
Sind wirklich nicht viele, sie fallen aber dennoch auf.

Noch eine Sache zum Programmieren:
Du hast zwei Spieler, für die es jeweils gleiche, aber separate Funktionen (für die du eindeutig Copy&Paste benutzt hast) und Variablen gibt. Wäre es nicht viel eleganter, eine Klasse player mit entsprechenden Methoden und Eigenschaften zu erstellen?

Edit: Zum cout-Problem hat Dicker die Lösung schon gepostet. Du hast das using namespace std vergessen. Dabei möchte ich nochmal anmerken, dass using ebenfalls schlechter Stil ist und eig. nur von Anfängern benutzt wird. Verwende lieber std::cout etc., auch wenns länger ist.

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
@ HW: Der letzte Tippfehler existiert gar nicht! Die anderen leider schon, bzw. nicht mehr ;). Danke für den Tipp ;).
Das mit der Klasse: Ich Hohlkopf hätte doch eigentlich auch drauf kommen können ;).
Das mit dem cout hatte ich nicht gewusst, da es nicht in meinem Buch stand.
Ich wede den Quellcode mal ganz umbauen ;).


EDIT: Es gibt nur ein Problem: Ich hab ja in der classe Player dann nur die HP von der Klasse, aber nicht von einem 2.Spieler. Wie kann ich das dann umsetzen? Das war nämlich glaube ich auch der Grund, warum ich das nicht machen wollte ;).
edited 1×, last 17.05.07 08:00:53 pm

old Re: Pommes Games

bizzl
User Off Offline

Quote
Also wenn du "Player" zweimal instanzierst sind deren Felder "HP" unabhängig voneinander. Das ist schließlich eine der Ideen in OOP

old Re: Pommes Games

bizzl
User Off Offline

Quote
Was zur... hast du jemals OOP gemacht ???

Wenn du eine Klasse schreibst kannste die nicht als solches ansprechen, es sein den sie besitzt statische Methoden (haben die wenigsten).
Du müsst immer etwas wie folgendes machen (hier Java):
1
Player p1 = new Player();
p1 ist dann eine Instanz von Player und den bezeigten Vorgang nennt man Instanzierung
Wenn du folgenden Code benutzt hast du entsprechend zwei Instanzen von Player, welche vollkommen unabhängig voneinander operieren:
1
Player p1 = new Player(), p2 = new Player();
Kapiert?

Du solltest dich wirklich erst nochmal mit den Grundlagen von OOP beschäftigen bevor du weitermachst...

Edit: Das ist als guter Rat gemeint, also nicht austicken. Danke

old Re: Pommes Games

HW
User Off Offline

Quote
In C++ wäre es dann player p1(); player p2(); zum Instanzieren (Erschaffen) der zwei Spieler und zum Zugriff auf z.B. die HP verwendest du p1.hp bzw. bei korrektem C++-OOP mit abstrakten Datentypen eine Methode, die auf die HP zugreift.

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Achso, das nennt man INSTANZIERUNG ;). Wie das geht weiß ich schon, bloß dass das so heißt...
Aber das löst mein Problem trotzdem nicht. Wenn ich nämlich die Waffen (wie vorgeschlagen) in die Klasse Player rein mach, dann hab ich ja da nur die HP von einem Spieler. Die HP vom zweiten werden ja erst bei seiner instanzierung instanziert ;). Folglich kann ich in der Waffendefinition in der Klasse nicht auf die noch nicht erschaffenen HP des zweiten Spielers zugreifen.

old Re: Pommes Games

bizzl
User Off Offline

Quote
Ich hab grade keine lust mich durch den code durchzuwursteln, aber mach doch eine klasse Waffe mit der Methode trigger( Player p ), leite von der alle anderen Waffen ab und benutze dann immer diese Methode zu abfeuern.
In der Methode kann dann vllt sowas stehen:
1
2
3
int hp = p.getHP();
 hp+=this.damage;
 p.setHP(hp);
(wie immer alles Java, wenn du es net verstehst lass es dir von HW übersetzen. wenn ich c++ schreibe kommt nur mist raus)

Du musst dann nur aufpassen das du immer den richtigen Spieler übergibst.
To the start Previous 1 28 9 1013 14 Next To the start
Log in to replyOff Topic overviewForums overview