From ba53b1955369eeb6692861e0ab02e77532cb32db Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Tue, 25 Apr 2023 17:12:37 +0200 Subject: [PATCH 01/14] makefile + enum valeur carte --- Makefile | 19 +++++++++++++++++++ src/course.cpp | 30 ++++++++++++++++++++++++++++++ src/main.cpp | 6 ------ 3 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 Makefile create mode 100644 src/course.cpp delete mode 100644 src/main.cpp diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..27db210 --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ + +build/course : build/course.o + g++ -o build/course build/course.o + +build/course.o : src/course.cpp + g++ -c src/course.cpp -o build/course.o + +.PHONY : clean +clean : + rm -r build/* + +.PHONY : run +run : build/course + ./build/course + +.PHONY : analyse +analyse : + cppcheck --enable=all --suppress=missingIncludeSystem -I include/ . + flawfinder . diff --git a/src/course.cpp b/src/course.cpp new file mode 100644 index 0000000..c902aff --- /dev/null +++ b/src/course.cpp @@ -0,0 +1,30 @@ +#include + +enum CValeur{ + II, + III, + IV, + V, + VI, + VII, + VIII, + IX, + X, + J, + Q, + K, + A, +}; + +struct carte{ + CValeur valeur; +}; + +int main(){ + + CValeur val = A; + + std::cout << val << std::endl; + + return 0; +} diff --git a/src/main.cpp b/src/main.cpp deleted file mode 100644 index 6fadfc2..0000000 --- a/src/main.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include - -int main(){ - std::cout << "Hello World!" << std::endl; - return 0; -} From 6985a20dbb9a456b52f26b834a362650cade1479 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Tue, 25 Apr 2023 18:14:18 +0200 Subject: [PATCH 02/14] base carte + jeu carte + qlq fonction --- src/course.cpp | 99 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 94 insertions(+), 5 deletions(-) diff --git a/src/course.cpp b/src/course.cpp index c902aff..fa4330e 100644 --- a/src/course.cpp +++ b/src/course.cpp @@ -16,15 +16,104 @@ enum CValeur{ A, }; -struct carte{ - CValeur valeur; +enum CCouleur{ + trefle, + pique, + coeur, + carreau, }; +struct carte{ + CValeur valeur; + CCouleur couleur; +}; + +void printCarte(const carte& c){ + switch (c.valeur){ + case II: + std::cout << '2'; + break; + case III: + std::cout << '3'; + break; + case IV: + std::cout << '4'; + break; + case V: + std::cout << '5'; + break; + case VI: + std::cout << '6'; + break; + case VII: + std::cout << '7'; + break; + case VIII: + std::cout << '8'; + break; + case IX: + std::cout << '9'; + break; + case X: + std::cout << "10"; + break; + case J: + std::cout << 'J'; + break; + case Q: + std::cout << 'Q'; + break; + case K: + std::cout << 'K'; + break; + case A: + std::cout << 'A'; + break; + default: + std::cout << '?'; + break; + } + switch (c.couleur){ + case trefle: + std::cout << 't'; + break; + case pique: + std::cout << 'p'; + break; + case carreau: + std::cout << 'k'; + break; + case coeur: + std::cout << 'c'; + break; + default: + std::cout << '?'; + break; + } +} + int main(){ + carte jc[52]; + + int x = 0; + for (int i=0; i<4; i++){ + for (int y=0; y<13; y++){ + jc[x].valeur = CValeur(y); + jc[x].couleur = CCouleur(i); + x++; + } + } - CValeur val = A; - - std::cout << val << std::endl; + printCarte(jc[0]); + for (int i=1; i<52; i++){ + if (!(i%13)){ + std::cout << std::endl; + }else{ + std::cout << " - "; + } + printCarte(jc[i]); + } + std::cout << std::endl; return 0; } From b7afb2cf200c67a7b8f332ba05a65486e30b89ed Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Wed, 26 Apr 2023 12:32:13 +0200 Subject: [PATCH 03/14] ex map course --- src/course.cpp | 76 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 62 insertions(+), 14 deletions(-) diff --git a/src/course.cpp b/src/course.cpp index fa4330e..f1a3a94 100644 --- a/src/course.cpp +++ b/src/course.cpp @@ -55,7 +55,7 @@ void printCarte(const carte& c){ std::cout << '9'; break; case X: - std::cout << "10"; + std::cout << 'd'; break; case J: std::cout << 'J'; @@ -75,16 +75,16 @@ void printCarte(const carte& c){ } switch (c.couleur){ case trefle: - std::cout << 't'; + std::cout << 'T'; break; case pique: - std::cout << 'p'; + std::cout << 'P'; break; case carreau: - std::cout << 'k'; + std::cout << 'K'; break; case coeur: - std::cout << 'c'; + std::cout << 'C'; break; default: std::cout << '?'; @@ -104,16 +104,64 @@ int main(){ } } - printCarte(jc[0]); - for (int i=1; i<52; i++){ - if (!(i%13)){ - std::cout << std::endl; - }else{ - std::cout << " - "; - } - printCarte(jc[i]); + // printCarte(jc[0]); + // for (int i=1; i<52; i++){ + // if (!(i%13)){ + // std::cout << std::endl; + // }else{ + // std::cout << " - "; + // } + // printCarte(jc[i]); + // } + // std::cout << std::endl; + + int nvPalier[4]; + nvPalier[trefle] = 5; + nvPalier[pique] = 6; + nvPalier[coeur] = 3; + nvPalier[carreau] = 4; + + carte cartePalier[5]; + cartePalier[1].valeur = II; + cartePalier[1].couleur = trefle; + cartePalier[2].valeur = IV; + cartePalier[2].couleur = pique; + cartePalier[3].valeur = J; + cartePalier[3].couleur = pique; + cartePalier[4].valeur = X; + cartePalier[4].couleur = coeur; + cartePalier[5].valeur = IV; + cartePalier[5].couleur = carreau; + + std::cout << "👑|"; + if (nvPalier[0]>=6){ + std::cout << "■"; + }else{ + std::cout << "_"; } - std::cout << std::endl; + + for (int i=1; i<4; i++){ + if (nvPalier[i]==6){ + std::cout << "_■"; + }else{ + std::cout << "__"; + } + } + std::cout << "|" << std::endl; + + for (int i=5; i>0; i--){ + printCarte(cartePalier[i]); + std::cout << '|'; + for (int y=0; y<4; y++){ + if (nvPalier[y]>=i){ + std::cout << "■|"; + }else{ + std::cout << " |"; + } + } + std::cout << std::endl; + } + std::cout << "‾‾|T|P|C|K|" << std::endl; return 0; } From 3ddb2935bcbfe4b5edd8f0ddd8a38846680f5b18 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Wed, 26 Apr 2023 21:05:10 +0200 Subject: [PATCH 04/14] correction erreur : make analyse --- src/course.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/course.cpp b/src/course.cpp index f1a3a94..a6f75b4 100644 --- a/src/course.cpp +++ b/src/course.cpp @@ -122,16 +122,16 @@ int main(){ nvPalier[carreau] = 4; carte cartePalier[5]; - cartePalier[1].valeur = II; - cartePalier[1].couleur = trefle; - cartePalier[2].valeur = IV; + cartePalier[0].valeur = II; + cartePalier[0].couleur = trefle; + cartePalier[1].valeur = IV; + cartePalier[1].couleur = pique; + cartePalier[2].valeur = J; cartePalier[2].couleur = pique; - cartePalier[3].valeur = J; - cartePalier[3].couleur = pique; - cartePalier[4].valeur = X; - cartePalier[4].couleur = coeur; - cartePalier[5].valeur = IV; - cartePalier[5].couleur = carreau; + cartePalier[3].valeur = X; + cartePalier[3].couleur = coeur; + cartePalier[4].valeur = IV; + cartePalier[4].couleur = carreau; std::cout << "👑|"; if (nvPalier[0]>=6){ @@ -149,7 +149,7 @@ int main(){ } std::cout << "|" << std::endl; - for (int i=5; i>0; i--){ + for (int i=4; i>0; i--){ printCarte(cartePalier[i]); std::cout << '|'; for (int y=0; y<4; y++){ From 054e4784d8ace9d2991c9148d05d8efe491a4a5a Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Wed, 26 Apr 2023 21:05:22 +0200 Subject: [PATCH 05/14] variable in Makefile --- Makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 27db210..cf91585 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,15 @@ +# gcc for c g++ foc c++ +compiler = g++ +#obj = build/main.o build/monster.o +# -g for debug mode (for gbd) -O3 for release mod +mode = -g +flag = -Wall -Weffc++ -Wextra -Wsign-conversion $(state) build/course : build/course.o - g++ -o build/course build/course.o + $(compiler) $(flag) -o build/course build/course.o build/course.o : src/course.cpp - g++ -c src/course.cpp -o build/course.o + $(compiler) $(flag) -c src/course.cpp -o build/course.o .PHONY : clean clean : From 6ada3ff5eb39ee4bf788684e1899ab7eceaf1ed5 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Fri, 7 Jul 2023 13:46:36 +0200 Subject: [PATCH 06/14] add Makefile --- Makefile | 72 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index cf91585..94552d4 100644 --- a/Makefile +++ b/Makefile @@ -1,25 +1,61 @@ -# gcc for c g++ foc c++ -compiler = g++ -#obj = build/main.o build/monster.o -# -g for debug mode (for gbd) -O3 for release mod -mode = -g -flag = -Wall -Weffc++ -Wextra -Wsign-conversion $(state) +PROJECTNAME=OMTRTA +BIN=build/$(PROJECTNAME) +CC=g++ -build/course : build/course.o - $(compiler) $(flag) -o build/course build/course.o +EXT=cpp +INCDIRS=include lib -build/course.o : src/course.cpp - $(compiler) $(flag) -c src/course.cpp -o build/course.o +# make mode=release +ifeq ($(mode), release) + OPT=-O3 +else + OPT=-Og -g +endif +DEPFLAGS=-MP -MD +FLAGS=-Wall -Wextra $(foreach F,$(INCDIRS),-I$(F)) $(OPT) $(DEPFLAGS) + +SRC=$(shell find . -name "*.$(EXT)" -path "./src/*") +OBJ=$(subst ./src/,./build/,$(SRC:.$(EXT)=.o)) +DEP=$(OBJ:.o=.d) +TEST=$(shell find . -name "*.$(EXT)" -path "./test/*") + +$(shell mkdir -p build) + +all : $(BIN) + +$(BIN) : $(OBJ) + $(CC) $(FLAGS) -o $@ $^ + +-include $(DEP) + +build/%.o : src/%.$(EXT) + @mkdir -p $(@D) + $(CC) $(FLAGS) -o $@ -c $< + +run : all + ./$(BIN) -.PHONY : clean clean : - rm -r build/* + rm -rf build/* -.PHONY : run -run : build/course - ./build/course +# make test file=testGenID.cpp +test : $(OBJ) + $(CC) $(FLAGS) -o build/$(file:.$(EXT)=) test/$(file) + ./build/$(file:.$(EXT)=) -.PHONY : analyse -analyse : - cppcheck --enable=all --suppress=missingIncludeSystem -I include/ . +alltest : + @for f in $(subst ./test/,,$(TEST)); do make -s test file=$$f; done + +# unzip : mkdir exemple && tar -xvf exemple.tgz -C exemple +dist : clean + tar zcvf build/$(PROJECTNAME).tgz . + +check : + cppcheck --enable=all --suppress=missingIncludeSystem $(foreach I,$(INCDIRS),-I$(I)) . flawfinder . + +info : + $(info put what ever) + @echo you want + +.PHONY : all run clean test alltest dist check info From e944c648708d937edb333659b528681705f2b967 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Fri, 7 Jul 2023 13:49:21 +0200 Subject: [PATCH 07/14] maj project name in Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 94552d4..a9e2985 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -PROJECTNAME=OMTRTA +PROJECTNAME=cli-casino BIN=build/$(PROJECTNAME) CC=g++ From 8a122db98ac2bbcedfa109eae7ccc7fdf665ae74 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Sat, 5 Aug 2023 19:33:43 +0200 Subject: [PATCH 08/14] hamood --- Makefile | 101 ++++++++++++++++++++++------ include/carte.hpp | 32 +++++++++ include/jdc.hpp | 120 +++++++++++++++++++++++++++++++++ src/course.cpp | 167 ---------------------------------------------- test/cartest.cpp | 9 +++ test/testjdc.cpp | 47 +++++++++++++ 6 files changed, 288 insertions(+), 188 deletions(-) create mode 100644 include/carte.hpp create mode 100644 include/jdc.hpp delete mode 100644 src/course.cpp create mode 100644 test/cartest.cpp create mode 100644 test/testjdc.cpp diff --git a/Makefile b/Makefile index a9e2985..6049237 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,15 @@ -PROJECTNAME=cli-casino +PROJECTNAME=MasterMakefile BIN=build/$(PROJECTNAME) CC=g++ EXT=cpp -INCDIRS=include lib +INCFOLDERS=include lib +RECURSIVE_INCLUDE=false +ifeq ($(RECURSIVE_INCLUDE), true) + INCDIRS=$(foreach I,$(INCFOLDERS),$(shell find $(I) -type d 2>/dev/null)) +else + INCDIRS=$(INCFOLDERS) +endif # make mode=release ifeq ($(mode), release) @@ -12,50 +18,103 @@ else OPT=-Og -g endif DEPFLAGS=-MP -MD -FLAGS=-Wall -Wextra $(foreach F,$(INCDIRS),-I$(F)) $(OPT) $(DEPFLAGS) +MACROS=HW PI=3.14 +FLAGS=-Wall -Wextra $(foreach F,$(INCDIRS),-I$(F)) $(OPT) $(DEPFLAGS) $(foreach M,$(MACROS),-D$(M)) SRC=$(shell find . -name "*.$(EXT)" -path "./src/*") OBJ=$(subst ./src/,./build/,$(SRC:.$(EXT)=.o)) -DEP=$(OBJ:.o=.d) +LIB=$(shell find . -name "*.$(EXT)" -path "./lib/*") +LIBO=$(subst ./lib/,./build/,$(LIB:.$(EXT)=.o)) TEST=$(shell find . -name "*.$(EXT)" -path "./test/*") +TESTO=$(subst ./test/,./build/,$(TEST:.$(EXT)=.t)) $(shell mkdir -p build) + all : $(BIN) -$(BIN) : $(OBJ) +$(BIN) : $(OBJ) $(LIBO) $(CC) $(FLAGS) -o $@ $^ --include $(DEP) +-include $(OBJ:.o=.d) $(LIBO:.o=.d) build/%.o : src/%.$(EXT) @mkdir -p $(@D) $(CC) $(FLAGS) -o $@ -c $< +build/%.o : lib/%.$(EXT) + @mkdir -p $(@D) + $(CC) $(FLAGS) -o $@ -c $< -run : all - ./$(BIN) +# make test file=testGenID.cpp +test : build/$(file).t + ./build/$(file).t + +alltest : $(TESTO) + @for i in $(TESTO); do echo $$i; $$i; done + +build/%.t : test/%.$(EXT) + @mkdir -p $(@D) + $(CC) $(FLAGS) -o $@ $< + +asm : $(OBJ:.o=.s) $(BIN).s + +build/%.s : src/%.$(EXT) + @mkdir -p $(@D) + $(CC) $(FLAGS) -S $< -o $@ + +$(BIN).s : $(BIN) + objdump -drwC -Mintel -S $< > $<.s + +preprocess : $(OBJ:.o=.i) + +build/%.i : src/%.$(EXT) + @mkdir -p $(@D) + $(CC) $(FLAGS) -E $< -o $@ + +gigall : $(BIN) $(TESTO) asm preprocess + +# make run input="program input" +run : $(BIN) + ./$< $(input) clean : rm -rf build/* -# make test file=testGenID.cpp -test : $(OBJ) - $(CC) $(FLAGS) -o build/$(file:.$(EXT)=) test/$(file) - ./build/$(file:.$(EXT)=) - -alltest : - @for f in $(subst ./test/,,$(TEST)); do make -s test file=$$f; done - -# unzip : mkdir exemple && tar -xvf exemple.tgz -C exemple -dist : clean - tar zcvf build/$(PROJECTNAME).tgz . - check : cppcheck --enable=all --suppress=missingIncludeSystem $(foreach I,$(INCDIRS),-I$(I)) . flawfinder . +debug : $(BIN) + gdb $< $(input) + +# unzip : tar -xvf exemple.tgz +dist : clean + $(info /!\ project folder has to be named $(PROJECTNAME) /!\ ) + cd .. && tar zcvf $(PROJECTNAME)/build/$(PROJECTNAME).tgz $(PROJECTNAME) >/dev/null + +push : + git push bbsrv + git push gh + +install : dist + cp Makefile ../script + mv build/$(PROJECTNAME).tgz ../opt/archive + cd .. && rm -rf $(PROJECTNAME) + info : $(info put what ever) @echo you want -.PHONY : all run clean test alltest dist check info +# alias + +r : run + +t : test + +c : check + +p : push + +d : debug + +.PHONY : all test t alltest asm preprocess gigall run r clean check c debug d dist push p install info diff --git a/include/carte.hpp b/include/carte.hpp new file mode 100644 index 0000000..0e78d38 --- /dev/null +++ b/include/carte.hpp @@ -0,0 +1,32 @@ +#ifndef CARTE_HPP +#define CARTE_HPP + +enum VCarte{ + II = 2, + III, + IV, + V, + VI, + VII, + VIII, + IX, + T, + J, + Q, + K, + A, +}; + +enum CCarte{ + PIC, + CARREAU, + COEUR, + TREFLE, +}; + +struct carte{ + VCarte valeur; + CCarte couleur; +}; + +#endif diff --git a/include/jdc.hpp b/include/jdc.hpp new file mode 100644 index 0000000..a12ed48 --- /dev/null +++ b/include/jdc.hpp @@ -0,0 +1,120 @@ +#ifndef JDC_HPP +#define JDC_HPP + +#include +#include +#include "carte.hpp" + +class JDC{ + public: + JDC(){ + this->len = 0; + }; + + void init(){ + this->len = 52; + int index = 0; + for (int i=0; i<4; i++){ + for (int y=0; y<13; y++){ + index = (i*13)+y; + this->jdc[index].couleur = (CCarte)i; + this->jdc[index].valeur = (VCarte)(y+2); + } + } + } + + void shuffle(){ + srand(time(0)); + for (int i=0; i<52; i++){ + int randomIndex = rand()%52; + carte swap = this->jdc[randomIndex]; + + this->jdc[randomIndex] = this->jdc[i]; + this->jdc[i] = swap; + } + }; + + void display(){ + for (int i=0; ilen; i++){ + if (!(i%13)) std::cout << std::endl; + std::cout << i << ':' << this->jdc[i].valeur << '+' << this->jdc[i].couleur << '\t'; + } + std::cout << std::endl; + }; + + carte top(){ + if (this->len <= 0) throw "jdc empty"; + return this->jdc[this->len-1]; + } + + carte pop(){ + if (this->len <= 0) throw "jdc empty"; + this->len--; + return this->jdc[this->len]; + } + + carte push(carte c){ + if (this->len == 52) throw "jdc full"; + this->jdc[this->len] = c; + this->len++; + return c; + } + + carte get(int index){ + if (index < 0 || index > this->len) throw "jdc out of bound"; + return this->jdc[index]; + } + + std::string valeur(carte c){ + if ((int)c.valeur < 10) return std::to_string(c.valeur); + switch(c.valeur){ + case T: + return "T"; + case J: + return "J"; + case Q: + return "Q"; + case K: + return "K"; + case A: + return "A"; + default: + return "?"; + } + } + + std::string couleur(carte c){ + switch(c.couleur){ + case PIC: + return "♠"; + case COEUR: + return "♥"; + case TREFLE: + return "♣"; + case CARREAU: + return "♦"; + default: + return "?"; + } + }; + + std::string* ascii(carte c){ + std::string* s = new std::string[3]; + std::string co = this->couleur(c); + s[0] = "\033[38;5;235m╭──╮"; + if (co == "♥" || co == "♦") s[1] = "│\033[31m"+this->valeur(c)+co+"\033[38;5;235m│"; + else s[1] = "│\033[30m"+this->valeur(c)+co+"\033[38;5;235m│"; + s[2] = "╰──╯"; + return s; + }; + + int length(){ + return this->len; + } + + private: + carte jdc[52]; + int len; +}; + +#endif diff --git a/src/course.cpp b/src/course.cpp deleted file mode 100644 index a6f75b4..0000000 --- a/src/course.cpp +++ /dev/null @@ -1,167 +0,0 @@ -#include - -enum CValeur{ - II, - III, - IV, - V, - VI, - VII, - VIII, - IX, - X, - J, - Q, - K, - A, -}; - -enum CCouleur{ - trefle, - pique, - coeur, - carreau, -}; - -struct carte{ - CValeur valeur; - CCouleur couleur; -}; - -void printCarte(const carte& c){ - switch (c.valeur){ - case II: - std::cout << '2'; - break; - case III: - std::cout << '3'; - break; - case IV: - std::cout << '4'; - break; - case V: - std::cout << '5'; - break; - case VI: - std::cout << '6'; - break; - case VII: - std::cout << '7'; - break; - case VIII: - std::cout << '8'; - break; - case IX: - std::cout << '9'; - break; - case X: - std::cout << 'd'; - break; - case J: - std::cout << 'J'; - break; - case Q: - std::cout << 'Q'; - break; - case K: - std::cout << 'K'; - break; - case A: - std::cout << 'A'; - break; - default: - std::cout << '?'; - break; - } - switch (c.couleur){ - case trefle: - std::cout << 'T'; - break; - case pique: - std::cout << 'P'; - break; - case carreau: - std::cout << 'K'; - break; - case coeur: - std::cout << 'C'; - break; - default: - std::cout << '?'; - break; - } -} - -int main(){ - carte jc[52]; - - int x = 0; - for (int i=0; i<4; i++){ - for (int y=0; y<13; y++){ - jc[x].valeur = CValeur(y); - jc[x].couleur = CCouleur(i); - x++; - } - } - - // printCarte(jc[0]); - // for (int i=1; i<52; i++){ - // if (!(i%13)){ - // std::cout << std::endl; - // }else{ - // std::cout << " - "; - // } - // printCarte(jc[i]); - // } - // std::cout << std::endl; - - int nvPalier[4]; - nvPalier[trefle] = 5; - nvPalier[pique] = 6; - nvPalier[coeur] = 3; - nvPalier[carreau] = 4; - - carte cartePalier[5]; - cartePalier[0].valeur = II; - cartePalier[0].couleur = trefle; - cartePalier[1].valeur = IV; - cartePalier[1].couleur = pique; - cartePalier[2].valeur = J; - cartePalier[2].couleur = pique; - cartePalier[3].valeur = X; - cartePalier[3].couleur = coeur; - cartePalier[4].valeur = IV; - cartePalier[4].couleur = carreau; - - std::cout << "👑|"; - if (nvPalier[0]>=6){ - std::cout << "■"; - }else{ - std::cout << "_"; - } - - for (int i=1; i<4; i++){ - if (nvPalier[i]==6){ - std::cout << "_■"; - }else{ - std::cout << "__"; - } - } - std::cout << "|" << std::endl; - - for (int i=4; i>0; i--){ - printCarte(cartePalier[i]); - std::cout << '|'; - for (int y=0; y<4; y++){ - if (nvPalier[y]>=i){ - std::cout << "■|"; - }else{ - std::cout << " |"; - } - } - std::cout << std::endl; - } - std::cout << "‾‾|T|P|C|K|" << std::endl; - - return 0; -} diff --git a/test/cartest.cpp b/test/cartest.cpp new file mode 100644 index 0000000..c98b80e --- /dev/null +++ b/test/cartest.cpp @@ -0,0 +1,9 @@ +#include +#include "carte.hpp" + +int main(){ + carte c = {III, TREFLE}; + if (c.valeur == 3 && c.valeur == 3) std::cout << "\033[32mOK\033[0m" << std::endl; + + return 0; +} diff --git a/test/testjdc.cpp b/test/testjdc.cpp new file mode 100644 index 0000000..8a9b730 --- /dev/null +++ b/test/testjdc.cpp @@ -0,0 +1,47 @@ +#include +#include "jdc.hpp" + +int main(){ + JDC jdc; + jdc.init(); + + jdc.shuffle(); + //jdc.display(); + //jdc.shuffle(); + //jdc.display(); + // + //carte c = jdc.top(); + //std::cout << "c : " << c.valeur << '+' << c.couleur << std::endl; + //std::cout << jdc.length() << std::endl; + //c = jdc.pop(); + //std::cout << "c : " << c.valeur << '+' << c.couleur << std::endl; + //std::cout << jdc.length() << std::endl; + // + //c = jdc.get(0); + //std::cout << "c : " << c.valeur << '+' << c.couleur << std::endl; + //std::cout << jdc.length() << std::endl; + // + //jdc.display(); + //std::cout << jdc.length() << std::endl; + // + //jdc.push({K, COEUR}); + //jdc.display(); + //std::cout << jdc.length() << std::endl; + // + //std::cout << "bottom = " << jdc.valeur(jdc.get(0)) << jdc.couleur(jdc.get(0)) << std::endl; + //std::cout << "2 = " << jdc.valeur(jdc.get(2)) << jdc.couleur(jdc.get(2)) << std::endl; + // + //std::cout << "top = " << jdc.valeur(jdc.top()) << jdc.couleur(jdc.top()) << std::endl; + //std::cout << jdc.couleur(jdc.top()).length() << std::endl; + + //std::cout << "\033[1;48;5;22m" << std::endl; + for (int y=0; y<52; y++){ + std::string* ss = jdc.ascii(jdc.get(y)); + for (int i=0; i<3; i++){ + std::cout << "\033[1;48;5;22;38;5;235m" << ss[i] << std::endl; + } + } + std::cout << "\033[0m" << std::endl; + + return 0; +} From 69a630303135bfc4b755f88de7b5a5ba9e16502c Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Sun, 13 Aug 2023 13:50:05 +0200 Subject: [PATCH 09/14] unicode c'est de la merde, ci+1 retoure en ascii --- Makefile | 2 +- include/jdc.hpp | 12 +++++-- include/screen.hpp | 81 ++++++++++++++++++++++++++++++++++++++++++++++ test/cartest.cpp | 2 +- test/scroon.cpp | 23 +++++++++++++ test/testjdc.cpp | 68 +++++++++++++++++++------------------- 6 files changed, 149 insertions(+), 39 deletions(-) create mode 100644 include/screen.hpp create mode 100644 test/scroon.cpp diff --git a/Makefile b/Makefile index 6049237..804e4e9 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ else OPT=-Og -g endif DEPFLAGS=-MP -MD -MACROS=HW PI=3.14 +MACROS= FLAGS=-Wall -Wextra $(foreach F,$(INCDIRS),-I$(F)) $(OPT) $(DEPFLAGS) $(foreach M,$(MACROS),-D$(M)) SRC=$(shell find . -name "*.$(EXT)" -path "./src/*") diff --git a/include/jdc.hpp b/include/jdc.hpp index a12ed48..bb95dbb 100644 --- a/include/jdc.hpp +++ b/include/jdc.hpp @@ -13,7 +13,7 @@ class JDC{ void init(){ this->len = 52; - int index = 0; + int index; for (int i=0; i<4; i++){ for (int y=0; y<13; y++){ index = (i*13)+y; @@ -65,7 +65,7 @@ class JDC{ return this->jdc[index]; } - std::string valeur(carte c){ + static std::string valeur(carte c){ if ((int)c.valeur < 10) return std::to_string(c.valeur); switch(c.valeur){ case T: @@ -83,7 +83,7 @@ class JDC{ } } - std::string couleur(carte c){ + static std::string couleur(carte c){ switch(c.couleur){ case PIC: return "♠"; @@ -100,6 +100,12 @@ class JDC{ std::string* ascii(carte c){ std::string* s = new std::string[3]; + //if (c == NULL){ + // s[0] = "\033[38;5;235m╭──╮"; + // s[1] = "│ȸȹ│"; + // s[2] = "╰──╯\033[0m"; + // return s; + //} std::string co = this->couleur(c); s[0] = "\033[38;5;235m╭──╮"; if (co == "♥" || co == "♦") s[1] = "│\033[31m"+this->valeur(c)+co+"\033[38;5;235m│"; diff --git a/include/screen.hpp b/include/screen.hpp new file mode 100644 index 0000000..cd51f02 --- /dev/null +++ b/include/screen.hpp @@ -0,0 +1,81 @@ +#ifndef SCREEN_HPP +#define SCREEN_HPP + +#include +#include +#include "jdc.hpp" + +template +struct point{ + T x; + T y; +}; + +struct sprite{ + std::string* s; + int row; + int col; +}; + +class Screen{ + public: + std::string** screen; + + Screen(int col, int row){ + this->col = col; + this->row = row; + + this->screen = new std::string*; + for (int i=0; iscreen[i] = new std::string; + } + }; + + ~Screen(){ + for (int i=0; iscreen[i]; + } + delete this->screen; + }; + + void background(){ + for (int i=0; iscreen[i] = new std::string; + for (int y=0; yscreen[i]) += "X"; + else if (!(i%2) && !(y%2)) *(this->screen[i]) += "X"; + else *(this->screen[i]) += "O"; + } + } + }; + + void display(){ + std::cout << "\033[1;48;5;22m" << std::endl; + for (int i=0; iscreen[i]) << std::endl; + } + std::cout << "\033[0m" << std::endl; + } + + void addCard(point p, carte c){ + this->screen[p.x]->replace(p.y, 4, "╭──╮"); + this->screen[p.x+1]->replace(p.y+1, 1, JDC::valeur(c)); + this->screen[p.x+1]->replace(p.y, 1, "│"); + this->screen[p.x+1]->replace(p.y+5, 1, "│"); + this->screen[p.x+1]->replace(p.y+4, 1, JDC::couleur(c)); + this->screen[p.x+2]->replace(p.y, 4, "╰──╯"); + }; + + int ligne(){ + return this->row; + } + + int colone(){ + return this->col; + } + private: + int row; + int col; +}; + +#endif diff --git a/test/cartest.cpp b/test/cartest.cpp index c98b80e..457535a 100644 --- a/test/cartest.cpp +++ b/test/cartest.cpp @@ -3,7 +3,7 @@ int main(){ carte c = {III, TREFLE}; - if (c.valeur == 3 && c.valeur == 3) std::cout << "\033[32mOK\033[0m" << std::endl; + if (c.valeur == 3 && c.couleur == TREFLE) std::cout << "\033[32mOK\033[0m" << std::endl; return 0; } diff --git a/test/scroon.cpp b/test/scroon.cpp new file mode 100644 index 0000000..8f9d9ec --- /dev/null +++ b/test/scroon.cpp @@ -0,0 +1,23 @@ +#include +#include "screen.hpp" +#include "jdc.hpp" + +int main(){ + Screen s(11, 5); + s.background(); + s.display(); + + JDC jdc; + jdc.init(); + jdc.shuffle(); + + point p = {0, 0}; + //sprite card = {jdc.ascii(jdc.top()), 3, 4}; + s.addCard(p, jdc.top()); + + //card = {jdc.ascii(NULL), 3}; + p = {0, 12}; + s.addCard(p, jdc.get(0)); + + s.display(); +} diff --git a/test/testjdc.cpp b/test/testjdc.cpp index 8a9b730..0f2a9a2 100644 --- a/test/testjdc.cpp +++ b/test/testjdc.cpp @@ -6,42 +6,42 @@ int main(){ jdc.init(); jdc.shuffle(); - //jdc.display(); - //jdc.shuffle(); - //jdc.display(); - // - //carte c = jdc.top(); - //std::cout << "c : " << c.valeur << '+' << c.couleur << std::endl; - //std::cout << jdc.length() << std::endl; - //c = jdc.pop(); - //std::cout << "c : " << c.valeur << '+' << c.couleur << std::endl; - //std::cout << jdc.length() << std::endl; - // - //c = jdc.get(0); - //std::cout << "c : " << c.valeur << '+' << c.couleur << std::endl; - //std::cout << jdc.length() << std::endl; - // - //jdc.display(); - //std::cout << jdc.length() << std::endl; - // - //jdc.push({K, COEUR}); - //jdc.display(); - //std::cout << jdc.length() << std::endl; - // - //std::cout << "bottom = " << jdc.valeur(jdc.get(0)) << jdc.couleur(jdc.get(0)) << std::endl; - //std::cout << "2 = " << jdc.valeur(jdc.get(2)) << jdc.couleur(jdc.get(2)) << std::endl; - // - //std::cout << "top = " << jdc.valeur(jdc.top()) << jdc.couleur(jdc.top()) << std::endl; - //std::cout << jdc.couleur(jdc.top()).length() << std::endl; + jdc.display(); + jdc.shuffle(); + jdc.display(); + + carte c = jdc.top(); + std::cout << "c : " << c.valeur << '+' << c.couleur << std::endl; + std::cout << jdc.length() << std::endl; + c = jdc.pop(); + std::cout << "c : " << c.valeur << '+' << c.couleur << std::endl; + std::cout << jdc.length() << std::endl; + + c = jdc.get(0); + std::cout << "c : " << c.valeur << '+' << c.couleur << std::endl; + std::cout << jdc.length() << std::endl; + + jdc.display(); + std::cout << jdc.length() << std::endl; + + jdc.push({K, COEUR}); + jdc.display(); + std::cout << jdc.length() << std::endl; + + std::cout << "bottom = " << jdc.valeur(jdc.get(0)) << jdc.couleur(jdc.get(0)) << std::endl; + std::cout << "2 = " << jdc.valeur(jdc.get(2)) << jdc.couleur(jdc.get(2)) << std::endl; + + std::cout << "top = " << jdc.valeur(jdc.top()) << jdc.couleur(jdc.top()) << std::endl; + std::cout << jdc.couleur(jdc.top()).length() << std::endl; //std::cout << "\033[1;48;5;22m" << std::endl; - for (int y=0; y<52; y++){ - std::string* ss = jdc.ascii(jdc.get(y)); - for (int i=0; i<3; i++){ - std::cout << "\033[1;48;5;22;38;5;235m" << ss[i] << std::endl; - } - } - std::cout << "\033[0m" << std::endl; + //for (int y=0; y<52; y++){ + // std::string* ss = jdc.ascii(jdc.get(y)); + // for (int i=0; i<3; i++){ + // std::cout << "\033[1;48;5;22;38;5;235m" << ss[i] << std::endl; + // } + //} + //std::cout << "\033[0m" << std::endl; return 0; } From 2c3d79c58168358e3b29638232a56ed208aaa81c Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Mon, 14 Aug 2023 13:12:08 +0200 Subject: [PATCH 10/14] retoure au char** --- include/carte.hpp | 4 ++-- include/jdc.hpp | 58 +++++++++++++++++++++++----------------------- include/screen.hpp | 49 +++++++++++++++++++++++++-------------- test/scroon.cpp | 12 +++++----- test/testjdc.cpp | 11 +++++---- 5 files changed, 75 insertions(+), 59 deletions(-) diff --git a/include/carte.hpp b/include/carte.hpp index 0e78d38..8fc96e4 100644 --- a/include/carte.hpp +++ b/include/carte.hpp @@ -18,7 +18,7 @@ enum VCarte{ }; enum CCarte{ - PIC, + PIC = 1, CARREAU, COEUR, TREFLE, @@ -27,6 +27,6 @@ enum CCarte{ struct carte{ VCarte valeur; CCarte couleur; -}; +}CARTERETOURNE = {VCarte(0), CCarte(0)}; #endif diff --git a/include/jdc.hpp b/include/jdc.hpp index bb95dbb..66374fa 100644 --- a/include/jdc.hpp +++ b/include/jdc.hpp @@ -65,54 +65,54 @@ class JDC{ return this->jdc[index]; } - static std::string valeur(carte c){ - if ((int)c.valeur < 10) return std::to_string(c.valeur); + static char valeur(carte c){ + if ((int)c.valeur >= 1 && (int)c.valeur < 10) return char(c.valeur+48); switch(c.valeur){ case T: - return "T"; + return 'T'; case J: - return "J"; + return 'J'; case Q: - return "Q"; + return 'Q'; case K: - return "K"; + return 'K'; case A: - return "A"; + return 'A'; default: - return "?"; + return '?'; } } - static std::string couleur(carte c){ + static char couleur(carte c){ switch(c.couleur){ case PIC: - return "♠"; + return 'P'; case COEUR: - return "♥"; + return 'C'; case TREFLE: - return "♣"; + return 'T'; case CARREAU: - return "♦"; + return 'K'; default: - return "?"; + return '?'; } }; - std::string* ascii(carte c){ - std::string* s = new std::string[3]; - //if (c == NULL){ - // s[0] = "\033[38;5;235m╭──╮"; - // s[1] = "│ȸȹ│"; - // s[2] = "╰──╯\033[0m"; - // return s; - //} - std::string co = this->couleur(c); - s[0] = "\033[38;5;235m╭──╮"; - if (co == "♥" || co == "♦") s[1] = "│\033[31m"+this->valeur(c)+co+"\033[38;5;235m│"; - else s[1] = "│\033[30m"+this->valeur(c)+co+"\033[38;5;235m│"; - s[2] = "╰──╯"; - return s; - }; + //std::string* ascii(carte c){ + // std::string* s = new std::string[3]; + // //if (c == NULL){ + // // s[0] = "\033[38;5;235m╭──╮"; + // // s[1] = "│ȸȹ│"; + // // s[2] = "╰──╯\033[0m"; + // // return s; + // //} + // std::string co = this->couleur(c); + // s[0] = "\033[38;5;235m╭──╮"; + // if (co == "♥" || co == "♦") s[1] = "│\033[31m"+this->valeur(c)+co+"\033[38;5;235m│"; + // else s[1] = "│\033[30m"+this->valeur(c)+co+"\033[38;5;235m│"; + // s[2] = "╰──╯"; + // return s; + //}; int length(){ return this->len; diff --git a/include/screen.hpp b/include/screen.hpp index cd51f02..2509b41 100644 --- a/include/screen.hpp +++ b/include/screen.hpp @@ -2,32 +2,31 @@ #define SCREEN_HPP #include -#include #include "jdc.hpp" template struct point{ - T x; T y; + T x; }; struct sprite{ - std::string* s; + char** data; int row; int col; }; class Screen{ public: - std::string** screen; + char** screen; - Screen(int col, int row){ + Screen(int row, int col){ this->col = col; this->row = row; - this->screen = new std::string*; + this->screen = new char*[row]; for (int i=0; iscreen[i] = new std::string; + this->screen[i] = new char[col]; } }; @@ -40,11 +39,11 @@ class Screen{ void background(){ for (int i=0; iscreen[i] = new std::string; for (int y=0; yscreen[i]) += "X"; - else if (!(i%2) && !(y%2)) *(this->screen[i]) += "X"; - else *(this->screen[i]) += "O"; + if (y%2 && i%2) this->screen[i][y] = 'X'; + else if (!(i%2) && !(y%2)) this->screen[i][y] = 'X'; + else this->screen[i][y] = 'O'; + //this->screen[i][y] = 'X'; } } }; @@ -52,20 +51,34 @@ class Screen{ void display(){ std::cout << "\033[1;48;5;22m" << std::endl; for (int i=0; iscreen[i]) << std::endl; + for (int y=0; yscreen[i][y]; + } + std::cout << std::endl; } std::cout << "\033[0m" << std::endl; } void addCard(point p, carte c){ - this->screen[p.x]->replace(p.y, 4, "╭──╮"); - this->screen[p.x+1]->replace(p.y+1, 1, JDC::valeur(c)); - this->screen[p.x+1]->replace(p.y, 1, "│"); - this->screen[p.x+1]->replace(p.y+5, 1, "│"); - this->screen[p.x+1]->replace(p.y+4, 1, JDC::couleur(c)); - this->screen[p.x+2]->replace(p.y, 4, "╰──╯"); + this->screen[p.x][p.y] = '+'; + this->screen[p.x][p.y+3] = '+'; + this->screen[p.x+2][p.y+3] = '+'; + this->screen[p.x+2][p.y] = '+'; + + this->screen[p.x][p.y+1] = '-'; + this->screen[p.x][p.y+2] = '-'; + this->screen[p.x+2][p.y+1] = '-'; + this->screen[p.x+2][p.y+2] = '-'; + + this->screen[p.x+1][p.y] = '|'; + this->screen[p.x+1][p.y+3] = '|'; + + this->screen[p.x+1][p.y+1] = JDC::valeur(c); + this->screen[p.x+1][p.y+2] = JDC::couleur(c); }; + //void addSprite(point p, sprite s){}; + int ligne(){ return this->row; } diff --git a/test/scroon.cpp b/test/scroon.cpp index 8f9d9ec..6fd1c1a 100644 --- a/test/scroon.cpp +++ b/test/scroon.cpp @@ -3,7 +3,9 @@ #include "jdc.hpp" int main(){ - Screen s(11, 5); + int row = 5; + int col = 11; + Screen s(row, col); s.background(); s.display(); @@ -12,12 +14,10 @@ int main(){ jdc.shuffle(); point p = {0, 0}; - //sprite card = {jdc.ascii(jdc.top()), 3, 4}; s.addCard(p, jdc.top()); + s.display(); - //card = {jdc.ascii(NULL), 3}; - p = {0, 12}; - s.addCard(p, jdc.get(0)); - + p = {col-4, row-3}; + s.addCard(p, CARTERETOURNE); s.display(); } diff --git a/test/testjdc.cpp b/test/testjdc.cpp index 0f2a9a2..15a2a1c 100644 --- a/test/testjdc.cpp +++ b/test/testjdc.cpp @@ -28,11 +28,14 @@ int main(){ jdc.display(); std::cout << jdc.length() << std::endl; - std::cout << "bottom = " << jdc.valeur(jdc.get(0)) << jdc.couleur(jdc.get(0)) << std::endl; - std::cout << "2 = " << jdc.valeur(jdc.get(2)) << jdc.couleur(jdc.get(2)) << std::endl; + c = jdc.get(0); + std::cout << "bottom = " << jdc.valeur(c) << jdc.couleur(c) << std::endl; + c = jdc.get(2); + std::cout << "2 = " << jdc.valeur(c) << jdc.couleur(c) << std::endl; - std::cout << "top = " << jdc.valeur(jdc.top()) << jdc.couleur(jdc.top()) << std::endl; - std::cout << jdc.couleur(jdc.top()).length() << std::endl; + c = jdc.top(); + std::cout << "top = " << jdc.valeur(c) << jdc.couleur(c) << std::endl; + //std::cout << jdc.couleur(jdc.top()).length() << std::endl; //std::cout << "\033[1;48;5;22m" << std::endl; //for (int y=0; y<52; y++){ From d7c235c365a919372135971917d5a94e0df23705 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Mon, 14 Aug 2023 14:42:42 +0200 Subject: [PATCH 11/14] screen display center --- include/screen.hpp | 38 +++++++++++++++++++++++++++++++------- test/scroon.cpp | 13 +++++++++++-- 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/include/screen.hpp b/include/screen.hpp index 2509b41..d1ce203 100644 --- a/include/screen.hpp +++ b/include/screen.hpp @@ -3,6 +3,9 @@ #include #include "jdc.hpp" +#include +#include +//#include template struct point{ @@ -21,6 +24,8 @@ class Screen{ char** screen; Screen(int row, int col){ + puts("\033[?1049h\033[H"); // alt screen + puts("\033[?25l"); // inv cursor this->col = col; this->row = row; @@ -35,28 +40,38 @@ class Screen{ delete this->screen[i]; } delete this->screen; + puts("\033[?1049l"); // ~ alt screen + puts("\033[?25h"); // ~ inv cursor }; void background(){ for (int i=0; iscreen[i][y]) continue; if (y%2 && i%2) this->screen[i][y] = 'X'; else if (!(i%2) && !(y%2)) this->screen[i][y] = 'X'; else this->screen[i][y] = 'O'; - //this->screen[i][y] = 'X'; } } }; void display(){ - std::cout << "\033[1;48;5;22m" << std::endl; + puts("\033[2J"); // clear screen + puts("\033[1;48;5;22m"); // bold + background green + + point coord = this->size(); + coord.x = coord.x/2 - col/2; + coord.y = coord.y/2 - row/2; + printf("\033[%d;%dH", coord.y, coord.x); + for (int i=0; iscreen[i][y]; + if (this->screen[i][y]) std::cout << this->screen[i][y]; + else std::cout << ' '; } - std::cout << std::endl; + printf("\033[%d;%dH", coord.y+i+1, coord.x); } - std::cout << "\033[0m" << std::endl; + puts("\033[0m"); // reset } void addCard(point p, carte c){ @@ -81,11 +96,20 @@ class Screen{ int ligne(){ return this->row; - } + }; int colone(){ return this->col; - } + }; + + static point size(){ + point p; + struct winsize size; + ioctl(1, TIOCGWINSZ, &size); + p.x = size.ws_col; + p.y = size.ws_row; + return p; + }; private: int row; int col; diff --git a/test/scroon.cpp b/test/scroon.cpp index 6fd1c1a..0b01e63 100644 --- a/test/scroon.cpp +++ b/test/scroon.cpp @@ -1,4 +1,5 @@ #include +#include #include "screen.hpp" #include "jdc.hpp" @@ -6,18 +7,26 @@ int main(){ int row = 5; int col = 11; Screen s(row, col); - s.background(); s.display(); + sleep(1); JDC jdc; jdc.init(); jdc.shuffle(); - + point p = {0, 0}; s.addCard(p, jdc.top()); s.display(); + sleep(1); + s.background(); + s.display(); + sleep(1); + p = {col-4, row-3}; s.addCard(p, CARTERETOURNE); s.display(); + sleep(1); + + return 0; } From 6529635f662616b517caed5bcf72d503a9be6ea1 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Mon, 14 Aug 2023 14:51:58 +0200 Subject: [PATCH 12/14] ajout TODO au gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6884326..84027d2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build/ .wakatime-project +TODO From c119abf31ecb9ed49695e9b8d580555a6b4d4c25 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Mon, 14 Aug 2023 18:07:29 +0200 Subject: [PATCH 13/14] ajout sprite --- include/screen.hpp | 9 ++++- test/sprot.cpp | 95 ++++++++++++++++++++++++++++++++++++++++++++++ test/testou.cpp | 30 +++++++++++++++ 3 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 test/sprot.cpp create mode 100644 test/testou.cpp diff --git a/include/screen.hpp b/include/screen.hpp index d1ce203..dfd4087 100644 --- a/include/screen.hpp +++ b/include/screen.hpp @@ -92,7 +92,14 @@ class Screen{ this->screen[p.x+1][p.y+2] = JDC::couleur(c); }; - //void addSprite(point p, sprite s){}; + void addSprite(point p, sprite s){ + for (int i=0; iscreen[p.x+i][p.y+y] = s.data[i][y]; + } + } + }; int ligne(){ return this->row; diff --git a/test/sprot.cpp b/test/sprot.cpp new file mode 100644 index 0000000..ea31d53 --- /dev/null +++ b/test/sprot.cpp @@ -0,0 +1,95 @@ +#include +#include +#include +#include "screen.hpp" + +int main(){ + Screen s(50, 50); + s.display(); + sleep(1); + + sprite sp = {NULL, 5, 5}; + sp.data = new char*[5]; + for (int i=0; i<5; i++){ + sp.data[i] = new char[5]; + for (int y=0; y<5; y++){ + sp.data[i][y] = '+'; + } + } + + point p = {22, 22}; + + s.addSprite(p, sp); + s.display(); + sleep(1); + + sprite sp2 = {NULL, 50, 50}; + sp2.data = new char*[50]; + for (int i=0; i<50; i++){ + sp2.data[i] = new char[50]; + for (int y=0; y<50; y+=2){ + sp2.data[i][y] = 'x'; + } + } + + point p2 = {0, 0}; + + s.addSprite(p2, sp2); + s.display(); + sleep(1); + + sprite sp3 = {NULL, 50, 50}; + sp3.data = new char*[50]; + for (int i=0; i<50; i+=2){ + sp3.data[i] = new char[50]; + sp3.data[i+1] = new char[50]; + for (int y=0; y<50; y++){ + sp3.data[i][y] = 'o'; + } + } + + point p3 = {0, 0}; + + s.addSprite(p3, sp3); + s.display(); + sleep(1); + + sprite sp4 = {NULL, 21, 21}; + sp4.data = new char*[21]; + for (int i=0; i<21; i++){ + sp4.data[i] = new char[21]; + } + + float x, y; + for (float i=0; i<2*3.14; i+=0.1){ + x = (std::cos(i)+1) * 5; + y = (std::sin(i)+1) * 10; + sp4.data[(int)x][(int)y] = '@'; + } + + point p4 = {14, 2}; + + s.addSprite(p4, sp4); + s.display(); + sleep(1); + + sprite sp5 = {NULL, 50, 50}; + sp5.data = new char*[50]; + for (int i=0; i<50; i++){ + sp5.data[i] = new char[50]; + for (int y=0; y<50; y++){ + sp5.data[i][y] = ' '; + } + } + + s.addSprite(p2, sp5); + s.display(); + sleep(1); + + s.addSprite({15, 20}, sp4); + s.display(); + sleep(1); + + sleep(3); + return 0; +} diff --git a/test/testou.cpp b/test/testou.cpp new file mode 100644 index 0000000..5311a2d --- /dev/null +++ b/test/testou.cpp @@ -0,0 +1,30 @@ +#include +#include +#include + +int main(){ + int size = 21; + char** s = new char*[size]; + for (int i=0; i Date: Tue, 15 Aug 2023 16:25:28 +0200 Subject: [PATCH 14/14] menu + machine a sous --- Makefile | 2 +- include/carte.hpp | 4 +- include/machine.hpp | 6 ++ src/machine.cpp | 93 +++++++++++++++++++++++++++++++ src/main.cpp | 131 ++++++++++++++++++++++++++++++++++++++++++++ test/sprot.cpp | 5 +- test/testou.cpp | 5 +- 7 files changed, 238 insertions(+), 8 deletions(-) create mode 100644 include/machine.hpp create mode 100644 src/machine.cpp create mode 100644 src/main.cpp diff --git a/Makefile b/Makefile index 804e4e9..0b4a4a8 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -PROJECTNAME=MasterMakefile +PROJECTNAME=cli-casino BIN=build/$(PROJECTNAME) CC=g++ diff --git a/include/carte.hpp b/include/carte.hpp index 8fc96e4..012293b 100644 --- a/include/carte.hpp +++ b/include/carte.hpp @@ -27,6 +27,8 @@ enum CCarte{ struct carte{ VCarte valeur; CCarte couleur; -}CARTERETOURNE = {VCarte(0), CCarte(0)}; +}; + +static carte CARTERETOURNE = {VCarte(0), CCarte(0)}; #endif diff --git a/include/machine.hpp b/include/machine.hpp new file mode 100644 index 0000000..49612cc --- /dev/null +++ b/include/machine.hpp @@ -0,0 +1,6 @@ +#ifndef MACHINE_HPP +#define MACHINE_HPP + +void machine(); + +#endif diff --git a/src/machine.cpp b/src/machine.cpp new file mode 100644 index 0000000..fc8fad7 --- /dev/null +++ b/src/machine.cpp @@ -0,0 +1,93 @@ +#include +#include +#include + +#include "machine.hpp" +#include "screen.hpp" +#include "jdc.hpp" + +void spriteDel(sprite* s){ + for (int i=0; irow; i++){ + delete s->data[i]; + } + delete s->data; +} + +void jack(Screen* s){ + strcpy(s->screen[5], " J A C K P O T "); +} + +void manche(Screen* s, char in){ + strcpy(s->screen[5], " "); + strcpy(s->screen[3], "| - - | - - | - - |"); + s->display(); + + srand(time(0)); + + char symbole[] = "OP@7AX"; + int symb_l = 6; + + // cheat & + if (in == '&'){ + char c = symbole[(rand()%symb_l)]; + + s->screen[3][3] = c; + s->screen[3][9] = c; + s->screen[3][15] = c; + jack(s); + + s->display(); + return; + } + + for (int i=0; i<15; i++){ + for (int y=0; y<(i%3)+1; y++){ + s->screen[3][3+6*y] = symbole[(rand()%symb_l)]; + } + s->display(); + usleep(200000); + } + + if (s->screen[3][3] == s->screen[3][9] && s->screen[3][9] == s->screen[3][15]) jack(s); + else strcpy(s->screen[5], " P E R D U "); + s->display(); +}; + +void machine(){ + Screen sm(6, 19); + + sprite sp = {NULL, 3, 19}; + sp.data = new char*[sp.row]; + for (int i=0; i> input; + while (input != 'q'){ + manche(&sm, input); + std::cin >> input; + } + + spriteDel(&sp); + spriteDel(&t); +} diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..e40c507 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,131 @@ +#ifdef _WIN32 +#include +#endif + +#include +#include +#include + +#include "screen.hpp" +#include "jdc.hpp" +#include "machine.hpp" + +void menu(){ + static Screen s(7, 18); + + sprite sp = {NULL, 7, 18}; + sp.data = new char*[sp.row]; + for (int i=0; i> input; + + switch (input){ + case '1': + //blackjack(); + std::cout << "blackjack" << std::endl; + break; + case '2': + //roulette(); + std::cout << "roulette" << std::endl; + break; + case '3': + machine(); + break; + case '4': + //course(); + std::cout << "course" << std::endl; + break; + } + if (input != 'q'){ + menu(); + selectGame(); + } +} + +void setup(){ + #ifndef _WIN32 + // echo off + struct termios term; + tcgetattr(1, &term); + term.c_lflag &= ~ECHO; + tcsetattr(1, TCSANOW, &term); + + // canon off + struct termios term2; + tcgetattr(1, &term2); + term2.c_lflag &= ~ICANON; + tcsetattr(1, TCSANOW, &term2); + + #else + + // active couleur sur windows + DWORD outMode = 0; + stdoutHandle = GetStdHandle(STD_OUTPUT_HANDLE); + if(stdoutHandle == INVALID_HANDLE_VALUE){ + exit(GetLastError()); + } + if(!GetConsoleMode(stdoutHandle, &outMode)){ + exit(GetLastError()); + } + outModeInit = outMode; + + outMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + if(!SetConsoleMode(stdoutHandle, outMode)){ + exit(GetLastError()); + } + + #endif +} + +void tearDown(){ + std::cout << "\033[0m \033[?25h \033[?1049l\033[?1049l\033[?1049l" << std::endl; + puts("\033[2J"); + puts("\033[0;0H"); + + #ifndef _WIN32 + // echo on + struct termios term; + tcgetattr(1, &term); + term.c_lflag |= ECHO; + tcsetattr(1, TCSANOW, &term); + + // canon on + struct termios term2; + tcgetattr(1, &term2); + term2.c_lflag |= ICANON; + tcsetattr(1, TCSANOW, &term2); + + #else + + // restore la console sur windows + if(!SetConsoleMode(stdoutHandle, outModeInit)){ + exit(GetLastError()); + } + #endif +} + +int main(){ + + setup(); + menu(); + selectGame(); + tearDown(); + + return 0; +} diff --git a/test/sprot.cpp b/test/sprot.cpp index ea31d53..099ea02 100644 --- a/test/sprot.cpp +++ b/test/sprot.cpp @@ -60,10 +60,9 @@ int main(){ sp4.data[i] = new char[21]; } - float x, y; for (float i=0; i<2*3.14; i+=0.1){ - x = (std::cos(i)+1) * 5; - y = (std::sin(i)+1) * 10; + float x = (std::cos(i)+1) * 5; + float y = (std::sin(i)+1) * 10; sp4.data[(int)x][(int)y] = '@'; } diff --git a/test/testou.cpp b/test/testou.cpp index 5311a2d..1db1f6b 100644 --- a/test/testou.cpp +++ b/test/testou.cpp @@ -9,10 +9,9 @@ int main(){ s[i] = new char[size]; } - float x, y; for (float i=0; i<2*3.14; i+=0.1){ - x = (std::cos(i)+1) * 10; - y = (std::sin(i)+1) * 10; + float x = (std::cos(i)+1) * 10; + float y = (std::sin(i)+1) * 10; std::cout << "cos : " << x << " sin : " << y << std::endl; std::cout << (int)x << ';' << (int)y << std::endl; s[(int)x][(int)y] = '@';