summaryrefslogtreecommitdiff
path: root/sem_3/project/Documents du Projet-20171011
diff options
context:
space:
mode:
Diffstat (limited to 'sem_3/project/Documents du Projet-20171011')
-rw-r--r--sem_3/project/Documents du Projet-20171011/SujetBatailleNavale.pdfbin0 -> 606274 bytes
-rw-r--r--sem_3/project/Documents du Projet-20171011/test-piece.cpp65
-rw-r--r--sem_3/project/Documents du Projet-20171011/window.cpp114
-rw-r--r--sem_3/project/Documents du Projet-20171011/window.h85
4 files changed, 264 insertions, 0 deletions
diff --git a/sem_3/project/Documents du Projet-20171011/SujetBatailleNavale.pdf b/sem_3/project/Documents du Projet-20171011/SujetBatailleNavale.pdf
new file mode 100644
index 0000000..bdcfa0a
--- /dev/null
+++ b/sem_3/project/Documents du Projet-20171011/SujetBatailleNavale.pdf
Binary files differ
diff --git a/sem_3/project/Documents du Projet-20171011/test-piece.cpp b/sem_3/project/Documents du Projet-20171011/test-piece.cpp
new file mode 100644
index 0000000..fcbff74
--- /dev/null
+++ b/sem_3/project/Documents du Projet-20171011/test-piece.cpp
@@ -0,0 +1,65 @@
+#include "window.h"
+
+
+void myprogram(){
+ int ch;
+ int h=10,w=10;
+ Window menu(3,30,1,0);
+ Window plateau(h,w,1,6);
+ menu.setCouleurBordure(BRED);
+ plateau.setCouleurBordure(BBLUE);
+
+ menu.print(1,1,"Tapez q pour quitter !!!",WRED);
+
+ int x=w/2,y=h/2;
+ char p='X';
+ Color col=WBLUE;
+ plateau.print(x,y,p,col);
+
+ while((ch = getch()) != 'q')
+ {
+ switch (ch) {
+ case '1':
+ col=BMAGENTA;
+ break;
+ case '2':
+ col=WCYAN;
+ break;
+ case 'c':
+ plateau.clear();
+ break;
+ case KEY_UP:
+ plateau.print(x,y,' ');
+ plateau.print(x,--y,p,col);
+ break;
+ case KEY_DOWN:
+ plateau.print(x,y,' ');
+ plateau.print(x,++y,p,col);
+ break;
+ case KEY_LEFT:
+ plateau.print(x,y,' ');
+ plateau.print(--x,y,p,col);
+ break;
+ case KEY_RIGHT:
+ plateau.print(x,y,' ');
+ plateau.print(++x,y,p,col);
+ break;
+ case '\n':
+ x=w/2,y=h/2;
+ plateau.print(x,y,p,col);
+ break;
+ case '\t':
+ Color tmp= menu.getCouleurBordure();
+ menu.setCouleurBordure(plateau.getCouleurBordure());
+ plateau.setCouleurBordure(tmp);
+ break;
+ }
+ }
+}
+
+int main(){
+ startProgramX();
+ myprogram();
+ stopProgramX();
+ return 0;
+}
diff --git a/sem_3/project/Documents du Projet-20171011/window.cpp b/sem_3/project/Documents du Projet-20171011/window.cpp
new file mode 100644
index 0000000..65694a7
--- /dev/null
+++ b/sem_3/project/Documents du Projet-20171011/window.cpp
@@ -0,0 +1,114 @@
+#include "window.h"
+
+
+void init_colors(void)
+{
+ start_color();
+ init_pair(WBLACK, COLOR_WHITE, COLOR_BLACK);
+ init_pair(WCYAN, COLOR_WHITE, COLOR_CYAN);
+ init_pair(WBLUE, COLOR_WHITE, COLOR_BLUE);
+ init_pair(WYELLOW, COLOR_WHITE, COLOR_YELLOW);
+ init_pair(WGREEN, COLOR_WHITE, COLOR_GREEN);
+ init_pair(WMAGENTA, COLOR_WHITE, COLOR_MAGENTA);
+ init_pair(WRED, COLOR_WHITE, COLOR_RED);
+ init_pair(BWHITE, COLOR_BLACK, COLOR_WHITE);
+ init_pair(BCYAN, COLOR_BLACK, COLOR_CYAN);
+ init_pair(BBLUE, COLOR_BLACK, COLOR_BLUE);
+ init_pair(BYELLOW, COLOR_BLACK, COLOR_YELLOW);
+ init_pair(BGREEN, COLOR_BLACK, COLOR_GREEN);
+ init_pair(BMAGENTA, COLOR_BLACK, COLOR_MAGENTA);
+ init_pair(BRED, COLOR_BLACK, COLOR_RED);
+}
+
+
+void startProgramX() {
+ initscr(); // initialize curses
+ cbreak(); // pass key presses to program, but not signals
+ noecho(); // don't echo key presses to screen
+ keypad(stdscr, TRUE); // allow arrow keys
+ timeout(0); // no blocking on getch()
+ curs_set(0); // set the cursor to invisible
+ init_colors();
+}
+
+void stopProgramX() {
+ refresh();
+ getch();
+ endwin();
+}
+
+
+
+void Window::update() const{
+ wrefresh(win);
+ wrefresh(frame);
+ refresh();
+}
+
+
+Window::Window(int h,int w, int x, int y, char c)
+ : height(h), width(w), startx(x), starty(y), bord(c)
+{
+ colorwin=WCYAN;
+ colorframe=WBLACK;
+ frame=newwin(h+2,w+2,y,x);
+ win=subwin(frame,h,w,y+1,x+1);
+ wbkgd(frame,COLOR_PAIR(colorwin));
+ wbkgd(win,COLOR_PAIR(colorframe));
+ wborder(frame, c,c,c,c,c,c,c,c);
+ wattron(win,COLOR_PAIR(colorwin));
+ wattron(frame,COLOR_PAIR(colorframe));
+ update();
+}
+
+Window::~Window(){
+ wborder(frame, ' ', ' ', ' ',' ',' ',' ',' ',' ');
+ wattroff(win,COLOR_PAIR(colorwin));
+ wattroff(win,COLOR_PAIR(colorframe));
+ werase(win);
+ update();
+ delwin(win);
+}
+
+void Window::print(int x, int y, std::string s, Color c) const {
+ wattron(win,COLOR_PAIR(c));
+ mvwprintw(win,y,x,s.c_str());
+ wattroff(win,COLOR_PAIR(c));
+ update();
+}
+void Window::print(int x, int y, char s, Color c) const{
+ wattron(win,COLOR_PAIR(c));
+ mvwaddch(win,y,x,s);
+ wattroff(win,COLOR_PAIR(c));
+ update();
+}
+void Window::print(int x, int y, std::string s) const{
+ mvwprintw(win,y,x,s.c_str());
+ update();
+}
+void Window::print(int x, int y, char s) const{
+ mvwaddch(win,y,x,s);
+ update();
+}
+
+
+int Window::getX() const { return startx;}
+int Window::getY() const { return starty;}
+int Window::getHauteur() const { return height;}
+int Window::getLargeur() const { return width;}
+Color Window::getCouleurBordure() const{ return colorframe;}
+Color Window::getCouleurFenetre() const{ return colorwin;}
+void Window::setCouleurBordure(Color c){
+ colorframe=c;
+ wattron(frame,COLOR_PAIR(colorframe));
+ wborder(frame, bord,bord,bord,bord,bord,bord,bord,bord);
+ update();
+}
+void Window::setCouleurFenetre(Color c){
+ colorwin=c;
+ wattron(win,COLOR_PAIR(colorwin));
+ wbkgd(win,COLOR_PAIR(colorwin));
+ update();
+}
+
+void Window::clear() const{ werase(win); update(); }
diff --git a/sem_3/project/Documents du Projet-20171011/window.h b/sem_3/project/Documents du Projet-20171011/window.h
new file mode 100644
index 0000000..124e2eb
--- /dev/null
+++ b/sem_3/project/Documents du Projet-20171011/window.h
@@ -0,0 +1,85 @@
+#ifndef __WINDOW_H
+#define __WINDOW_H
+
+extern "C" {
+#include <curses.h>
+}
+#include <string>
+
+// Ensemble de couleurs possibles (fond+texte)
+enum Color {
+ WBLACK, // couleur fond = noir , couleur texte = blanc
+ WCYAN, // couleur fond = cyan, couleur texte = blanc
+ WBLUE, // couleur fond = bleu, couleur texte = blanc
+ WYELLOW, // couleur fond = jaune, couleur texte = blanc
+ WGREEN, // couleur fond = vert, couleur texte = blanc
+ WMAGENTA,// couleur fond = magenta, couleur texte = blanc
+ WRED, // couleur fond = rouge, couleur texte = blanc
+ BWHITE, // couleur fond = blanc, couleur texte = blanc
+ BCYAN, // couleur fond = cyan, couleur texte = noir
+ BBLUE, // couleur fond = bleu, couleur texte = noir
+ BYELLOW, // couleur fond = jaune, couleur texte = noir
+ BGREEN, // couleur fond = vert, couleur texte = noir
+ BMAGENTA,// couleur fond = magenta, couleur texte = noir
+ BRED, // couleur fond = rouge, couleur texte = noir
+};
+
+
+
+// fonction pour demarrer le mode console graphique
+void startProgramX();
+// fonction pour arreter le mode console graphique
+void stopProgramX();
+
+
+class Window {
+ private:
+ int height,width,startx,starty;
+ WINDOW* win, *frame;
+ Color colorwin, colorframe;
+ char bord;
+ void update() const;
+
+ public:
+
+ // constructeur d'un fenetre de hauteur=h, largeur=w dont le coin superieur gauche
+ // a pour coordonnée (x,y), le caractère c est utilisé pour définir la bordure
+ Window(int h,int w, int x, int y, char c='+');
+
+ ~Window();
+
+ // fonction permettant d'afficher une variable s de type (string ou char)
+ // à la position (x,y) dans la fenetre.
+ // si un couleur est spécifié l'affichage utilise cette couleur, sinon la couleur de la fenêtre est utilisée
+ void print(int x, int y, std::string s, Color c) const;
+ void print(int x, int y, char s, Color c) const;
+ void print(int x, int y, std::string s) const;
+ void print(int x, int y, char s) const;
+
+
+ // accesseurs
+ int getX() const; // récupère l'abscisse du coin supérieur gauche de la fenêtre
+ int getY() const; // récupère l'ordonnée du coin supérieur gauche de la fenêtre
+ int getHauteur() const ; // récupère la hauteur de la fenêtre
+ int getLargeur() const ; // récupère la largeur de la fenêtre
+
+ Color getCouleurBordure() const; // récupère la couleur de la bordure
+ Color getCouleurFenetre() const; // récupère la couleur de la fenêtre
+ void setCouleurBordure(Color); // modifie la couleur de la bordure
+ void setCouleurFenetre(Color); // modifie la couleur de la fenêtre (ATTENTION, tout le contenu de la fenêtre prend la couleur)
+
+ void clear() const; // enleve tout le contenu de la fenêtre
+
+};
+
+
+
+
+
+
+
+
+
+
+
+#endif