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

09.07.2016, 23:31

Spiele im Terminal mit C unter Linux Programmieren Fragen

Hallo wollte hier ein paar Fragen stellen zum Oben genannten Thema.
Ich lerne C und wollte damit ein paar Consolenspiele schreiben zum Spaß.
An einigen Stellen komme ich nicht so recht weiter.
Bisher habe ich ne Art Snake erstellt.

Ich habe allerdings ZB Das Problem, wie lösche ich den Bildschirm? System("clear") funktioniert nicht warum auch immer. Gibt es noch irgendeine Funktion die man nutzen kann?

Kann ich die Funktion random() unter C nutzen habe darüber noch nicht so viel gefunden in meinem Lehrbuch garnichts leider.

Gibt es eine Möglichkeit bewegte Zeichen ablaufen zu lassen, und dann mittendrinn per Tastendruck einzugreifen?
Also zb bei einem AUtorennen, die Seitenränder dazustellen oder entgegenkommende Hindernisse etc. Bei meinem Konsolenspiel ist es so, das es zwar einen gegner gibt, dieser sich aber nur bewegt wenn sich auch meine Spielfigur bewegt das ist irgendwie unschön, kann mir jemand verständlich machen wie ich das ändern könnte? Danke :)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

09.07.2016, 23:44

Hallo und Willkommen,

zur Frage "Bildschirm leeren" habe ich Folgendes gefunden (bitte verwende erst einmal Google, bevor du fragst):
http://stackoverflow.com/questions/17271…ix-based-system

random gibt es nicht, die Funktion heißt rand. Auch das hättest du mit Google herausfinden können.

Zur Eingabe: du suchst eine Möglichkeit, den aktuellen Zustand der Tastatur abzufragen, ohne auf einen Tastendruck warten zu müssen. Hierzu habe ich ebenfalls mit Google etwas gefunden: http://stackoverflow.com/questions/44894…-keyboard-input

Thandor

Frischling

Beiträge: 84

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

3

09.07.2016, 23:46

Auf welchem Betriebssystem arbeitest du / soll das Spiel laufen?

Grundsätzlich kannst du für die Bewegungen eine einzige Schleife verwenden. Damit die Funktion, die die Tasten einliest das Programm nicht anhält/pausiert solltest du Prüfen, ob überhaupt eine Taste gedrückt wurde, leider bin ich in C nicht so bewandert. In Pascal gibt es dafür eine Funktion mit den namen Keypressed(); die gibt true zurück wenn daten im Tastatutbuffer liegen.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var Taste : Char;
    ende  : Boolean;

...
Repeat
  Bewege_Enemy(...);
  
  if Keypressed() then begin
    Taste := ReadKey();      // in C, C++, ... z.B. getChar()
    case Taste of            // in C, C++, ... switch(Taste)
      ... // Bewegung der Spielfigut
      ... // Tastenabfrage für Menü / Beenden des Spiels (var ende)
    end;
  end
until ende


ich hoffe der Pascal-Code lässt eine möglioche, einfache Herangehensweise, verdeutlichen. Natürlich gibt es auch andere Konzepte wie Events, Threads, ...
Ich mag pewn.de.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

09.07.2016, 23:50

Auf welchem Betriebssystem arbeitest du / soll das Spiel laufen?

Steht in der Überschrift: Linux.

Thandor

Frischling

Beiträge: 84

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

5

09.07.2016, 23:51

Auf welchem Betriebssystem arbeitest du / soll das Spiel laufen?

Steht in der Überschrift: Linux.


Upps habe ich glatt überlesen, danke.
Ich mag pewn.de.

Werbeanzeige