Forum

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

German Pommes Games

261 replies
Page
To the start Previous 1 210 11 12 13 14 Next To the start

old Re: Pommes Games

HW
User Off Offline

Quote
@Pommes: Prinzipiell ist dein Code funktionstüchtig und das Wissen über Zeiger/Referenzen wurde korrekt angewandt. (Jedenfalls sehe ich so auf die Schnelle keinen Fehler)
Allerdings ist das immer noch an OOP vorbeigeschossen. Ich kann so nicht erschließen, ob dus nur des Testes wegen ohne Übergabe der Playerparameter gemacht hast oder ob du immer noch an HP&KP Übergabe klebst.

Falls dein Problem die überkreuzten Parameter (HP des getroffenen und KP des schießenden Spielers) ist, dann gib der Funktion doch zwei Playerreferenzen (Angreifer und Angegriffener) oder definier sie als Methode der Klasse Player mit dem angegriffenen Player als Referenzparameter. (im zweiteren Fall kannst du über den Zeiger this auf den Angreifer zugreifen)

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
@ bizzle: Öhm, du willst aus der Referenz ( & ) einen Zeiger machen ( * ). Das geht auch, (fast, siehe nächsten Satz) wollt ich aber eigentlich nicht machen . Du hast nur eins falsch gemacht, und zwar gibst du in den letzten beiden Zeilen vor der Klammer in minigun nicht en Wert aus, sondern die Adresse der Variablen, auf die sich der Zeiger bezieht. Um den Wert zu kriegen musst du ein * davor setzen ;). Mein Vorschlag hat schon gefunzt, ich wollt aber nur wissen, ob das "guter" Stil ist.

zum oberen Post:
@HW: Ich schätze mal, beides ist der Fall, dass ich nicht den Player übergebe . Jedoch überwiegt letzteres.

old Re: Pommes Games

bizzl
User Off Offline

Quote
aha. Naja, nach C wäre es schlechter Stil gewesen (dort liefert & die Adresse einer Variable und dient damit zum Pointer setzen)

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Ja, aber in C++ hat der halt 2 Funktionen. Find ich auch irgendwie verwirrend . Der Indirektionsoperator (*) ist ja auch der gleiche, wie der Multiplikationsoperator (*).

@HW: Kannst du mir vllt. ein Beispiel geben, wie du das meinst, mit dem Player bergeben?? THX
edited 1×, last 20.05.07 08:58:20 pm

old Re: Pommes Games

bizzl
User Off Offline

Quote
Ich halte mich mal an den von dir vorgegebenen code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include "player.h"
using namespace std;

void minigun(player &p1, player &p2);

main()
{	//werte im konstruktor gesetzt
	Player player1 = Player(), player2 = Player();
	cout << "Vor minigun():\n"
	<< "Player1 HP: " << player1.getHP() << "\tPlayer1 KP: " << player1.getKP() << endl
	<< "player2 HP: " << player2.getHP() << "\tPlayer2 KP: " << player1.getKP() << endl;
	minigun(player1, player2);
	cout << "Nach minigun():\n"
	<< "Player1 HP: " << player1.getHP() << "\tPlayer1 KP: " << player1.getKP() << endl
	<< "player2 HP: " << player2.getHP() << "\tPlayer2 KP: " << player1.getKP() << endl;
}

void minigun(player &p1, player &p2)
{
	cout << "In minigun():\n";
	p1.setKP(p1.getKP()-3);
	p2.setHP(p2.getHP()-20);
	cout << "p1 KP: " << p1.getKP() << endl
	<< "p2 HP: " << p2.getHP() << endl;
}

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Danke!
Hab jetzt die Klasse Player gemacht und auch kapiert, wie man ein Objekt dieser Klasse an eine Funktion übergibt .
Zu den Waffen: Soll ich die jetzt auch als eigene Klasse machen? Also eine Klasse weapon und die unterschiedlichen Waffen als Objekte von der? Das ist glaube ich der einfachste weg.

old Re: Pommes Games

bizzl
User Off Offline

Quote
einzelne waffen als instanzen einer einzelnen klasse?
Ja, das ginge. Setze aber am besten die Werte bereits im Konstruktor,
d.h. du übergibst die gewünschten werte gleich bei der instanzierung, in etwa so :
1
Weapon minigun = Weapon(30,2);

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Ja, das wollte ich eh so machen. Ich wollt mich nur erkundigen, ob das ne gute Idee ist (bei meinen Ideen kann man ja nie wissen ). Werd das morgen mal ausprobieren. Was mir sorgen macht, ist die berechnung, ob Treffer oder nicht. Wie kann ich das am besten realisieren?

Und ein kleiner Schönheitsfehler in deinem Code, bizzl:
man schreibt
1
weapon minigun(30, 2)

Also ohne dem "= weapon(30, 2)", da mit der Art des Objekts (in diesem Fall weapon) ja schon der Konstruktor aufgerufen wird.

old Re: Pommes Games

bizzl
User Off Offline

Quote
diese sprache wird mir immer unsympatischer

Hat sicher was für sich, aber was wenn ich das ding erst später instanzieren muss (oder reinstanzierung)

PS: gar nicht erst hier antworten. Lehrgänge für mich bitte per pn

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Hehe, ich antworte doch .
Ich wollte nur mal melden, dass die Arbeit einigermaßen gut vorangeht. Ich hab jetzt schon die Klasse weapon und hab dazu und zur Klasse player die Namensübergabe reingebaut.

@bizzl: Wieso willst du ein Objekt erstellen und erst später instanzieren?? Das kannst du doch in einem Zug machen, oder?

old Re: Pommes Games

HW
User Off Offline

Quote
Reinstanzierung kann manchmal bzw. sogar recht oft durchaus nützlich sein, z.B. wenn man einen Konstruktorparameter ändern will. Für solche Sachen kann man aber die Form verwenden, wie sie bizzl angegeben hat. (u.U. muss man noch den Zuweisungsoperator der Klasse überladen. Eigentlich macht das schon der Compiler, aber es gibt Fälle, in denen man das lieber selbst in die Hand nimmt) Für die erste Instanzierung wird diese Form aber ausschließlich nicht verwendet, sondern die die Pommes geschrieben hat. Das hat technische Gründe: Bei der Form von Pommes wird die Klasse einfach mit den angegebenen Konstruktorparametern initialisiert. Bei der Zuweisungsform wird die Klasse erst irgendwo instanziert und dann werden die Daten in die Klasse, die von der Variablen beschrieben wird, kopiert. Die Zuweisungsform ist also wesentlich ressourcenaufwendiger. (auch wenn sich das wohl erst bei einer größeren Menge von Instanzierungen bemerkbar macht)

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Danke für die Belehrung . Ich wusste gar nicht, dass man das auch anders machen kann .
Zu den überkreuzten Parametern: Das hab ich noch nicht so ganz kapiert, was du weiter oben geschrieben hast, HW. Ich muss doch in jedemfall einen Funktionsaufruf für player 1 (minigun.useweapon(player1, player2) ) und player 2 (minigun.useweapon(player2, player1) ) machen, oder?
zu dem .useweapon : Ich hab das jetzt so gemacht, dass man eine Waffe mit diesem Befehl benuzen kann und dieser dann 2 player-Referenzen übergibt. Die Funktionsdeklaration sieht dann so aus:
[code]
class weapon
{...
useWeapon(player &attacker, player &defender);
}
Die Ausführung ist ein wenig komplexer, da ich noch Veriablen für die Schussanzahl und die Trefferwahrscheinlichkeit mit rein gebaut habe.

old Re: Pommes Games

HW
User Off Offline

Quote
Dein Ansatz ist schon gut, Hauptsache du hast eine Lösung.
Sieht aus als hätte ich dich mit meinem Beitrag über die Parameter mehr verwirrt als dir geholfen. Kümmer dich einfach nicht drum, deine Lösung ist gut.

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Das freut mich aber

Und zu den anderen Funktionen aus der alten Version:
Wie soll ich z.B. das Beschimpfen wieder einbauen?? Als Funktion in main() machen oder einfach den Code an die Stelle kopieren ? Ich glaub aber, die Funktion ist besser, weil das nicht so viel verwirrung stiftet, wie wenn einfach irgendwelche Ausgaben drinnen stehen.

old Re: Pommes Games

bizzl
User Off Offline

Quote
HW has written
Die Zuweisungsform ist also wesentlich ressourcenaufwendiger. (auch wenn sich das wohl erst bei einer größeren Menge von Instanzierungen bemerkbar macht)

Die Mengen die du brauchst um einen "überlastungseffekt" zu erzielen sind bei modernen systemen (64MB und mehr) selbst bei enorm großen klassen so riesig das man diesen fall getrost unter den tisch fallen lassen kann.
Selbst in Object Pascal bin ich in der lage mehrere tausend objekte zu erzeugen ohne das mir das system zusammenklappt, und dort ist diese form die einzig gültige

Der Prozessor rotzt bei diesen mengen so oder so...

old Re: Pommes Games

Pommes die Fritte
User Off Offline

Quote
Gute Neuigkeiten!!
Ich hab jetzt den neuen, verbesserten KampSim fertig. Ich lad mal das Teil hoch, damit ihr mir eure Meinung sagen könnt.
mfg
Pommes die Fritte

EDIT: Hab das Spiel noch erweitert. Manche Waffen ziehen beim Treffen nicht nur HP sondern auch KP ab. Ich hoffe, dadurch wird das Spiel spannender.
EDIT2: Jetzt hab ich auch die Wlindowsversion oben!!
Aber seid jetzt mal ehrlich: wer von euch spielt das eigentlich ab und zu?? Oder schaut ihr euch nur den Quellcode an und denkt euch: Wer so was proggt/spielt ist doch dumm!! Ihr könnt mir ruhig die Wahrheit sagen .




EDIT am 1.6.2007: Ich hab ein Problem, und zwar hab ich jetzt die player.hpp auf 2 Datein gesplittet: player.hpp und player.cpp . Wie kann ich die jtzt unter DevC++ kompilieren?? unter Linux gehts ja ganz einfach. Man muss nur in die Zeile die 2. Datei angeben (stimmt's HW?).
edited 4×, last 01.06.07 05:30:26 pm

old Re: Pommes Games

HW
User Off Offline

Quote
Unter Dev-C++ musst du ein Projekt erstellen und die cpp-Dateien dem Projekt hinzufügen, dann kompilierst du das Projekt.
Den Rest solltest du selbst rausfinden können, hab grad keine Möglichkeit nachzuschauen wie das geht.
To the start Previous 1 210 11 12 13 14 Next To the start
Log in to replyOff Topic overviewForums overview