hamood
This commit is contained in:
parent
e944c64870
commit
8a122db98a
101
Makefile
101
Makefile
|
@ -1,9 +1,15 @@
|
||||||
PROJECTNAME=cli-casino
|
PROJECTNAME=MasterMakefile
|
||||||
BIN=build/$(PROJECTNAME)
|
BIN=build/$(PROJECTNAME)
|
||||||
CC=g++
|
CC=g++
|
||||||
|
|
||||||
EXT=cpp
|
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
|
# make mode=release
|
||||||
ifeq ($(mode), release)
|
ifeq ($(mode), release)
|
||||||
|
@ -12,50 +18,103 @@ else
|
||||||
OPT=-Og -g
|
OPT=-Og -g
|
||||||
endif
|
endif
|
||||||
DEPFLAGS=-MP -MD
|
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/*")
|
SRC=$(shell find . -name "*.$(EXT)" -path "./src/*")
|
||||||
OBJ=$(subst ./src/,./build/,$(SRC:.$(EXT)=.o))
|
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/*")
|
TEST=$(shell find . -name "*.$(EXT)" -path "./test/*")
|
||||||
|
TESTO=$(subst ./test/,./build/,$(TEST:.$(EXT)=.t))
|
||||||
|
|
||||||
$(shell mkdir -p build)
|
$(shell mkdir -p build)
|
||||||
|
|
||||||
|
|
||||||
all : $(BIN)
|
all : $(BIN)
|
||||||
|
|
||||||
$(BIN) : $(OBJ)
|
$(BIN) : $(OBJ) $(LIBO)
|
||||||
$(CC) $(FLAGS) -o $@ $^
|
$(CC) $(FLAGS) -o $@ $^
|
||||||
|
|
||||||
-include $(DEP)
|
-include $(OBJ:.o=.d) $(LIBO:.o=.d)
|
||||||
|
|
||||||
build/%.o : src/%.$(EXT)
|
build/%.o : src/%.$(EXT)
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
$(CC) $(FLAGS) -o $@ -c $<
|
$(CC) $(FLAGS) -o $@ -c $<
|
||||||
|
build/%.o : lib/%.$(EXT)
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
$(CC) $(FLAGS) -o $@ -c $<
|
||||||
|
|
||||||
run : all
|
# make test file=testGenID.cpp
|
||||||
./$(BIN)
|
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 :
|
clean :
|
||||||
rm -rf build/*
|
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 :
|
check :
|
||||||
cppcheck --enable=all --suppress=missingIncludeSystem $(foreach I,$(INCDIRS),-I$(I)) .
|
cppcheck --enable=all --suppress=missingIncludeSystem $(foreach I,$(INCDIRS),-I$(I)) .
|
||||||
flawfinder .
|
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 :
|
||||||
$(info put what ever)
|
$(info put what ever)
|
||||||
@echo you want
|
@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
|
||||||
|
|
|
@ -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
|
|
@ -0,0 +1,120 @@
|
||||||
|
#ifndef JDC_HPP
|
||||||
|
#define JDC_HPP
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <cstdlib>
|
||||||
|
#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; i<this->len; 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
|
167
src/course.cpp
167
src/course.cpp
|
@ -1,167 +0,0 @@
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#include <iostream>
|
||||||
|
#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;
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
#include <iostream>
|
||||||
|
#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;
|
||||||
|
}
|
Loading…
Reference in New Issue