course d'as

This commit is contained in:
_N3m0 2023-08-15 20:36:09 +02:00
parent 53606e58c2
commit 2d0bb6912e
5 changed files with 234 additions and 6 deletions

6
include/course.hpp Normal file
View File

@ -0,0 +1,6 @@
#ifndef COURSE_HPP
#define COURSE_HPP
void course();
#endif

View File

@ -17,7 +17,7 @@ class JDC{
for (int i=0; i<4; i++){ for (int i=0; i<4; i++){
for (int y=0; y<13; y++){ for (int y=0; y<13; y++){
index = (i*13)+y; index = (i*13)+y;
this->jdc[index].couleur = (CCarte)i; this->jdc[index].couleur = (CCarte)(i+1);
this->jdc[index].valeur = (VCarte)(y+2); this->jdc[index].valeur = (VCarte)(y+2);
} }
} }

View File

@ -41,7 +41,7 @@ class Screen{
} }
delete this->screen; delete this->screen;
puts("\033[?1049l"); // ~ alt screen puts("\033[?1049l"); // ~ alt screen
puts("\033[?25h"); // ~ inv cursor //puts("\033[?25h"); // ~ inv cursor
}; };
void background(){ void background(){

224
src/course.cpp Normal file
View File

@ -0,0 +1,224 @@
#include <iostream>
#include <unistd.h>
#include <cstring>
#include "course.hpp"
#include "screen.hpp"
#include "jdc.hpp"
#include "carte.hpp"
carte tirer(JDC* j){
carte c = j->pop();
if (c.valeur == A) return tirer(j);
return c;
}
static void spriteDel(sprite* s){
for (int i=0; i<s->row; i++){
delete s->data[i];
}
delete s->data;
}
bool victoire(Screen* s, char* c){
char ligne[34] = " VICTOIRE ";
strcat(ligne, c);
strcpy(s->screen[s->ligne()-1], ligne);
return true;
}
void course(){
int HCASE = 4;
Screen sc(24, 34);
strcpy(sc.screen[0], "Appuyer sur * pour tirer une carte");
strcpy(sc.screen[1], "Appuyer sur q pour quitter ");
strcpy(sc.screen[2], " ");
strcpy(sc.screen[sc.ligne()-1], " ");
strcpy(sc.screen[sc.ligne()-2], " ");
for (int i=0; i<4; i++){
strcpy(sc.screen[3+i*4], " | | | | ");
strcpy(sc.screen[4+i*4], " | | | | ");
strcpy(sc.screen[5+i*4], " | | | | ");
strcpy(sc.screen[6+i*4], "----+----+----+----+---- ");
}
strcpy(sc.screen[19], " | | | | ");
strcpy(sc.screen[20], " | | | | ");
strcpy(sc.screen[21], " | | | | ");
constexpr point<int> Ppal1 = {20, 3};
constexpr point<int> Ppal2 = {20, 7};
constexpr point<int> Ppal3 = {20, 11};
constexpr point<int> Ppal4 = {20, 15};
sc.addCard(Ppal1, CARTERETOURNE);
sc.addCard(Ppal2, CARTERETOURNE);
sc.addCard(Ppal3, CARTERETOURNE);
sc.addCard(Ppal4, CARTERETOURNE);
point<int> Ppioche = {29, 19};
sc.addCard(Ppioche, CARTERETOURNE);
point<int> Ppic = {0, 19};
point<int> Pcoeur = {5, 19};
point<int> Pcarreau = {10, 19};
point<int> Ptrefle = {15, 19};
sc.addCard(Ppic, {A, PIC});
sc.addCard(Pcoeur, {A, COEUR});
sc.addCard(Pcarreau, {A, CARREAU});
sc.addCard(Ptrefle, {A, TREFLE});
sprite bar = {NULL, 3, 4};
bar.data = new char*[bar.row];
for (int i=0; i<bar.row; i++){
bar.data[i] = new char[bar.col];
}
strcpy(bar.data[0], "\\ ");
strcpy(bar.data[1], " \\ ");
strcpy(bar.data[2], " \\ ");
sc.addSprite({20, 19}, bar);
sc.display();
sprite vide = {NULL, 3, 4};
vide.data = new char*[vide.row];
for (int i=0; i<vide.row; i++){
vide.data[i] = new char[vide.col];
}
strcpy(vide.data[0], " ");
strcpy(vide.data[1], " ");
strcpy(vide.data[2], " ");
JDC j;
j.init();
j.shuffle();
bool vic = false;
char input;
std::cin >> input;
int palier = 15;
while (input != 'q' && !vic){
carte c = tirer(&j);
sc.addCard(Ppioche, c);
switch (c.couleur){
case PIC:
if (Ppic.x <= 3){
vic = victoire(&sc, "PIC");
}else{
sc.addSprite(Ppic, bar);
Ppic.x -= HCASE;
sc.addCard(Ppic, {A, PIC});
}
break;
case COEUR:
if (Pcoeur.x <= 3){
vic = victoire(&sc, "COEUR");
}else{
sc.addSprite(Pcoeur, bar);
Pcoeur.x -= HCASE;
sc.addCard(Pcoeur, {A, COEUR});
}
break;
case CARREAU:
if (Pcarreau.x <= 3){
vic = victoire(&sc, "CARREAU");
}else{
sc.addSprite(Pcarreau, bar);
Pcarreau.x -= HCASE;
sc.addCard(Pcarreau, {A, CARREAU});
}
break;
case TREFLE:
if (Ptrefle.x <= 3){
vic = victoire(&sc, "TREFLE");
}else{
sc.addSprite(Ptrefle, bar);
Ptrefle.x -= HCASE;
sc.addCard(Ptrefle, {A, TREFLE});
}
break;
}
if (Ppic.x <= palier && Pcoeur.x <= palier && Pcarreau.x <= palier && Ptrefle.x <= palier){
carte p = tirer(&j);
switch (p.couleur){
case PIC:
sc.addSprite(Ppic, vide);
Ppic.x += HCASE;
sc.addCard(Ppic, {A, PIC});
break;
case COEUR:
sc.addSprite(Pcoeur, vide);
Pcoeur.x += HCASE;
sc.addCard(Pcoeur, {A, COEUR});
break;
case CARREAU:
sc.addSprite(Pcarreau, vide);
Pcarreau.x += HCASE;
sc.addCard(Pcarreau, {A, CARREAU});
break;
case TREFLE:
sc.addSprite(Ptrefle, vide);
Ptrefle.x += HCASE;
sc.addCard(Ptrefle, {A, TREFLE});
break;
}
switch(palier){
case Ppal1.x:
sc.addCard(Ppal1, p);
break;
case Ppal2.x:
sc.addCard(Ppal2, p);
break;
case Ppal3.x:
sc.addCard(Ppal3, p);
break;
case Ppal4.x:
sc.addCard(Ppal4, p);
break;
}
palier -= HCASE;
}
sc.display();
//manche(&sc, &j);
std::cin >> input;
}
spriteDel(&bar);
spriteDel(&vide);
}
//Appuyer sur * pour tirer une carte
//Appuyer sur q pour quitter
//
//+--+| | | |+--+
//|AP|| | | ||??|
//+--+| | | |+--+
//----+----+----+----+----
// |+--+| |+--+|+--+
// ||AC|| ||AT|||??|
// |+--+| |+--+|+--+
//----+----+----+----+----
// | |+--+| |+--+
// | ||AK|| ||TT|
// | |+--+| |+--+
//----+----+----+----+----
// | | | |+--+ +--+
// | | | ||TT| |??|
// | | | |+--+ +--+
//----+----+----+----+----
// | | | |
// | | | |
// | | | |
// VICTOIRE CARREAU
// 4 esp
// 17 34

View File

@ -9,6 +9,7 @@
#include "screen.hpp" #include "screen.hpp"
#include "jdc.hpp" #include "jdc.hpp"
#include "machine.hpp" #include "machine.hpp"
#include "course.hpp"
void menu(){ void menu(){
static Screen s(7, 18); static Screen s(7, 18);
@ -38,18 +39,15 @@ void selectGame(){
switch (input){ switch (input){
case '1': case '1':
//blackjack(); //blackjack();
std::cout << "blackjack" << std::endl;
break; break;
case '2': case '2':
//roulette(); //roulette();
std::cout << "roulette" << std::endl;
break; break;
case '3': case '3':
machine(); machine();
break; break;
case '4': case '4':
//course(); course();
std::cout << "course" << std::endl;
break; break;
} }
if (input != 'q'){ if (input != 'q'){