FAQ  •  Registrieren  •  Anmelden

Einfaches Textadventure in C++

<<

matze79

DOS-Kenner

Beiträge: 432

Registriert: So 9. Sep 2012, 20:48

Beitrag Fr 14. Dez 2012, 17:16

Einfaches Textadventure in C++

Hi,
ich bastel momentan ein wenig in C++ und zwar an einen einfachen Textadventure:

  Code:
#include <iostream>
#include <string>

using namespace std;

int main(){
string eingabe;
int x,y;
x=5;
y=5;

while(1){

cout << "Postion: " << x << "," << y  << " which direction ? >";
getline(cin,eingabe);

if ( eingabe == "north" ) {
cout << "heading north\n";
x = x++;
}
else if ( eingabe == "south" ) {
cout << "heading south\n";
x = x--;
}
else if ( eingabe == "west" ) {
cout << "heading west\n";
y = y--;
}
else if ( eingabe == "east" ) {
cout << "heading east\n";
y = y++;
}
else if ( eingabe == "help" ) {
cout << "valid commands: east, west, south, north\n";
}

else {
cout << "input error\n"; }

}
}


Nun möchte ich eine Art Karte einbinden in etwa so:
das müsste dann quasi mit int map[5][5] funktionieren.

  Code:
         y
   1 1 1 1 1 1                   1 = Wand
   1 0 0 2 0 1                   2 = Baum
 x 1 0 0 0 0 1                   3 = Wasser
   1 3 0 4 0 1                   4 = Schlüssel
   1 1 1 1 1 1


Nur steh ich grad irgendwie auf den Schlauch wie ich mit meinen x,y kordinaten nun den Wert aus der jeweiligen zeile/spalte auslese.
Evtl. gibts auch einen besseren Weg.
Bin noch ganz am Anfang mit C++.
Früher hab ich mit Quick Basic paar Sachen gemacht und schon mal mit Turbo C rumgespielt aber das ist schon lange her.

Gruss Matze
<<

Dosenware

Benutzeravatar

DOS-Übermensch

Beiträge: 1119

Registriert: Mi 24. Mai 2006, 20:29

Beitrag Fr 14. Dez 2012, 17:30

Re: Einfaches Textadventure in C++

matze79 hat geschrieben:Nur steh ich grad irgendwie auf den Schlauch wie ich mit meinen x,y kordinaten nun den Wert aus der jeweiligen zeile/spalte auslese.


Willst du den Bildschirmspeicher auslesen?
Scrollt deine Karte?

in jedem Fall würde ich das Array vom Bildschirmspeicher trennen, dem Spieler startkoordinaten verpassen und diese je nach richtungswahl inc/decrementieren.

eine Scrollende Karte ließe sich dann einfach realisieren indem du den Bereich Spielerpos_XY-2 bis Spielerpos_XY+2 deines Maparrays nach jedem Schritt ausliest und an einer festen Stelle (z.b. X=70-75; Y=20-25) anzeigst.

Oder ist die C Syntax das Problem?
http://home.fhtw-berlin.de/~junghans/cr ... rrays.html ganz unten.

map[1] würde nach deinem Bleistift 100201 ergeben
map[1][1] ergibt 0
map[1][3] ergibt 2
<<

Julian

Windows 3.11-Benutzer

Beiträge: 6

Registriert: Di 4. Dez 2012, 23:53

Beitrag Fr 14. Dez 2012, 17:34

Re: Einfaches Textadventure in C++

C ist bei mir schon ein paar Semester her, C++ konnte ich noch nie. Ich würde das so machen (ungetestet und wahrscheinlich so nicht übersetzbar)
  Code:
[...]
void loadMap(int [][5]map)
{
/* Map aus Datei laden oder hardcoded map schreiben */
for(int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
map[i][j] = 2; /* 5x5 Map mit Bäumen füllen */
}
}
}

int main()
{
string eingabe;
int x = 5,y = 5;
int[5][5] map;
loadMap(map);
/* Eingabe auslesen, auswerten und ggf. ein Feld weiter rücken */
[...]
switch (map[x][y])
{
case 1:
//mach was
break;
case 2:
//mach was
break;
case 3:
//mach was
return;
case 4:
//mach was
break;
case default:
//sollte nicht eintreten
break;
}
}
Wenn es dir allerdings um das Adevnture und nicht um die Engine bei der Sache geht, könntest du dir z.B. mal ZIL anschauen. Ansonsten wirst du früher oder später nicht drumrum kommen einen echten parser schreiben zu müssen.

Gruß Julian
//edit: ich bin hier nur auf den Syntax eingegangen. Dosenware hat recht, die Fragestellung ist nicht ganz eindeutig.
<<

matze79

DOS-Kenner

Beiträge: 432

Registriert: So 9. Sep 2012, 20:48

Beitrag Sa 15. Dez 2012, 13:40

Re: Einfaches Textadventure in C++

Ich mach mir vorerst eigentlich gar keine Gedanken über Grafik, Scrolling, Sound und solche Dinge
vieleicht kennt ja jemand das kleine Spiel adventure oder roque wollte mal versuchen etwas in der Richtung zu programmieren, einfach und simpel, nur Text basiert.

Ich muss nun halt meine x,y Koordinaten auf das array anwenden um festzustellen, ist ein Zug möglich ? ist dort eine Wand ? und so weiter :)

Nur da ich kaum eine Ahnung von C++ habe wird das wohl erstmal andauern bis alles so wird wie ich will.
Bis der Aha-Effekt eintritt, so geht das.

Nebenbei möchte ich erreichen das ich das Programm letztendlich auch auf Windows, Linux, BSD, Dos übersetzen kann.

Sobald alles mal im Textmode laueft kann man sich ja Gedanken über Grafik machen.
Aber momentan hängts noch an den einfachsten Sachen.

Gruss Matze
<<

matze79

DOS-Kenner

Beiträge: 432

Registriert: So 9. Sep 2012, 20:48

Beitrag So 16. Dez 2012, 21:03

Re: Einfaches Textadventure in C++

So, soweit hat alles geklappt :) Danke.

Jetzt versuch ich mich mal mit ncurses bzw pdcurses.

Gruss Matze

Zurück zu Programmierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Deutsche Übersetzung durch phpBB.de