Hallo Leute,
ich habe ein kleines Problemchen. Ich bin gerade dabei mein kleines 2D Spielchen zu programmieren. Auf das Problem stoße ich beim Laden der Map/Karte. Ich möchte sie in 2 Teilen sozusagen laden. Der erste Teil ist der Hintergrund, den ich ohne Probleme laden kann, danach möchte ich Objekte (Truhen, Tühren etc.) laden. Dies habe ich so bewältigt, dass ich den Bildschirm in ein 10x10 Raster aufgeteilt habe sprich bei einer Auflösung von 800x600 ist ein Kästchen 60x80 Pixel groß. Soweit so gut. Ich belege nun einfach ein char Array von 100 mit Zahlen die für Objekte stehen (bisher: 0=Nichts, 1=Truhe, 2=Tür, 3=Schlüssel, 4=Geld, 5=Menübutton). Das ist auch alles gut so (verfeiner ich später vllt. noch ein wenig, aber vorerst reichts). Jetzt zu meinem eigentlichen Problem: Ich habe nun 2 Funktionen in einer Klasse, die eine tut im großen und ganzen, dass was ich beschrieben habe und die andere überprüft ganz simple die jeweilige Zahl im Map-Array und übergibt den Namen des zu ladenden Objektes in einem string den ich zum Laden konvertiere. Und nun hab ich das Problem, dass das jeweilige Bild nicht geladen wird! Laden, zeichnen etc. passiert mit Allegro. Hier der Code, vielleicht seht ihr was ich falsch gemacht habe...
Funktion zum übergeben des Namen:
PHP Code:
std::string MAP::check_object(char object,std::string object_name){ //überprüft die Objekt nummer und giebt den Namen des zu ladenen Objektes aus
switch(object){ // überprüfe nummer und gebe den richtigen Namen aus (falls 0=kein name)
case 0: //nichts
object_name="nothing";
break;
case 1: //truhe
object_name="objchest.bmp";
break;
case 2: //tür
object_name="objdoor.bmp";
break;
case 3: //schlüssel
object_name="objkey.bmp";
break;
case 4: //geld
object_name="objmoney.bmp";
break;
case 5: //menübutton
object_name="objmenu.bmp";
break;
default:
break;
} //switch
//gebe den namen zurück
return object_name;
} //function
Hier der Problembereich( map_count ist einfach das jeweilige Kästchen vom Raster bzw. die Zahl des Kästchens):
Aiaiai... Du bist dir sicher, dass du die Programmierung soweit beherrscht, dass du ein Spiel programmieren willst? D: Sieht nämlich nicht so aus...
Wenn du den Rückgabewert über die Parameter der Funktion haben willst, solltest du mit Zeigern arbeiten, sonst funktioniert das nicht... Sollte wohl klar sein. Ansonsten machst du das eben konventionell so:
Wenn man ein Funktionsargument für einen Rückgabewert verwenden möchte, dann sollte man Referenzen verwenden, Zeiger wären in diesem Fall fehl am Platz.
So könnte dann der Funktionsprototyp aussehen, ich empfehle bool als Rückgabewert, da du so einfach Signalisieren kannst ob deine Funktion erfolgreich war oder nicht.
Außerdem schreibst du sehr viel überflüssigen Code und missachtest grundlegende Regeln für les- und wartbaren Code, die Breaks in deinem if/else Clause machen, zumindest mit dem Vorhandenen Code keinen Sinn, man sollte allgemein möglichst auf break in Schleifen verzichten, es macht den Programmfluss einfach sehr unübersichtlich und verkompliziert die Dinge unnötig.
Über dein if/else Konstrukt verhinderst du ja schon das ein Bild geladen wird falls ein Feld kein Objekt enthalten soll.
Für Konstruktive kritik zeigst du allerdings viel zu wenig Quellcode, wir müssten schon mehr über deine Klasse wissen, aber nach dem was ich bisher gesehen habe solltest du dich ersteinmal aufs Lernen besinnen, ohne das richtige Handwerkszeug wird dir das mit deinem kleinen Spiel bald keinen Spaß mehr bereiten.
Es ist wichtig dass du Grundlegende Techniken der Programmierung verstehst, es reicht nicht nur den Befehlssatz einer Sprache zu kennen, man muss auch wissen wie man diesen möglichst geschickt anwendet, allerdings beherrscht du noch nichteinmal die wichtigsten Sprachkonstrukte von C++, darum kann ich es nur wiederholen, Du musst unbedingt mehr Lernen, wenn du wirklich etwas mit C++ anfangen möchtest.
Natürlich haste Recht mit dem was du schreibst, aber schau ich bin erst 14 Jahre jung und immer lernen macht auch keinen übermäßigen Spaß und in meinem Alter brauch ich keineswegs dies alles schon unbedingt lernen. Ich mache halt gerade das was mir am meisten Spaß macht. Wenn ich nach einer Woche wieder aufhöre mit einem Projekt, da ich keine Lust mehr darauf habe dann fang ich halt mit einem neuen Projekt an wozu ich mehr Lust habe. Auf diese Weise finde ich lernt man am schnellsten ganz Unterschiedliche Dinge, auch wenn man häufig das Projekt nicht fertigstellt. Aber schau ich tue halt das was mir gerade am meisten Spaß macht mit meinen Möglichkeiten. Darum geht es doch eigentlich, Spaß beim lernen zu haben und sich nicht durchzu quälen...
MfG
Ps: Ich werde es morgen mal mit den Referenzen ausprobieren.
Natürlich haste Recht mit dem was du schreibst, aber schau ich bin erst 14 Jahre jung und immer lernen macht auch keinen übermäßigen Spaß und in meinem Alter brauch ich keineswegs dies alles schon unbedingt lernen. Ich mache halt gerade das was mir am meisten Spaß macht. Wenn ich nach einer Woche wieder aufhöre mit einem Projekt, da ich keine Lust mehr darauf habe dann fang ich halt mit einem neuen Projekt an wozu ich mehr Lust habe. Auf diese Weise finde ich lernt man am schnellsten ganz Unterschiedliche Dinge, auch wenn man häufig das Projekt nicht fertigstellt. Aber schau ich tue halt das was mir gerade am meisten Spaß macht mit meinen Möglichkeiten. Darum geht es doch eigentlich, Spaß beim lernen zu haben und sich nicht durchzu quälen...
MfG
Ps: Ich werde es morgen mal mit den Referenzen ausprobieren.
KTS some empty strings 06/14/2011 - Rappelz - 14 Replies Hier für die spezialen nubs die das immer noch nicht kennen :)
Weapon, Armor, Gloves, Boots, Belt, Earrings, Necklace!Look at the last 2 Numbers!
01 move speed+evasion
02 pdef
03 atk/cast speed
04 block def
05 acc/macc
06 crit power
07 mp rec
Bekannte Strings 11/20/2010 - S4 League Hacks, Bots, Cheats & Exploits - 69 Replies Dar ich euch nicht mehr mit Updates des Trainers versorgen kann,
dachte ich mir gebe ich euch meine Liste,
mit den mir Bekannten Strings.
Natürlich werden sie hier oder mal dar,
in irgendwelchen Threads gepostet,
aber das tut nichts zur sache.
Fragen, nur per PM.
________________
No Rules Strings 10/07/2010 - S4 League - 3 Replies Nach welchen Strings muss ich nochmal suchen, und zu was muss ich sie verändern um No Rules zu bekommen?
Richtig Strings tauchen? 09/08/2010 - S4 League - 16 Replies Also wollte mal fragen ob es möglich ist zu wissen ob man Bestimmte Strings verwenden kann bei anderen, oder ob es glückssache ist.
z.B.
actor_default_hp_max="100.0"
müsste man doch theoretisch mit allem austauschen können, was ein ="" hat oder?
weil manchmal funktioniert es nicht z.B. kann man nicht
power mit ray_maxdistance austauschen...
C# relationship between chars and strings 05/04/2008 - Conquer Online 2 - 2 Replies I know that chars are wrappers around a string, but how would I declare an array able to change one of the characters in the string?