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

1

02.04.2012, 21:50

Ascii-Rpg

Hey Community,
ich habe vorgestern mit einem kleinem "RPG" in der Konsole angefangen.
Zurzeit sind folgende Features vorhanden:
-Sidescrolling
-Kein Flimmern, dafür etwas "schwammigerer" Spielablauf
-Einfache Objektplatzierung auf der Map (Bäume, Wasser, Weg, Mauer und Items)
-Inventar(nur zur Aufnahme von Objekte)
Steuerung mit WASD und öffnen bzw. schliessen des Inventars erfolgt mit "I"
Das Spiel wird natürlich noch weiter ausgebaut, aber ich wollte erstmal schauen, ob ich auf dem richtigen Weg so bin.
1. Nein, ich will erstmal in der Konsole entwickeln und nicht "grafisch".
2. Ja, ich benutze Dev-C++ und zwar aus dem Grund, da wir es in der Schule benutzen und es völlig ausreicht bisjetzt.
Link zum Download
Quellcode ist dabei, also fände ich es gut wenn ihr mir dazu Feedback geben könntet.

Freue mich auf eure Antworten!

2

02.04.2012, 23:39

Sieht schon mal gut aus, mir gefällt es auch, dass du dich bemühst, objektorientiert zu programmieren. Bei Text ist es halt immer cool, wenn es Cross-Platform ist, leider hier nicht der Fall, aber ich verlange dir mal nicht zu viel ab. ;) Was du jedoch einbauen solltest sind "Keystates". Das heißt: Wenn eine Taste gedrückt wurde, dann wird ein boolescher Wert auf "true" gesetzt. Erst wenn die Taste losgelassen wird, wird er auf "false" gesetzt. So verhinderst du, dass sich die Figur bei gedrückter Taste einmal kurz bewegt, dann wartet und schließlich flüssig in eine Richtung läuft.
Ansonsten: Weiter so! :thumbup:

3

03.04.2012, 00:10

Okay, über Cross-Platform hab ich mir noch garkeine Gedanken gemacht ;)
Wegen den Keystates: also soll die Spielfigur sich nur ein Schritt bewegen egal wie lange man auf die Taste drückt?
Oder soll ich es lieber so wie in anderen Spielen dieser Art machen, und der Spieler soll sich gleich flüssig bewegen?

Ich danke dir für dein Feedback ;)

4

03.04.2012, 07:35

Cross Plattform wäre schon ziemlich cool. Es gibt auch hier im Forum Leute die ausschlieslich Linux verwenden. mich eingeschlossen :)

5

03.04.2012, 10:25

Ist das schwierig mit dem CrossPlatform?
Was müsste man da machen?

6

03.04.2012, 10:49

Ansich kannst du C++ unter jedem OS Compilieren. Nur gibt es einige Biliotheken nicht für jedes Betriebssystem, also zum Beispiel kein DirectX für Linux.
Aber es gibt zahlreiche Bibliotheken für alle möglichen Zwecke, die Crossplattform sind, so dass du da keine Probleme bekommst.
Ansonsten gibt es noch kleinere Unterschiede, zum Beispiel im Dateisystem (Linux unterscheidet zwischen Groß/kleinschreibung, Windows nicht), die Ärger machen können. Aber ansich sind das alles recht kleine Hürden, wenn man von Anfang an die richtigen Bibliotheken benutzt.
Lieber dumm fragen, als dumm bleiben!

7

03.04.2012, 11:21

Also ist die <windows.h> nicht wirkllich geeingnet oder?? :D
Gibts es da alternativen?
Was ich aufjedefall bräuchte sind halt Befehle um die Farbe zu ändern und das Fenster zu leeren.

8

03.04.2012, 12:12

Als Lösung für´s Löschen wüsste ich jetzt nur system. Jedoch ist das ja nicht sehr elegant, conio.h mit clrscr() ist auch umstritten.
Du könntest die Eingaben auch mit printf("\f") nach hinten schieben. Gelöscht werden sie aber nicht.
Für die Farbe auf anderen Systemen müsstest du etwas verwenden, was ich nicht kenne. Sorry :fie:
Vielleicht half ich ja trotzdem. =]

MfG
Check

9

03.04.2012, 12:36

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <unistd.h>
void clear() {
#ifdef _WIN32 || _WIN64
    printf("\033[2J\033[1;1H\033[m");
#elif __linux__
    write(1,"\E[H\E[2J",7);
#endif
}

Vielleicht funktioniert es xD

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »C++-Coder« (03.04.2012, 12:46)


Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

10

03.04.2012, 12:46

Plattformunabhängigkeit ist schwierig, wenn deine Befehle auf Funktionen deines Terminals zugreifen. Du könntest auch eigene Funktionen erstellen, die dann je nach OS die entsprechende Operation aufrufen, die bspw. die Farbe ändert. Für Unix-System würde sich da dann bspw. ncurses. So weit ich weiß, ist das aber eben nur für UNIX-System gedacht.

Werbeanzeige