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)
|
||||
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
|
||||
|
|
|
@ -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