PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2d rpg


amida maru
2007-02-18, 14:59:10
Peace Leute. Ich und mein Freund haben beschlossen n kleines 2d rpg zu programmieren so wie es man mit rpgmaker2k macht. Wisst ihr wie sowas funzt? Welche engine ist gut? mit arrays oder mit stl?

einfach reinschreiben was ihr drüber wisst,danke.


mfg amidamaru

Expandable
2007-02-18, 16:51:34
mit arrays oder mit stl?

Das ist jetzt nicht Dein Ernst, oder?

---

Außerdem: Warst Du nicht der, der vor ein paar Wochen noch einen Thread mit absoluten Anfängerfragen aufgemacht hat? In diesem Fall würde ich doch mal sehr dazu raten, erst mal programmieren zu lernen, und dann sich an die großen (und interessanten) Dinge zu wagen...

amida maru
2007-02-18, 21:25:22
ist mein ernst...naja anfänger ich hab ja schon alles durch die grundlagen aber MANCHES check ich noch net richtig zb oop

The_Invisible
2007-02-18, 22:05:09
oje, warum muss man sich als "erstes" gleich ein game vornehmen

ohne oop fliegst da sehr schnell auf die schnauze, vor allem bei nem rpg wo man sich sehr gut mit abstrakten klassen und vererbungen "spielen" kann

mfg

del_4901
2007-02-18, 22:24:00
Sich ein game als erstes vorzunehmen find ich ja dabei nichtmal so schlimm. Da gibt es ja genug (einfache)... Mühle, Snake, Dame, Asteroids etc. Aber gleich ein RPG ... Prost Mahlzeit! Wer macht denn den Content? Wer denkt sich das System aus. Wer soll das auch noch programmiern ... du jedenfalls nicht?

tokugawa
2007-02-18, 23:12:52
Genau, mach lieber zuerst ein einfaches Arcade-Spiel, das erwähnte Asteroids ist schon mal ganz gut.

Das erste Spiel das ich programmiert hab war auch nur ein Spiel wo einfach ein Objekt (und zwar nur eines) runtergefallen ist, und man es auffangen mußte. Sobald man es aufgefangen hat, hat man einen Punkt bekommen, hat man es nicht gefangen, verliert man einen Punkt. Und es wiederholt sich unendlich.

Implementier lieber mal etwas auf diesem Niveau.

Gast
2007-02-18, 23:41:52
Hi,
Ich bin der von ihm erwähnte Freund und ich habe ihm auch schon gesagt, dass es zwar ohne oop geht aber sehr viel umständlicher zu handhaben ist. Ich hatte ihm angeboten zusammen ein Spiel mit der SDL zu machen aber er hat sofort gefragt ob wir sowas ala RPGMaker machen könnten.
Ich finde besonders bei Spielen erleichter die OOP die ganze Angelegenheit um einiges.
Mein erstes (nachgemachtes) Spiel war nen Pong. Ich find RPG auch ein wenig hoch gegriffen.
Hat hier mal jemand ne gute Spielidee für ein nicht zu kleines 2d Spiel was sich aber zu zweit realisieren lässt?
Sowas wie Tetris find ich dann für 2 Personen doch etwas klein und nen rpg zu groß.... wer kann mal was vorschlagen?

Silpion
2007-02-19, 01:44:54
Wie wär's mit Go (http://de.wikipedia.org/wiki/Go_(Brettspiel))? Fangt einfach an, für zwei Spieler, ohne KI, zeichnet das Brett auf der Konsole. Wenn ihr gut voran kommt, macht ein grafisches Interface oder spielt über's Netzwerk. :)

amida maru
2007-02-19, 15:18:42
ja ok mit arrays silpion?

Silpion
2007-02-19, 17:23:09
Uhm... vielleicht probiert ihr es doch erstmal mit etwas Lektüre: http://www.cplusplus.com/doc/tutorial/

Die Regeln beim Steine setzen von Go sind recht komplex, evtl. solltet ihr es mit etwas einfacherem probieren. Schiffe versenken oder so.

Matrix316
2007-02-19, 17:33:42
Interessant für sowas ist das XNA Projekt von Microsoft. Man braucht noch die Express Edition von Visual C# und dann kanns schon losgehen: http://www.xnadevelopment.com/ http://msdn2.microsoft.com/en-us/xna/aa937795.aspx

Monger
2007-02-19, 18:36:05
Ich hab jetzt mittlerweile schon ein paar Jahre Programmiererfahrung, aber an ein Spiel würde ich mich immer noch nicht ranwagen - und erst recht nicht alleine.

Alles was mit Grafik zu tun hat, ist potentiell irrsinnig aufwendig. Nichtmal unbedingt kompliziert, aber einfach verdammt viel Arbeit.

Du solltest mindestens die Grundlagen moderner Programmierung verstanden haben - und wenn du selber ein Projekt leitest, musst du natürlich auch noch was von Software Engineering verstehen - , dann mit ein paar kleineren Sachen Erfahrung gesammelt haben, und frühestens dann solltest du dich für Spieledesign interessieren. Das ist einfach ein viel zu komplexes Thema als dass du da ohne jegliche Erfahrung einsteigen könntest.

amida maru
2007-02-19, 19:00:25
auch mit engines nicht? naja directX is ja klar aber mit "leichten" sachen wie sdl engines....

amida maru
2007-02-19, 19:09:16
hab mir ma das xna framework angeguckt hmm... dazu brauch man aber c sharp und nicht c++ oder?

Gast
2007-02-19, 19:10:37
Hi,
Spiele programmieren an sich ist nicht weiter schwer.
Ein 2D Spiel zu machen ist bedeutend einfacher als ein komplexes Programm.
Allerdings ist der Code wirklich nicht leicht überschaubar, was aber auch bei anderen größeren Projekten so ist.
Mein Pong-Klon beispielsweise ist mit ca 1500 Zeilen Code noch eine kleine Variante.

Monger
2007-02-19, 19:36:49
hab mir ma das xna framework angeguckt hmm... dazu brauch man aber c sharp und nicht c++ oder?

Richtig. XNA ist auf C# ausgerichtet.

Matrix316
2007-02-19, 20:27:28
hab mir ma das xna framework angeguckt hmm... dazu brauch man aber c sharp und nicht c++ oder?
Jupp, wobei C# für Einsteiger wohl etwas einfacher als C++ sein dürfte.

Hier gibts z.B. ein Pong Tutorial was weniger als 500 Zeilen hat http://www.evo-x.de/wbb2/thread.php?threadid=152331&sid=1173e59ecff3e8dbe0b7491f94ddc265

darph
2007-02-19, 20:51:12
Wenn du so weit bist, daß du so ein Spiel programmieren kannst, dann sollte die Wahl der Sprache eigentlich das kleinste Problem sein.

Wie weit beherrscht du Thread-Synchronisation?

Expandable
2007-02-19, 21:48:05
Wie weit beherrscht du Thread-Synchronisation?

lol der war gut SCNR ;)

Aber ja, C# wäre sehr zu empfehlen. Damit erledigt sich auch Deine Pointer-auf-Strukturen-Frage im anderen Thread. In C# gibt's sowas nämlich nicht (bzw. es ist versteckt)...

darph
2007-02-19, 21:51:11
lol der war gut SCNR ;)
Ja, ich weiß. Aber spätestens wenn er an die GUI will, wird sich der Threadersteller mit sowas auseinandersetzen müssen, wenn's nicht grad ein Textadventure werden soll.

amida maru
2007-02-19, 21:55:47
naja dann muss ich aber wieder ne neue programmiersprache lernen....
aber wenn ihr alle meint das c# gut für mich ist...

TheGamer
2007-02-19, 23:12:41
naja dann muss ich aber wieder ne neue programmiersprache lernen....
aber wenn ihr alle meint das c# gut für mich ist...

Wieso schon wieder eine lernen, jede Sprache mit der du jetzt anfängst wird die erste sein die du lernst ;)

Falls du dir einbildest irgendwas zu können, geschweige denn C++, irrst du laut deinen anderen Threads gewaltig. Du meinst zwar was zu können, weil du von hier und da ein paar Ausdrücke kennst. Aber C++ kannst du mit Sicherheit nicht und hast du auch nie gelernt. Mein EIndruck ist auch das du es nie lernen wirst zumindest nicht wie du dich gibst hier.



mit arrays oder mit stl?

LOL

Sorry das muss sein. Wenn jemand keinen Plan von nichts hat hab ich ja nichts dagegen aber diese Aussage hat einen Comedypreis oder so verdient :D

Gast
2007-02-19, 23:50:14
was daran so lustig??

RoKo
2007-02-20, 00:42:34
Ja, ich weiß. Aber spätestens wenn er an die GUI will, wird sich der Threadersteller mit sowas auseinandersetzen müssen, wenn's nicht grad ein Textadventure werden soll.
Das ist falsch. Spiele bedienen sich üblicherweise kooperativen Multithreadings - prinzipiell. Bis auf neuere natürlich, um Multi-Core-Prozessoren zu nutzen.

amida maru
2007-02-20, 10:48:58
danke für die entmutigung gamer.... bin eh schon so frustriert nix klappt.... compiler macht net was er soll.... beim mappen nervt mich die dumme vertex kacke usw....

TheGamer
2007-02-20, 11:00:26
danke für die entmutigung gamer.... bin eh schon so frustriert nix klappt.... compiler macht net was er soll.... beim mappen nervt mich die dumme vertex kacke usw....

Der Compiler macht schon das was er soll, nur offensichtlich machst du, aus Mangel an Kenntnissen, nicht das was er will :)

patermatrix
2007-02-20, 13:49:59
danke für die entmutigung gamer....
Du meinst zwar was zu können, weil du von hier und da ein paar Ausdrücke kennst. Aber C++ kannst du mit Sicherheit nicht und hast du auch nie gelernt.
Wo er Recht hat, hat er leider Recht. Du bist immer noch vom Gedanken besessen, du müsstest eine Programmiersprache kennen. Deswegen meinst du auch, bereits etwas zu können. Den entscheidenden Aspekt vergisst du aber: Du sollst keine Sprache beherrschen, du sollst Programmieren können. Dazu gehört noch ziemlich viel mehr als nur eine blosse C++-Syntax. Und von diesem Ziel bist du leider noch ziemlich weit entfernt.

Allein die Tatsache, dass du dich immer noch so an C++ festklammerst, zeigt, dass du vom Programmieren an sich noch nicht viel verstanden hast. Denn für jemanden, der programmieren kann, ist die Sprache (fast) nebensächlich.

darph
2007-02-20, 14:00:53
Eben. Dir will ja hier keiner was böses. Aber es ist nunmal leider so, daß du dich da hoffnungslos übernimmst.

Du kannst vielleicht eine Programmiersprache sprechen. Aber dir fehlen einfach gewisse Programmierkonzepte.

Das ist ähnlich wie mit Poesie: Ich kann Deutsch, und ich weiß, was ein Reim ist. Und ich weiß, was ich mit einem Gedicht, das ich schreiben möchte, ausdrücken möchte.
Wenn ich aber Gedichte schreibe, werden die unter Garantie ziemlich schlecht sein, weil ich von Konzepten wie Distichon oder Dithyrambus nicht den blassesten Schimmer habe. Ich hab schonmal was von einem Jambus gehört. Das war's aber auch schon.

Deshalb werde ich, selbst wenn ich es versuche, kein Gedicht schreiben können, das irgendjemand auch lesen will.


Man will dich nicht entmutigen, aber man will eben auch verhindern, daß du mittendrin völlig frustriert aufgibst, weil dir Grundlagenwissen fehlt.

Wenn du Zeit hast, setz dich mal in ein paar Datenmodellierungs- und Software-Engineerings-Vorlesungen an einer Uni deiner Wahl. Einfach mal reinsetzen und zuhören. Dann bekommst du eine Idee von dem, was wir hier meinen. (Ja, ich weiß, was einige hier von traditionellen Software-Engineering halten. Aber man sollte die Regeln kennen, bevor man sich über sie hinweg setzt. X-D)

TheGamer
2007-02-20, 15:01:47
Eben. Dir will ja hier keiner was böses

Richtig, ich will ihm auf keinen Fall was böses. Aber durch sein nicht verstehen wollen muss ich ein wenig unsanftere Töne anstimmen.

Eine Sprache zu verstehen oder zu können hat nichts mit programmieren zu tun. Zum "programmieren können" braucht es keine Sprache. Die Sprache ist nur ein Mittel um das programmierte umzusetzen.

Nochmal an den Threadstartet, mit dieser Einstellung wirst du niemals ums mit deinen Worten zu sagen "programmieren können".

amida maru
2007-02-20, 20:14:04
und was soll ich deiner meinng nach tun gamer?

Alpha@work
2007-02-20, 20:24:13
und was soll ich deiner meinng nach tun gamer?

Als allererstes, deine Erwartungen zurückschrauben.

EcHo
2007-02-21, 10:51:23
Entweder du gehst ein kleineres Projekt an, besorgst dir noch wesentlich mehr Leute (die auch durschhalten!) oder nimmst so etwas wie einen "RPG-Maker /RPG SDK".

amida maru
2007-02-21, 11:02:58
rpg ist dochn kleines projekt?

TheGamer
2007-02-21, 11:17:50
rpg ist dochn kleines projekt?

Sag mal willst du dich selber verarschen oder nur uns?!?

Ein RPG ist mitunter eines der komplexesten Genres die es gibt.

EcHo
2007-02-21, 11:29:14
Du kannst ja mit so etwas wie Nethack anfangen (http://www.nethack.org/).
Die Frage ist halt, wie man das Projekt gestaltet. Trotzdem würde ich mich erteinmal in das Framework einarbeitn und so etwas wie Bomerman oder Tetris versuchen - sprich Einfache grafiken zeichnen, bewegen, Eingabe, Netzwerk-Geschichten, Sound, usw.

Das Problem an Spielen ist eigentlich, dass sie fast alle bereiche Streifen und man einen haufen Content braucht.

Mach einmal 10 Gegner, samt jeder Animation aus jeder Richtung. Wenn es nicht gerade Vierecke sind brauchst du ewig.
Kauf dir einmal ein Buch dieser Richtung:
http://www.amazon.de/3D-Spieleprogrammierung-mit-DirectX-9-C%2B%2B/dp/3446405968/sr=8-1/qid=1172053623/ref=pd_ka_1/028-9770297-8738101?ie=UTF8&s=books

Danach wirst du sehen, was wir meinen! Selbst nach knapp 900 Seiten ast du jedes Kapitel nur gestreift!

TheGamer
2007-02-21, 11:39:26
Du kannst ja mit so etwas wie Nethack anfangen (http://www.nethack.org/) (http://www.nethack.org/%29).
Die Frage ist halt, wie man das Projekt gestaltet. Trotzdem würde ich mich erteinmal in das Framework einarbeitn und so etwas wie Bomerman oder Tetris versuchen - sprich Einfache grafiken zeichnen, bewegen, Eingabe, Netzwerk-Geschichten, Sound, usw.

Das Problem an Spielen ist eigentlich, dass sie fast alle bereiche Streifen und man einen haufen Content braucht.

Mach einmal 10 Gegner, samt jeder Animation aus jeder Richtung. Wenn es nicht gerade Vierecke sind brauchst du ewig.
Kauf dir einmal ein Buch dieser Richtung:
http://www.amazon.de/3D-Spieleprogrammierung-mit-DirectX-9-C%2B%2B/dp/3446405968/sr=8-1/qid=1172053623/ref=pd_ka_1/028-9770297-8738101?ie=UTF8&s=books

Danach wirst du sehen, was wir meinen! Selbst nach knapp 900 Seiten ast du jedes Kapitel nur gestreift!

Das Buch nützt im nichts. Er sollte zuerst mal wissen um was es geht, Theorie von der Materie erlernen. Aber kein Buch lesen das Wissen zu C++ voraussetzt. Denn dieses Wissen hat er schlicht und ergreifend nicht und wird es mit der momentanen Einstellung bzw. vorgehensweise auch nie erhalten.

Er muss Konzepte beherrschen und diese Konzepte an kleinen Testapplikation lernen und damit Erfahrung sammeln, sowie fähig sein nach dem 3 Programm alles zu verwerfen und neue Ansätze zu testen. Natürlich gibt es Leute die sowas schneller oder weniger schnell begreift, aber wenn sich der Threadstarter bei meinem Vorschlag auch so gibt wie er es hier tut wird das eine verdammt komplexe Knochenarbeit für ihn werden. Ansonsten wird er zu nichts kommen und niemals was erreichen bzw. sein vermeintliches Pseudowissen das er glaubt zu haben wird ihn in den Frust treiben und in einm Aufgeben resultieren.

DraconiX
2007-02-21, 11:45:13
Wenn ich alleine an die Komplexität der Path Findung denke... ui ui ui

Monger
2007-02-21, 11:57:26
Ich sag einfach mal: ein "kleines" Projekt dauert nicht länger als zwei Wochen.

So einen Zeitraum kann man noch gut überblicken, und wenn man es dann in den Sand setzt, geht nicht gleich die Welt unter. Trotzdem ist es lang genug, um mal die Problematik von etwas größeren Projekten wittern zu können. Und man KANN (wenn man fit ist) durchaus was sinnvolles erreichen.

Ich bastel z.B. mir gerade ein kleines Tool, was mir ZIP Archive entpackt und in einer bestimmten Reihenfolge wieder zusammenbastelt, weil ich das ansonsten per Hand tun müsste. Das ist nix großes, aber ich spar damit einiges an Zeit.

amida maru
2007-02-21, 17:17:15
gamer... ein 2d rpg wie man mit rpgmaker macht ist doch wohl nich schwer....naja klar für mich schon aber ich hab n paar freunde aus meiner liste die sind ja 3d programmierer und sonstiges die sagen auch ein 2d rpg ist net schwer.... n 3d rpg wie ragnarok oder das ist ja was anderes...

Markus89
2007-02-21, 18:03:06
Ich will dir ja nicht zu nahe treten, aber wenn du im anderen Thead nichtmal weißt, dass 0 false, und dann behauptest ein 2d rpg ist leicht...

amida maru
2007-02-21, 18:04:07
hab grad n funktionierendes tic tac toe geproggt^^
endlich ma was nicht frustrierendes

Kinman
2007-02-21, 23:15:33
Das Programmieren beim 2D RPG ist nicht so schwer, nur je nach Umfang halt viel Arbeit. Aber der wirklich große Teil ist das Erstellen von Content.

EDIT: Bau in dein TicTacToe eine AI ein, die von Dir lernt, bzw. die Fallen erkennt, die sie bereits meistern hat müssen. Eventuell mach mal ein Vier-Gewinnt. Da ist noch mehr in diese Richtung drin. Vor allem macht (imho) AI Programmierung Spass

mfg Kinman

amida maru
2007-02-22, 11:21:26
was ist AI programmierung?

Gast
2007-02-22, 11:23:51
Die Programmierung künstlicher Intelligenz (AI = artificial intelligence).
Ein sehr umfangreiches, aber auch interessante und zukunftsträchtiges Gebiet. ;)

amida maru
2007-02-22, 12:34:29
wo kann man das lernen?

EcHo
2007-02-22, 12:45:57
Studium, Buch, Inet...

EcHo
2007-02-22, 12:48:41
Das Buch nützt im nichts. Er sollte zuerst mal wissen um was es geht, Theorie von der Materie erlernen. Aber kein Buch lesen das Wissen zu C++ voraussetzt. Denn dieses Wissen hat er schlicht und ergreifend nicht und wird es mit der momentanen Einstellung bzw. vorgehensweise auch nie erhalten.

Er muss Konzepte beherrschen und diese Konzepte an kleinen Testapplikation lernen und damit Erfahrung sammeln, sowie fähig sein nach dem 3 Programm alles zu verwerfen und neue Ansätze zu testen. Natürlich gibt es Leute die sowas schneller oder weniger schnell begreift, aber wenn sich der Threadstarter bei meinem Vorschlag auch so gibt wie er es hier tut wird das eine verdammt komplexe Knochenarbeit für ihn werden. Ansonsten wird er zu nichts kommen und niemals was erreichen bzw. sein vermeintliches Pseudowissen das er glaubt zu haben wird ihn in den Frust treiben und in einm Aufgeben resultieren.


Ich kenne ihn jetzt nicht, dachte er hätte Ahnung von C++. (Wollte ja nicht C# lernen, weil er es kann?)

Das der Rest erst einmal gegben sein muss, ist richtig. Trotzdem halte ich dieses Buch nicht für sooo schlecht, einfach weil es auf alle Bereich mal inen Einstieg bietet. War mehr als Leitfaden gedacht....

rotalever
2007-02-22, 14:53:46
Angenommen, die Programmiererfahrung ist schon da und ein RPG wäre möglich. Warum nicht dann direkt in 3D sondern dieses 2D-zeug machen. Meiner Meinung nach ist es leichter eine Anwendung, die einen dreidimensionalen Vorgang wiederspiegelt auch wirklich in 3D zu programmieren (OpenGL / DX), als dies aufwändig in 2D zu machen. Zudem ist das die Zukunft. Ich wüsste keine Stelle, wo 2D nun wirklich leichter wäre. Man bekommt eher Probleme mit "Hidden-Lines" / "Hidden-Object" Algorithmen, bei 3D übernimmt sowas zunächst einmal die Hardware.

In diesem Fall ist es natürlich so, dass es vll. wirklich sinnvoller ist, erstmal ein paar einfache Programme zu schreiben. Auch eine AI/KI muss man ja noch nicht unbedingt machen. Eher mal etwas nicht grafisches. Auch wenn das langweilig klingt, Sortieralgorithmen verstehen und implementieren kann auch manchmal ganz nett sein. Und in Spielen werden diese sowieso benötigt! Da gehen die Programme schneller von der Hand, da man keine Grafikausgaben programmieren muss, trotzdem lernt man dabei sicherlich einiges an Programmiererfahrung dazu.

TheGamer
2007-02-22, 15:25:32
Ich kenne ihn jetzt nicht, dachte er hätte Ahnung von C++. (Wollte ja nicht C# lernen, weil er es kann?)

Das er es nicht kann lässt sich aus diesem Thread nicht erschliessen, du musst alle anderen Threads anschauen, dann sieht man an den Fragen wies um den Wissensstand steht. Fragen ala "Ein Flugzeug kann ja fliegen, warum kann ein UBoot nicht fliegen?"

Er kann sicher ein paar Dinge, wie sich ja am Tic Tac Toe herausgestellt. Freut mich für den Threadstarter. Poste das Spiel mal, wollte schon lange mal wieder Tic Tac Toe. Mit was ist das nun geschrieben?

Jetzt eben beissen und das was da ist vorantreiben und neue Konzept einverleiben (lol schwules Wort) z.B eben wie oben vorgeschlagen mit AI.

ShadowXX
2007-02-22, 16:11:33
Angenommen, die Programmiererfahrung ist schon da und ein RPG wäre möglich. Warum nicht dann direkt in 3D sondern dieses 2D-zeug machen. Meiner Meinung nach ist es leichter eine Anwendung, die einen dreidimensionalen Vorgang wiederspiegelt auch wirklich in 3D zu programmieren (OpenGL / DX), als dies aufwändig in 2D zu machen. Zudem ist das die Zukunft. Ich wüsste keine Stelle, wo 2D nun wirklich leichter wäre. Man bekommt eher Probleme mit "Hidden-Lines" / "Hidden-Object" Algorithmen, bei 3D übernimmt sowas zunächst einmal die Hardware.

Ich glaube es ging mehr um eine RPG in draufsicht, so wie Hack, Temple of Apsahi (<-definitiv falsch geschrieben) oder von mir aus auch Zela (NES-Version).

Weniger um einen Software-Rasterizer.....

rotalever
2007-02-22, 16:18:25
Weniger um einen Software-Rasterizer.....
Meinte ich auch nicht! :P
Ich hatte mir jetzt eher sowas drunter vorgestellt wie Diablo2 oä. Da hat man ja Schrägansicht, die meiner Meinung nach schwieriger zu machen ist... Zudem muss man alle Figuren etc. Vorrendern. Bei reiner Draufsicht ist das natürlich einfacher. Allerdings hat man da immer noch das Problem mit Innenräumen!

amida maru
2007-02-22, 20:31:01
Hey hier ist der code von dem tic tac toe


#include <iostream>
#include <windows.h>
using namespace std;


#define n endl


void draw_field(char *field);
char key_input(char *field);
bool winner (char *field);

int main (void)
{
SetConsoleTitleW (L"Tic Tac Toe");

char input = ' ';

bool quit = true;


char field[10];

for (int i = 0; i < 10; ++i)
field[i] = ' ';


while(input != 'b')
{
draw_field(field);

quit = winner(field);

if(!quit)
break;

cout << n << n;
cout <<"Geben Sie eine Zahl zwischen 1 und 9 ein, um ein Feld auszuwählen"<<n;
cout <<"Oder geben sie 'b' ein um das programm zu beenden: ";
input = key_input(field);

cin.sync();
}








return 0;
}





void draw_field(char *field)
{
system ("cls");

cout << n << n << n;

cout << " " << field[1] << " | " << field[2] << " | " << field[3] << n;
cout << " ---|---|---" << n;
cout << " " << field[4] << " | " << field[5] << " | " << field[6] << n;
cout << " ---|---|---" << n;
cout << " " << field[7] << " | " << field[8] << " | " << field[9] << n;


}







char key_input (char *field)
{
char input = ' ';

char sign = ' ';

static bool player_1 = true;


if (player_1)
{
cout << n << n << "Spieler 1: ";
sign = 'X';
}
else
{

cout << n << n << "Spieler 2: ";
sign = 'O';
}



cin >> input;


if ((input <= '0') || (input > '9') && input != 'q')
{
cin.sync ();
cout << n << "Falsche Eingabe!";
cin.get ();
}




if ((input > '0') && (input <= '9'))
{

if (field[input - 48] == 'X' ||
field[input - 48] == 'O')
{

cin.sync ();
cout << n << "Dieses Feld ist bereits belegt!";
cin.get ();
}
else
{
field[input - 48] = sign;
player_1 = !player_1;
}
}



return input;
}




bool winner (char *field)
{

if ((field[1] == 'X') && (field[2] == 'X') && (field[3] == 'X') ||
(field[4] == 'X') && (field[5] == 'X') && (field[6] == 'X') ||
(field[7] == 'X') && (field[8] == 'X') && (field[9] == 'X') ||
(field[1] == 'X') && (field[4] == 'X') && (field[7] == 'X') ||
(field[2] == 'X') && (field[5] == 'X') && (field[8] == 'X') ||
(field[3] == 'X') && (field[6] == 'X') && (field[9] == 'X') ||
(field[1] == 'X') && (field[5] == 'X') && (field[9] == 'X') ||
(field[3] == 'X') && (field[5] == 'X') && (field[7] == 'X'))
{
cout << n << n << "Spieler 1 hat gewonnen!";
cin.sync ();
cin.get ();

return false;
}

else if ((field[1] == 'O') && (field[2] == 'O') && (field[3] == 'O') ||
(field[4] == 'O') && (field[5] == 'O') && (field[6] == 'O') ||
(field[7] == 'O') && (field[8] == 'O') && (field[9] == 'O') ||
(field[1] == 'O') && (field[4] == 'O') && (field[7] == 'O') ||
(field[2] == 'O') && (field[5] == 'O') && (field[8] == 'O') ||
(field[3] == 'O') && (field[6] == 'O') && (field[9] == 'O') ||
(field[1] == 'O') && (field[5] == 'O') && (field[9] == 'O') ||
(field[3] == 'O') && (field[5] == 'O') && (field[7] == 'O'))
{
cout << n << n << "Spieler 2 hat gewonnen!";
cin.sync ();
cin.get ();

return false;
}


else if ((field[1] != ' ') && (field[2] != ' ') && (field[3] != ' ') &&
(field[4] != ' ') && (field[5] != ' ') && (field[6] != ' ') &&
(field[7] != ' ') && (field[8] != ' ') && (field[9] != ' '))
{
cout << n << n << "Unentschieden!";
cin.sync ();
cin.get ();

return false;
}

return true;
}

Gast
2007-02-22, 20:55:15
überleg mal ob du solche Abfragen wie
field[1] == 'X') && (field[2] == 'X') && (field[3] == 'X')

nicht effektiver gestalten könntest durch for schleifen und eine geschickte
Parameterübergabe.

del_4901
2007-02-23, 00:59:17
#define n endl

ist pHöhze!

amida maru
2007-02-23, 12:08:21
jaja ;D kein bock immer endl zu schreiben :P

@ gast ich hab keine ahnung wie aber schaut doch cool aus die gewinnabfrage :P

Gast
2007-02-23, 14:16:25
jaja ;D kein bock immer endl zu schreiben :P

@ gast ich hab keine ahnung wie aber schaut doch cool aus die gewinnabfrage :P

Glaubst du das der Code mit der "coolen" Gewinnabfrage auch gut wartbar ist, falls du das Spielfeld mal vergrößern willst?

TheGamer
2007-02-23, 15:36:01
Glaubst du das der Code mit der "coolen" Gewinnabfrage auch gut wartbar ist, falls du das Spielfeld mal vergrößern willst?

Ach das geht schon, der Threadstarter wird es dir beweisen.


@amida maru

Bitte mach mir ein Tic Tac Toe das ein Spielfeld von 10x10 hat, wohlgemerkt basierend auf deinem Code


Oh ups, gehts etwa schwer auf Basis deines Codes? Schade!


Siehst du das meinten wir oben dir fehlen noch ein paar Dinge, wenn diese nicht fehlen würden wäre der Code nicht so "statisch" (evt falsches Wort)

Was du jetzt machen musst und den Mut dazu besitzen musst ist, dir selbst zu sagen das was du gemacht hast ist scheisse und ich muss das ganze überdenken und von vorne beginnen.

patermatrix
2007-02-23, 15:48:55
Was du jetzt machen musst und den Mut dazu besitzen musst ist, dir selbst zu sagen das was du gemacht hast ist scheisse und ich muss das ganze überdenken und von vorne beginnen.
[/B]
Nanana. so würd ich das jetzt auch nicht ausdrücken. Solche Dinge gehören nun mal dazu, wenn man Programmieren lernt. Ich glaube kaum, dass dein erstes Programm nicht auch solche "Fehler" drin hatte. :rolleyes:

Also wähle doch deine Worte in Zukunft etwas besonnener. Aus irgendeinem rätselhaften Grund ist der Mensch nämlich lernfähig, und aus deinem Kommentar lernt der Threadhersteller leider gar nichts. :P

TheGamer
2007-02-23, 17:42:30
Nanana. so würd ich das jetzt auch nicht ausdrücken. Solche Dinge gehören nun mal dazu, wenn man Programmieren lernt. Ich glaube kaum, dass dein erstes Programm nicht auch solche "Fehler" drin hatte. :rolleyes:

Also wähle doch deine Worte in Zukunft etwas besonnener. Aus irgendeinem rätselhaften Grund ist der Mensch nämlich lernfähig, und aus deinem Kommentar lernt der Threadhersteller leider gar nichts. :P

Es passt vollkommen was ich sagte und wie ich es sagte. Das ich am Anfang nicht auch meine lustigen Codedinge hatte habe ich nirgendwo (aber sowas hab oder hätte selbst ich nicht gemacht, aber wie du sagst jeder ist da anderst)

Ich bin jedoch genauso mit dem Ton den ich gewählt habe oben gegen mich selbst vorgegangen. Ich habe den gleich Ton innerlich für meine Fehler angewandt damals.

Ich war und bin immer noch mein härtester Kritiker. Ich bin genau so an die Sache gegangen die du tonmässig erwähnt hast. Ich hab aus Perofmrancegründen oder Estik mehrfach Code verworfen weil ich mir selber gedacht habe, was ich nun für eine Scheisse geschrieben habe. Heuzutage handhabe ich das exakt gleich bei Performanceoptimiereungen etc. Nur so kommt man weiter.

Ich hoffe mal dar Threadstartet versteht den Post so wie er gemeint war, nämlich nicht als Kritik sondern als Ansporn den ersten Versuch aus genannten Gründen zu verschmeissen sich an den Haaren zu packen und ihn frisch zu machen.

Also bitte in Zukunft darüber nachdenken bevor du jemanden eine spezielle Ausdrucksart ankreidest. Auch hier gilt Denken -> Schlucken -> Sprechen/Schreiben

amida maru
2007-02-23, 19:26:37
ja und wie soll ich die abfrage dann bitteschön machen... warscheinlich ist es in der forschleife voll unübersichtlich

Gast
2007-02-23, 20:44:31
warum bist du der Meinung das die for Schleife unübersichtlich sein soll?
Kleines Beispiel:

bool check(char mark)
{
for(int i=0;i<4;i++)
{
if(field[i]!=mark)
{
return false;
}
}
}


Meinst du nicht das mit dieser Methode die Erweiterbarkeit einfacher ist?

Kinman
2007-02-23, 20:44:50
ja und wie soll ich die abfrage dann bitteschön machen... warscheinlich ist es in der forschleife voll unübersichtlich

wenn du es richtig machst, dann definierst du einmal im ganzen spiel die "brettgröße" in x- un d y-Richtung und alles passt sich darauf an -> Übersichtlich

Wenn Du das hier nicht unbedingt als sinnvoll siehst, ein anderes praktikables Beispiel:
Beiträge pro Seite im Forum:
Sind zwar fast keine Berechnungen dafür notwendig, aber zweimal muss es bedacht werden. Einmal beim anzeigen der Beiträge und einmal beim erstellen der Links für die Seiten.

warum bist du der Meinung das die for Schleife unübersichtlich sein soll?
Kleines Beispiel:

bool check(char mark)
{
for(int i=0;i<4;i++)
{
if(field[i]!=mark)
{
return false;
}
}
}


Meinst du nicht das mit dieser Methode die Erweiterbarkeit einfacher ist?


Damit ist aber auch wieder nur eine Zeile und nicht das ganze Spielfeld überprüft..


mfg Kinman

EDIT: Selbiges wie oben, aber imho besser formuliert

bool check(char mark)
{
for(int i=0;i<4;i++) if(field[i]==mark) return true;
return false;
}

rotalever
2007-02-23, 21:07:02
Kinman, deine Funktion ist aber anders in ihrem Verhalten, als die von "Gast"... Das Verhalten der Funk, könnte sogar als Falsch betrachtet werden.

Gast
2007-02-23, 21:11:49
w


Damit ist aber auch wieder nur eine Zeile und nicht das ganze Spielfeld überprüft..
EDIT: Selbiges wie oben, aber imho besser formuliert

bool check(char mark)
{
for(int i=0;i<4;i++) if(field[i]==mark) return true;
return false;
}


Jo das ist mir durchaus bewusst, aber ich wollte ihm die Lösung selbst rausfinden lassen und nur ein Beispiel für eine mögliche Vereinfacherung der Überprüfung geben.

Matrix316
2007-02-23, 21:15:13
Jupp, so wärs besser :



bool check(char mark)
{
for(int i=0;i<4;i++) if(field[i]!=mark) return false;
return true;
}
(wobei beim ersten auch ein return fehlt ;))

Wobei ich diesen Code wo alles in einer Zeile steht nicht gerade übersichtlich finde, gerade bei Fehlersuche und so...

rotalever
2007-02-23, 21:18:48
Ich denke es ist vor allem sinnvoll sich nicht immer abzuwechseln. Manchmal nach dem if eine "{...}" dann mal wieder keine Klammern. Wenn man konsequent immer den gleichen Stil verfolgt egal, ob man dadurch 1,2 Zeilen mehr schreibt, werden die Programme übersichtlicher.