| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| no guts no glory Registriert seit: May 2004 Ort: Nordhorn
Beiträge: 7.998
| Trading Card Game ...
Halli Hallo, meine Freunde der gepflegten Progammierung ... Ich brauch mal (was auch sonst) eure Hilfe. Ich habe mir wiedermal in den Kopf gesetzt eines dieser Projekte anzufangen die ich meistens nicht beende *g* ... Nichtsdestotrotz lerne ich bei diesen Sachen immer relativ viel. Im Speziellen möchte ich mich hier weiter mit Klassen auseinandersetzen. Nicht der technische Aspekt von Klassen (den habe ich soweit drauf) sondern der logische Aspekt interessiert mich hier. Ich habe häufig noch das Problem das ich nicht genau differentieren kann wann eine Klasse sinn macht und wie man die Klassen am besten Strukturiert, insbesondere was die Vererbung angeht. Also habe ich mir jetzt mal das (subjektiv) schwerste Rausgesucht was mir eingefallen ist: Ein Trading Card Game (TCG) nach dem Vorbild von Magic the Gathering. Es geht nicht um ein kommerzielles Projekt und ich will das auch nicht Veröffentlichen, darum habe ich keine großen Gewissensbisse mich bei meinem Vorbild schamlos zu bedienen. Wer Magic nicht kennt: Die Spieler haben jeweils ein Set von min. 60 (glaube ich) Karten. Jeder Spieler beginnt das Spiel mit 20 Lebenspunkten. Ziel des Spiels ist es nun die Lebenspunkte seines Gegners auf 0 zu reduzieren. Um das zu erreichen stehen den Spielern diverse Karten und Kartentypen zur Verfügung. Ein Beispielkartentyp sind z.B. die Kreaturen: ![]() Alle Karten haben folgende Informationen:
Kreaturen haben noch folgende Informationen:
Als zusätzliches Beispiel nochmal eine Karte vom Typ "Hexerei": ![]() Wie man sieht fehlen diesem Kartentyp einige der Informationen die eine Kreatur besitzt. ... Um nun aber auch mal auf den Punkt zu kommen: Mein größtes Problem in der Planung des Spielt ist gleichzeitig das was ein TCG so Faszinierend macht, und zwar die goldene Regel: Die Karte hat immer Recht Es ist nicht die Ausnahme sondern die Regel bei solchen Spielen das einzelne Karten das Grundregelwerk erweitern oder sogar außer Kraft setzen. Und diese speziellen Kartenregeln gibt es in diversen Variationen. 2 seht ihr oben ja schon: Die Kreatur hat die Fähigkeit "First Strike" und gibt dem Spieler 1 Lebenspunkt wenn sie ins Spiel kommt. Mit der Hexere kann ein Spieler einer Kreatur die Fähigkeit "Fliegen" und einen Bonus von +3/+3 auf Angriff/ Verteidigung bis zum Ende seines Zuges geben. Ein paar andere Beispiele: Angelic Chorus - Enchantment - Whenever a creature comes into play under your control, you gain life equal to its toughness. Aura of Silence - Enchantment - Artifact and enchantement spells your opponent play cost 2 mode to play. Sacrifice Aura of Silence: Destroy target artifact or enchantment. Aven Cloudchaser - Creature, Bird Soldier - Flying. When Aven Cloudchaser comes into play, destroy target enchantment. Torture - Enchant Creature - Choose target creature: Pay 2 Mana, Put a -1/-1 on creature Torture enchants Pyroclasm - Sorcery - Pyroclasm deals 2 damage to each creature. Ambassador Laquatus - Legendary Creature, Merfolk Wizard - Pay 3 Mana: Target Player puts the top three Cards of his or her library into his or her graveyard. So .. wie ihr vielleich erahnen könnt sind die Fähigkeiten extrem vielfältig. Und genau da liegt mein Problem. Ich hab keine Idee wie man diese Fähigkeiten Programmiertechnisch umsetzen kann und dabei so flexibel bleibt das man: 1.: Nicht für jede Fähigkeit eine eigene Klasse schreiben muss (das wär Blöd- und Wahnsinn) und 2.: Das ganze Verhältnissmässig flexibel bleibt so das man nicht das ganze Spiel "neu" bauen muss um eine neue Fähigkeit einzubauen. Grundlegend würde ich natürlich eine Klasse "Cards" erstellen und dann Unterklassen wie "Creature", "Enchantment" etc. erstellen die von "Cards" erben. Soweit so klar ... nur wie gesagt: Die Fähigkeiten. Das einzige was mir eingefallen ist, ist es irgendwie die Fähigkeiten in mehrere Segmente zu spalten wie z.B. ZIEL - KOSTEN - WIRKUNG ... die man dann Individuell einstellen kann. Aber das funktioniert ja sogar bei den paar Beispielen oben nicht immer. Und selbt wenn, wüsste ich nicht genau wie ich das in Klassen verpacken könnte. So ... genug geschrieben ... ich hoffe es ist halbwegs klar geworden was mein Problem ist und irgendjemand der Analytischer als ich denken kann erbarmt sich meiner und hat eine Idee wie man sowas lösen kann. Danke euch
__________________ Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke. 'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.' Geändert von readme.txt (08-05-2008 um 11:08 Uhr) |
| | |
| | #2 (permalink) |
| Banned Registriert seit: May 2008
Beiträge: 514
|
Ich bin mir nicht sicher ob ich Dich verstanden habe. Aber ich versuche mal analytich eine gewisse klassenstruktur in form eines xml aufzubauen. erklädung findest du im xml PHP-Code: mfg cc |
| | |
| | #3 (permalink) |
| no guts no glory Registriert seit: May 2004 Ort: Nordhorn
Beiträge: 7.998
|
Genau dieser Punkt: PHP-Code: Und mir fällt einfach nix ein wie man die schiere Masse dieser Sonderfähigkeiten programmiertechnisch "Fassen" kann und dabei möglichst dynamisch zu bleiben.
__________________ Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke. 'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.' |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.147
|
Klassen modellierst du am besten nach den Vorbildern der Karten. Am einfachsten sind natürlich die offensichtlichen Attribute: ActionScript:
ActionScript:
ActionScript:
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #5 (permalink) |
| mushroom powered Registriert seit: Jun 2005 Ort: Amsterdam
Beiträge: 2.649
|
So zu beginn ist das mal ein riesenklotz, recht schwer da einen Anfang zu finden. Ich kenne Magic jetzt nur vom Namen, habe es selbst noch nie gespielt. Aber wenn es moeglich ist die ganzen Charakter-Typen, und deren Eigenschaften fest zu bestimmen dann ist es moeglich fuer bestimmte Typen Ausnahmen mit einzubeziehen. Im Prinzip werden ja pro Spielzug nur die Eigenschaften deines Gegners manipuliert. |
| | |
| | #6 (permalink) |
| will code HTML for food Registriert seit: Mar 2003
Beiträge: 1.232
|
Evtl. mußt Du das ganze komplett anders rum angehen. Also nicht von der Karte aus, sondern vom Spieler/dem Spiel ansich aus. Du formulierst alle Ereignisse eines Spielzugs: 1. Startphase 1.1 Enttappen 1.2 Versorgen 1.3 Ziehen 2. Hauptphase 3. Kampfphase 3.1 Beginn des Kampfes 3.2 ... usw Und dann alles was betroffen werden kann: 1. Spieler 1.1 Lebenspunkte 1.2 ... 2. Kreatur 2.1 Stärke 2.2 Widerstand 2.3 Fliegen 2.4 Trampeln 2.5 ... 4. Deck 5. Friedhof 6. ... usw dann kannst Du hinterher in den Karten definieren das zum Ereignis 3.1 Ziel ... verändert werden kann. Ganz ausgereift ist der Gedankengang noch nicht, aber im Endeffekt definierst Du einmal im Spiel was alles wann verändert werden kann. Bis dann, querkopf p.s.: würde mich freuen das fertige Spiel dann mal testen zu können
__________________ Alles ist wie immer. Nur schlimmer. |
| | |
| | #7 (permalink) |
| no guts no glory Registriert seit: May 2004 Ort: Nordhorn
Beiträge: 7.998
|
Ha! ... Wenn mit großem W ... Einen ähnlichen Gedankengang hatte ich auch schon, wobei ich wirklich von der Karte ausgegangen bin. Dein Ansatz ist aber deutlich besser.Ich hab hier: http://www.surge-oe.de/stuff/tow/karten.php zusätzlich noch ein paar Karten hochgeschoben damit ihr mal einen Eindruck bekommt wie vielfältig diese Kartentexte/Fähigkeiten sind.
__________________ Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke. 'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.' |
| | |
| | #8 (permalink) |
| Achim Math.PI Registriert seit: Jul 2001 Ort: cool Colonia
Beiträge: 11.642
|
ohne deiner idee vorwegzugreifen, aber ein spielbare variante von mtg gibt es schon für alle die es nicht kennen können sich hier infos und das spiel ziehen ps: hast du keine karten aus der revised oder älteren edition? ich hab bei ice age aufgehört zu sammeln
__________________ gruß bloba 2 x onkel² b_d |
| | |
| | #9 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.147
|
Ich würde von der Karte und den Regeln ausgehen. Nicht um gegen Querkopfs Vorschlag anzustinken, sondern da du sowohl in den Regelanwendungen als auch in den zusätzlichen Spielphasen mit den Karten arbeitest. Die Spielphasen sind nur temporäre Zustande des Spieles. Wichtig wäre für mich zuerst die Karten und Spieler zu modellieren. Danach die Regeln. Wenn gewisse Regeln Anwendung finden, entscheiden die einzelnen Spielphasen, die jedoch nichts anderes als temporäre Zustände des Spieles sind, die sequentiell abgearbeitet werden.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #10 (permalink) |
| no guts no glory Registriert seit: May 2004 Ort: Nordhorn
Beiträge: 7.998
|
@bloba: Ich weiss das es das schon gibt ... Wie oben geschrieben, gerade aufgrund der komplexen Kartenregeln ist das glaube ich eine super Sache um ein bisschen im Bereich strukturierte Programmierung zu lernen, das geht mir immer noch etwas ab. Ich lande immer wieder in blöden Sackgassen weil ich mir die Klassenstrukturen vorher nicht überlegt habe.@Omega Psi: Ich werd mal sehen das ich eine grundlegende Struktur auf die Reihe bekomme, vielleicht hilft mir das selber auch weiter. Dein Vorschlag von oben ist dabei schon extrem hilfreich ... danke euch schonmal ... über weiteres Philosophieren freue ich mich aber trotzdem. Eine halb-Off Topic Sache noch: Wenn ihr sowas plant, wie regelt ihr das? Malt ihr euch da Struktugramme auf mit den Klassen die ihr plant? Oder Scriptet ihr sowas aus dem Bauch/Kopf heraus? PS: @bloba: Ich hab noch deutlich mehr Karten auf dem Rechner, aber wenn ich die alle hochlade ist mein Webspace voll ^^
__________________ Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke. 'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.' Geändert von readme.txt (08-05-2008 um 15:52 Uhr) |
| | |
| | #11 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.147
|
Ich arbeite gerne und auch relativ viel mit UML. Es hilft dir ungemein Strukturen zu erarbeiten und vor allen Dingen einen Überblick zu behalten. Und wenn du kein UML kannst: mach dir einfach Diagramme für Klassen und den allgemeinen Programmfluss. Mein favourisiertes Tool: Papier und Kuli.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #12 (permalink) |
| ChronoGuard Registriert seit: Mar 2002 Ort: Saarbrücken
Beiträge: 2.649
|
Ich mach mir mittlerweile öfters vorab einen wohldurchdachten Plan mit ArgoUML. Dann fang ich an mit dem Code. Dann schmeiß ich den wohldurchdachten Plan weg und mach einen neuen. Dann mach ich weiter mit dem Code. Dann schmeiß ich... Es wird langsam besser. Aber das geht mir auch alles furchtbar zäh in den Kopf. Selbst Skat hab ich schneller gelernt |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Mar 2006
Beiträge: 1.573
|
BITTE BLEISTIFFT + RADIERGUMMI! sosnt verbauchst du zuviel blätter und wir wollen doch nicht noch mehr unnötig bäume fällen
__________________ Currently working on: - --- --- ----------------------------------------------------------------- ActionScript 3.0, C++, Java, Delphi |
| | |
| | #14 (permalink) |
| Neuer User Registriert seit: Dec 2005 Ort: Oldenburg
Beiträge: 2.408
|
Hi, wenn Du Hilfe brauchst... Habe mehrere jahre Magic gespielt, sogar auf Turnieren. ![]() Ich würde mich auf die aktuellen Editionen begrenzen, damit die Anzahl der Fähigkeiten im Rahmen bleibt. Ansonsten ist der Berg wohl zu gigantisch. (Was Karten und Fähigkeiten angeht) Ich würde vom Aufbau her, "einfach" dem Ablauf des Spieles folgen. Sprich Karte ziehen, Länder legen, usw... Für die Regeln: Erstmal Grundregeln bauen. Später die Sonderfähigkeiten. lg, nico Verdammt... jetzt habe ich wieder Lust auf Magic... (Bevor Damage auf den Stack ....)
Geändert von Nico B. (08-05-2008 um 16:12 Uhr) |
| | |
| | #15 (permalink) |
| wau Registriert seit: Jan 2006 Ort: Hamburch
Beiträge: 404
|
hi, komplexe Sache, bzgl. Planung: ich würd auch erstmal einfach anfangen. Ich persönlich bin eigentlich überhaupt kein Planer in irgend einem Sinne. Ich hab das zwar auch schon mit Diagrammen versucht, aber ich weiss nicht, mir bringt das irgendwie nicht so viel? Wärend des Proggens kommen mir dann immer irgendwelche Einfälle und die will ich dann auch noch mit "einarbeiten". Naja, Im Grunde ist es ja auch schnell gemacht, das man es alle etwas ummodelt, doch manchmal kommt man dann schon an eine Punkt, wo es zu Komplex wird und man einfach "im Sumpf" stecken bleibt und das Handtuch schmeisst .Eine "grobe" Struktur im Kopf ist aber schon ganz gut, evtl. so: 1) alles Lernen, Input, Diagramme, Struktur ect... 2) ruhe, rumwandern, vergessen, was anderes machen 3) anfangen
__________________ Say no to Internet Explorer 6! Geändert von Circushund (08-05-2008 um 16:41 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |