English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Première partie : Introduction à l'expérience
1.1 Contenu de l'expérience
Dans cette section de l'expérience, nous analysons les idées avant la conception du Tetris, et présentons les méthodes d'utilisation de la bibliothèque ncurses.
1.2 Points de connaissance expérimentaux
C++ Bases de la programmation
Utilisation de la bibliothèque ncurses
Conception logique du Tetris
1.3 Environnement expérimental
xface terminal
g++ Compilateur
Bibliothèque ncurses
1.4 Public cible
Ce cours est d'un niveau moyen, adapté aux étudiants ayant des connaissances en C++ Pour les étudiants intéressés par la conception de jeux et l'analyse logique, avec des bases en programmation.
1.5 Obtention du code
git clone https://github.com/Gamerchen/game_zero.git
Deuxième partie : Préparation du développement
2.1 Installer la bibliothèque ncurses
sudo apt-get update sudo apt-get install libncurses5-dev
2.2 Compiler le programme
Ajouter la commande de compilation : -l Options pour inclure la bibliothèque ncurses :
g++ main.c -l ncurses
Troisième partie : Principes expérimentaux
3.1 Analyse préalable de la conception
Avant de commencer à écrire le programme, nous devons d'abord analyser les fonctionnalités à réaliser dans la conception du programme, et les diviser en modules. Dans le cas du Tetris, la première chose à penser devrait être l'affichage des blocs, suivie de la chute des blocs, de leurs déplacements latéraux et rotation, et enfin, la suppression des lignes remplies. Une autre fonctionnalité de base du jeu Tetris devrait être l'indication de la forme du prochain bloc.
Donc, les problèmes que nous devons résoudre dans notre programmation sont :
Afficher les blocs
Mettre en œuvre le déplacement des blocs
Rotation des blocs
Supprimer les lignes remplies de blocs
Indiquer la forme du prochain bloc
3.2 Graphiques de base
Chaque bloc est composé de quatre box, il tombe du centre du cadre de jeu, et peut être tourné sans heurter les bords du cadre ou d'autres blocs à l'intérieur.
3.3 L'utilisation de la bibliothèque NCURSES
En résumé, NCURSES est une bibliothèque provenant de System V Release 4.0 (SVr4) est un clone de CURSES, c'est une bibliothèque configurable librement, complètement compatible avec les anciennes versions de CURSES, et une bibliothèque qui permet aux applications de contrôler directement l'affichage de l'écran terminal. NCURSES encapsule les fonctionnalités de bas niveau des terminaux, contient des fonctions pour créer des fenêtres, et étend les bases de CURSES avec des Menu, Panel et Form. Nous pouvons créer une application qui contient plusieurs fenêtres (multiple windows), des menus (menus), des panneaux (panels) et des formulaires (forms). Les fenêtres peuvent être gérées indépendamment, par exemple, les faire défiler (scrollability) ou les cacher. Les menus (Menus) permettent à l'utilisateur de créer des options de commande pour exécuter des commandes plus facilement. Les formulaires (Forms) permettent à l'utilisateur de créer des fenêtres simples pour l'entrée et l'affichage des données. Les panneaux (Panels) sont une extension des fonctionnalités de gestion des fenêtres de NCURSES, qu'on peut utiliser pour couvrir ou empiler des fenêtres.
3.3.1 NCURSES--Commencer par le programme Hello World
Si vous appellez des fonctions de la bibliothèque NCURSES, vous devez charger le fichier ncurses.h dans votre code (ncurses.h contient déjà stdio.h)
Exemple :
#include <ncurses.h> int main() { initscr(); //Initialisation, entrée dans le mode NCURSES printw("Hello World!"); //Imprimez "Hello Wowrld !" sur le screen virtuel refresh(); //Écrire le contenu du screen virtuel sur l'écran et le rafraîchir getch(); //Attendre l'entrée de l'utilisateur endwin(); //Sortir du mode NCURSES return 0; }
Dans cet exemple, nous avons présenté les méthodes d'utilisation des fonctions de base de la bibliothèque NCURSES, les fonctionnalités des fonctions sont déjà expliquées dans les commentaires, nous ne les répèterons pas ici.
3.3.2 Mécanisme de fenêtre
Lorsque NCURSES s'initialise, il crée par défaut une fenêtre nommée stdscr, généralement de taille 80 colonnes,25 Ligne (selon la taille de l'écran ou de la carte graphique, elle peut varier), en plus de cela, vous pouvez créer vos propres fenêtres à l'aide des fonctions du système de fenêtres.
Pour illustrer, si vous appellez la fonction suivante :
printw("Hi!"); refresh();
Il affichera "Hi!" à la position actuelle du curseur de stdscr, appellez la fonction refresh() pour mettre à jour uniquement le tampon de stdscr.
Si vous avez déjà créé une fenêtre nommée win et que vous souhaitez y afficher du contenu, vous pouvez ajouter w avant la fonction normale, et les paramètres doivent également changer.
printw(string) //Affiche la chaîne de caractères string à la position actuelle du curseur de stdscr
mvprintw(y, x, string) //Imprimez la chaîne de caractères string à la coordonnée (y, x)
wprintw(win, string) //Imprimez la chaîne de caractères string à la position actuelle du curseur de la fenêtre win
mvwprintw(win, y, x, string) //Déplacez le curseur à la position (y, x) de la fenêtre win et imprimez la chaîne de caractères string
En lisant les exemples ci-dessus, vous devriez être capable de voir la différence de fonction des différentes fonctions grâce aux règles de nommage des fonctions.
3.3.3 Fonctions newwin et box
La création d'une fenêtre commence par la fonction newwin(), qui retourne un pointeur vers une structure de fenêtre, ce pointeur peut être transmis à des fonctions similaires à wprintw() nécessitant un paramètre de fenêtre.
Cependant, nous avons créé une fenêtre mais nous ne pouvons pas la voir, nous devons utiliser la fonction box() pour dessiner une bordure autour de la fenêtre définie.
Exemple :
WINDOW *create_newin(int height, int width, int starty, int startx) { WINDOW *local_win; local_win = newin(height, width, starty, startx); box(local_win, 0, 0); wrefresh(local_win); return local_win; }
Voici une introduction de base à l'utilisation de la bibliothèque NUCRSES. Pour les problèmes rencontrés lors de l'utilisation spécifique, il est toujours nécessaire de consulter les documents pertinents.
Déclaration : le contenu de cet article est issu du réseau, propriété des auteurs respectifs, le contenu est contribué et téléchargé par les utilisateurs d'Internet, le site Web ne détient pas de propriété, n'a pas été traité par l'éditeur humain et n'assume aucune responsabilité juridique. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (au moment de l'envoi d'un e-mail, veuillez remplacer # par @ pour signaler une violation et fournir des preuves. Une fois confirmée, le site supprimera immédiatement le contenu suspect de violation de droits d'auteur.).