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

ugoessner

Frischling

  • »ugoessner« ist der Autor dieses Themas

Beiträge: 52

Wohnort: Wedemark OT-Mellendorf

Beruf: Systeminformatiker

  • Private Nachricht senden

1

14.08.2008, 02:53

Console in das Spiel mit einbauen

Hallo Leute,

Es müsste doch eigentlich möglich sein, die Console während des Spieles zu benutzen um eine Eingabevariable abzufragen.

Ich frage deshalb, weil es (denke ich mal) einfacher ist, als mit der SDL_ttf rumzufuhrwerken.

Ich stelle mir das mal so vor:
Es gibt ja in der SDL die sogenannten Threads.
Ein Thread ist für den Spielablauf zuständig und der andere für die Console.
Jedesmal, wenn eine bestimmte Taste gedrückt wird, wird der Spielethread gestoppt und der andere wird genau einmal durchlaufen, wo die Console hervorgehoben und zu einer Eingabe aufgefordert wird.

Was meint ihr dazu? :)


EDIT by dot: Tippfehler einigermaßen entfernt
#define __miniMAL 0x00

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

2

14.08.2008, 10:53

Multithreading ist immer ziemlich fehleranfällig.
Und wenn du mal genauer über dein Problem nachdenkst solltest du merken, dass du hier Threads überhaupt nicht brauchst.

Du willst den Spielethread stoppen und dann den Konsolenthread starten.. wozu brauchst du dann Threads? Threads werden benötigt wenn man Dinge mehr oder weniger parallel ausführen will. Und hier machst du nix paralleles.

Die einfachste Lösung eine Konsole einzubauen wäre z.b. eine Bedingung in deiner Spielschleife, welche die Konsole anzeigt oder eben nicht.

3

14.08.2008, 11:46

Also, ich habe immer die Standard konsole nebenbei laufen und das Spiel dann im Fenster modus. Man kann dann ganz normal mit cout Sachen schreiben, ist sehr praktisch, weil ich dann ne schnelle und einfache Möglichkeit habe, mir alle Fehler anzeigen zu lassen.
Mit cin müsste man auch Sachen eingeben können, da cin dann blockiert.

Und da du cout und cin auf andere Streams umleiten kannst, kannst du später mit sehr wenig aufwand eine eigene Konsole integrieren, so wie man sie aus HL kennt.
Lieber dumm fragen, als dumm bleiben!

ugoessner

Frischling

  • »ugoessner« ist der Autor dieses Themas

Beiträge: 52

Wohnort: Wedemark OT-Mellendorf

Beruf: Systeminformatiker

  • Private Nachricht senden

4

14.08.2008, 21:57

Ich habe jetzt mal die main-Datei so geschrieben:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include "Framework.h"

using namespace std;

int main(int argc, char *argv[])
{
  char test[100];
  CFramework Framework;

  Framework.Init(1280, 1024, 32, true);
  cin.getline(test, 100);
  Framework.Quit();

  return false;
}


Beim ausführen wird nur ein Fenster im Vollbildmodus erzeugt.
Was muss ich noch mit in den Quelltext schreiben, damit ich zum Consolenfenster und zurück komme?
#define __miniMAL 0x00

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

5

14.08.2008, 22:24

kp was CFramework::Init() macht, aber ist der letzte Parameter Vollbild? Das würde sich mit der Konsole nicht gut vertragen, mach Fenster ;)

Tipp am Rande: Wenn du mit C++ programmierst, schau dir mal std::string an. Damit machst du wesentlich weniger Fehler gegenüber char*, gerade als Anfänger!

Edit: Ah, ist Vollbild. Geht so als nicht ;) Im Fenster wirds gehen. Aber keine Ahnung ob das Konsolenfenster dann Fokus hat, eher nicht.

6

15.08.2008, 12:43

Wenn du in der Konsole Variablen abfragen willst, siehst du sie dann? Nein, deine Vollbildanwendung verdeckt ja alles. Deswegen gibt es meist eine in-game Console ala Quake und meist mit ^ zu oeffnen. Da dann deine Anzeige nur Pixel kennt, musst du dich selbst darum kuemmern, Buchstaben in Pixelinformation zu verpacken und darzustellen. Einiges nimmt dir z.B. SDL_ttf ab.

Werbeanzeige