Terminal Code Rain mit C und Ncurses erstellen

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du mit der ncurses-Bibliothek in der C-Programmiersprache einen einfachen Code-Regen erstellst. Ncurses ist eine Bibliothek, die die Erstellung textbasierten Benutzeroberflächen im Terminal erleichtert. Dieses Projekt führt dich durch die Einrichtung des Projekts, die Initialisierung der erforderlichen Komponenten und die Implementierung des Code-Regens.

👀 Vorschau

Code Rain

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du die ncurses-Bibliothek installierst
  • Wie du Konstanten und Strukturen für die Regentropfen definierst
  • Wie du die Farben für die Animation initialisierst
  • Wie du eine Animationsschleife erstellst, um die fallenden Regentropfen anzuzeigen
  • Wie du Benutzereingaben liest, um die Animation zu beenden

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Die ncurses-Bibliothek in C zu verwenden
  • Strukturen in C zu implementieren
  • Animations in der Konsole zu erstellen

Erstellen Sie die Projekt-Dateien

Stellen Sie zunächst sicher, dass die ncurses-Bibliothek auf Ihrem System installiert ist. Wenn nicht, können Sie den folgenden Befehl verwenden, um sie zu installieren:

sudo apt update
sudo apt-get install libncurses5-dev

Als Nächstes erstellen Sie eine neue Datei namens code_rain.c und öffnen Sie sie in Ihrem bevorzugten Code-Editor.

cd ~/project
touch code_rain.c
✨ Lösung prüfen und üben

Definieren Sie Konstanten

Erstellen Sie nun die erforderlichen Header-Dateien, einschließlich Ncurses, der Standardbibliothek und der Zeit. Definieren Sie die maximale Anzahl von Regentropfen und erstellen Sie eine Struktur für die Regentropfen mit ihren Eigenschaften.

#include <ncurses.h>
#include <stdlib.h>
#include <time.h>

#define MAX_RAIN 200

typedef struct {
    int x, y;
    char ch;
    int color;
    int speed;
} Raindrop;
✨ Lösung prüfen und üben

Initialisierung von Farben

Erstellen Sie eine Funktion, um die Farben zu initialisieren, die in der Animation verwendet werden. Diese Funktion wird die Farbpaare mithilfe der von ncurses bereitgestellten Funktionen start_color und init_pair einrichten.

void init_colors() {
    start_color();
    init_pair(1, COLOR_GREEN, COLOR_BLACK);
    init_pair(2, COLOR_CYAN, COLOR_BLACK);
    init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
    init_pair(4, COLOR_YELLOW, COLOR_BLACK);
}

Die start_color()-Funktion ist die Funktion, die die Farbfunktion von ncurses aktiviert. Diese Funktion muss vor Verwendung irgendeiner anderen Farbmanipulationsfunktion aufgerufen werden.

Die init_pair(1, COLOR_GREEN, COLOR_BLACK)-Funktion wird dann verwendet, um die Definition des Farbpaars zu ändern. Sie akzeptiert drei Parameter: die Nummer des Farbpaars, die Nummer der Vordergrundfarbe und die Nummer der Hintergrundfarbe. Hier wird die init_pair-Funktion verwendet, um vier Farbpaare mit einer Vordergrundfarbe von Grün, Cyan, Magenta und Gelb und einer Hintergrundfarbe von Schwarz zu definieren.

✨ Lösung prüfen und üben

Implementieren der Hauptfunktion

Innerhalb der main-Funktion wird die ncurses-Umgebung eingerichtet, einschließlich des Ausschalten der Zeilenpufferung und des Echoes. Aktivieren Sie die Tastatur für Sonderzeichen und setzen Sie die nicht blockierende Eingabe. Ermitteln Sie die maximalen Bildschirmdimensionen und initialisieren Sie die Farben mit der zuvor definierten Funktion.

int main() {
    initscr();
    cbreak();
    noecho();
    curs_set(0);
    keypad(stdscr, TRUE);
    nodelay(stdscr, TRUE);

    int max_x, max_y;
    getmaxyx(stdscr, max_y, max_x);
    init_colors();

    Raindrop rain[MAX_RAIN];

    srand(time(NULL));

    //... (restlicher Code, der in späteren Schritten behandelt wird)
}
✨ Lösung prüfen und üben

Initialisierung der Regentropfenparameter

Initialisieren Sie die Eigenschaften jedes Regentropfens mithilfe einer Schleife. Legen Sie ihre Anfangspositionen, Zeichen, Farben und Fallgeschwindigkeiten fest.

for (int i = 0; i < MAX_RAIN; i++) {
    rain[i].x = rand() % max_x;
    rain[i].y = rand() % max_y;
    rain[i].ch = rand() % 94 + 33;
    rain[i].color = rand() % 4 + 1;
    rain[i].speed = rand() % 3 + 1;
}
✨ Lösung prüfen und üben

Implementieren der Animationsschleife

Setzen Sie eine Schleife ein, um die Positionen der Regentropfen kontinuierlich zu aktualisieren und sie auf dem Bildschirm anzuzeigen. Überprüfen Sie auf Benutzereingaben, um die Animationsschleife zu beenden.

while (1) {
    int ch = getch();

    if (ch == 'q') {
        break;
    }

    for (int i = 0; i < MAX_RAIN; i++) {
        attron(COLOR_PAIR(rain[i].color));
        mvaddch(rain[i].y, rain[i].x, ' ');
        rain[i].y += rain[i].speed;
        if (rain[i].y >= max_y) {
            rain[i].y = 0;
            rain[i].x = rand() % max_x;
        }
        mvaddch(rain[i].y, rain[i].x, rain[i].ch);
        attroff(COLOR_PAIR(rain[i].color));
    }

    refresh();
    napms(50);
}

Verwenden Sie die getch()-Funktion, um die eingegebenen Zeichen des Benutzers zu erhalten und sie in der ganzzahligen Variablen ch zu speichern.

Die for-Schleife wird verwendet, um den Effekt von Regentropfen zu simulieren. Sie läuft durch ein Array namens rain, das Informationen über mehrere Regentropfen enthält. Jeder Regentropfen besteht aus folgenden Eigenschaften: Farbe, Positionskoordinaten (x und y), Fallgeschwindigkeit (speed) und Zeichen (ch).

Diese Schleife wird fortgesetzt, bis Sie die Taste q drücken. An diesem Punkt wird das Programm die Anweisung break; ausführen und die Schleife verlassen, was das Programm beendet.

Nachdem die Animationsschleife beendet ist, bereinigen Sie die ncurses-Umgebung und beenden Sie das Programm.

endwin();
return 0;
✨ Lösung prüfen und üben

Kompilierung und Ausführung

Der Kompilierungsbefehl unterscheidet sich etwas von dem üblichen. Es ist erforderlich, die -l-Option zu gcc hinzuzufügen, um die ncurses-Bibliothek zu laden:

cd ~/project
gcc -o code_rain code_rain.c -l ncurses
./code_rain
Code Rain
✨ Lösung prüfen und üben

Zusammenfassung

In diesem Projekt haben Sie gelernt, wie Sie eine einfache Regentropfenanimation mit der ncurses-Bibliothek in der Programmiersprache C erstellen. Sie haben das Projekt eingerichtet, notwendige Komponenten initialisiert, die Animationsschleife implementiert und die Benutzereingabe für das Beenden des Programms behandelt. Ncurses bietet einen leistungsstarken Toolsatz für die Erstellung von textbasierten Benutzeroberflächen, und Sie können es verwenden, um verschiedene Arten von terminalbasierten Anwendungen zu erstellen.