Du bist nicht angemeldet.

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!

Werbeanzeige

WhiteMike

Alter Hase

  • »WhiteMike« ist der Autor dieses Themas

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

1

29.04.2006, 19:50

Fehlervermeidung, Optimierung der Projektplanung und Danke

Hallo,

wieder mal eine programmtechnische Frage. Auf irgendeine Lösung werd ich bestimmt kommen, wenn ich mich damit länger beschäftige, aber wem es spaß macht, kann mir ja auch helfen.

Also, ich bin gerade an meinem Projekt und kam für mein erstes ganz gut voran, bis ich mich dann genau fragte, wie ich meinen Infantristen bestimmte Ausrüstungsgegenstände (d.h. auch waffen) zuweise.

= Situation =

Die schon programmierten Klassen sind

C-/C++-Quelltext

1
2
3
4
5
6
* CObject
    -> CEquipment
        -> CGuns
        -> CBulletproofVest

* CAmmo



= Vorhaben =

Ich möchte den Waffen (werden später von CGun abgeleitet) eine
Munitionsart CAmmo zuweisen.

Die Waffe, mit der zugewiesenen Munitionsart soll dann dem Infanteristen zugewiesen werden. Dazu muss CInfantrist diese Waffe und die ganzen anderen Ausrüstungsgegenstände verwalten können

= Lösungsmöglicheiten =
über die ich schon mal nachgedacht hab

Also, der Waffe eine Munitonsart zuzuweisen sollte nicht allzu schwer sein. Ich definiere in der Waffen-Klasse einen Zeiger, der auf eine Munitionsart zeigt und mit dem man ihre Eigenschaften (Schaden, Geschwindigkeit, ...) ablesen kann

Der zweite Punkt erscheint mir schwieriger.
Am Anfang hab ich daran gedacht, einen Array anzulegen, der der die gleiche Kapaität haben soll, wie der Infantrist bei sich tragen kann.
Kann ich aber einen Array der Klasse CEquipment (damit nicht nur Waffen, sondern auch alles andere ins Array passt) deklarieren und dort Objekte der Klassen CGun und CBulletproofVest speichern?
Der Array bietet dazu noch die Möglichkeit, dass man zum Beispiel sagen kann, dass der erste Index als der erste Arm, der zweite als der zweite usw. sein soll. Die zweite Möglichkeit wär, zu sagen, dass der erste Index nur für Gewehre, der Zweite nur für Pistolen und die restlichen nur für andere Ausrüstungsgegenstände sind.
Dann könnte man noch einen Array einrichten, der den rucksack des Infantristen darstellt.

Kann jemand abschätzen, ob man normalerweise was besser macht?



===========
Dann hätte ich noch eine Frage, welche Makros es bei dem Compiler VC++ gibt, mit denen man Fehler vermeiden kann.

Ich hab was von ASSERT() gehört und außerdem soll es da irgendwas geben, womit man texte in das Build-Fenster ausgeben kann

===========

Es tut mir leid, dass ich so viel geschrieben hab und ihr euch jetzt so viel durchlesen müsst.


Um so mehr dank ich euren antworden und hilfestellungen,
Michi

Am Allgemeinen wollte ich euch allen dafür danken, dass ihr mir so oft und gut helft!
Also, hier habt ihr es:


DANKE
dafür, dass ihr mir immer helft!
:-)

Mit freundlichen Grüßen,
WhiteMike

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

2

29.04.2006, 20:11

Also das 1. Problem hast du ja schon selbst gelöst (mit dem Zeiger auf CAmmo).
Zum 2. Problem: Ich würds mit einem Array lösen, aber vom Typ CObject*, da alle anderen Klassen von dieser abgeleitet sind, gibt es keine Typenprobleme. Zu deinem IndexProblem. Ich würds dynamischer machen, und dem Infateristen selbst mehrere Eigenschaften geben die jeweils den Index für das Equiment für zB die linke Hand speichern. Sozusagen einen Index für die linke, einen für die rechte und einen dritten für die Schutzweste (nur bspw).
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

WhiteMike

Alter Hase

  • »WhiteMike« ist der Autor dieses Themas

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

3

29.04.2006, 20:33

- Stimmt - das mit CObject* ist besser

- Mit dem Index meinst du, dass ich ein Array mit allen Vorkommenden Equipments anlegen soll und darauf vom Infantristen mit Zeigern zeigen soll oder dass jeder Infantrist einen Array haben soll, den er direkt (ohne Zeiger) benutzen kann?

Mit freundlichen Grüßen,
WhiteMike

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

4

29.04.2006, 21:06

Ich hoffe, dass ich das Problem richtig verstehe^^
Ein Array pro Infanterist ist immer sinnvoll, wenn Soldat B noch Munition haben soll, nachdem Soldat A alles verschossen hat. Wenn du hingegen ein Array erstellst und alle Infanteristen darauf verweisen hast du den Effekt, dass sich deine Leute ihre Munition,... teilen

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

5

29.04.2006, 21:38

Nein, ich meinte schon, jeder Infanterist ein Array, und dann durch zeiger oder integer-indexe auf die jeweiligen Teil zugreifen!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Sicaine

unregistriert

6

29.04.2006, 23:45

Zitat von »"Black-Panther"«

Also das 1. Problem hast du ja schon selbst gelöst (mit dem Zeiger auf CAmmo).
Zum 2. Problem: Ich würds mit einem Array lösen, aber vom Typ CObject*, da alle anderen Klassen von dieser abgeleitet sind, gibt es keine Typenprobleme. Zu deinem IndexProblem. Ich würds dynamischer machen, und dem Infateristen selbst mehrere Eigenschaften geben die jeweils den Index für das Equiment für zB die linke Hand speichern. Sozusagen einen Index für die linke, einen für die rechte und einen dritten für die Schutzweste (nur bspw).


Würd ich designtechnisch nie tun! Da es in C++ keine Interfaces und co gibt, würd ich schon sowas wie ne equipment machen!

Anonymous

unregistriert

7

30.04.2006, 01:21

Sicaine
Wie keine Interfaces?? Das bedeutet ja kein COM, keine APIs und kein interface-keyword mehr? Sowie keine abstrakten Klassen?

Mein Gott, womit code ich grade nur?!?! :huhu:

john

Alter Hase

Beiträge: 786

Beruf: Schüler

  • Private Nachricht senden

8

30.04.2006, 01:26

Ich sags ja ungern ;), aber: Patrick hat Recht. ;p :-D
mfg
john

Werbeanzeige