pull/37/head
Aurian JAULT 2 years ago
commit 6dd579ae16

@ -1,14 +1,19 @@
# HyperSet
## Description of the project
2nd Year Project of IT BUT in Aubière
## Notes
## Subject
- [Project subject](https://codefirst.iut.uca.fr/git/cedric.bouhours/Projets_SAE_S4/src/branch/master/Projets/Projet_11.md)
- [Original project website](https://sancy.iut.uca.fr/~lafourcade/hyper-set-reda/HyperSet/)
## Description of the project
[link of the initial project](https://codefirst.iut.uca.fr/git/cedric.bouhours/Projets_SAE_S4/src/branch/master/Projets/Projet_11.md)
null
## Created by :
## Project Convention
LACOTE Raphaël JAULT Aurian ARNAL Rémi JACQUELIN Bastien
- Functions names must be explicit, complete and follow **camelCase** naming
- Variable follow **camelCase** naming convention
- Opening brace must be at end of line
- Directories names my_directory
- Files names -> my_file.js
- No useless comments

@ -14,6 +14,7 @@
</section>
<script src="../Model/emptyParameterException.js"></script>
<script src="../Model/unfoundCardException.js"></script>
<script src="../Model/Card.js"></script>
<script src="../Model/Card5.js"></script>
<script src="../Model/Deck.js"></script>

@ -27,19 +27,44 @@ try {
}
console.groupEnd();
console.group('Deck');
let deck = new Deck();
console.log(`Output cards ${deck.outputCards}`);
let deck = new Deck(4);
console.log(`All cards with 4 attributes size ${deck.allCards.length}`);
console.log(`size ${deck.outputCards.length}`);
// deck.allCards.forEach(e => {
// console.log(e.color,e.number,e.shape,e.filling);
// });
console.log(`Output cards`);
deck.outputCards.forEach(e => {
console.log(e.color,e.number,e.shape,e.filling);
});
console.log(`set already made ${deck.setMade}`);
console.log(`All cards ${deck.allCards}`);
console.log(`Remaining cards ${deck.remainingCards}`);
console.groupEnd();
deck.allCards.forEach(e => {
console.log(e.color,e.number,e.shape,e.filling);
});
let customCard=[new Card('red',1,'diamond','stripped')];
deck.checkSet(customCard);
console.log(`deck size :${deck.allCards.length}`);
deck.allCards.forEach(e => {
console.log(e.color,e.number,e.shape,e.filling);
});
console.log(`remaining cars:`);
deck.setMade.forEach(e => {
console.log(e.color,e.number,e.shape,e.filling);
});
let deck5 = new Deck(5)
console.log(`All cards with 5 attributes size ${deck5.allCards.length}`);
// deck5.allCards.forEach(e => {
// console.log(e.color,e.number,e.shape,e.filling,e.outline);
// });
//console.log(`Remaining cards ${deck.remainingCards}`);
//console.log(`random : ${deck.getRandCard()}`);
console.group('Maths');
let list=[];
list.push(1);
list.push(2);
let gngn=Math.floor(Math.random() * list.length)
console.log(gngn);
console.groupEnd();

@ -29,5 +29,8 @@ class Card{
getAttributes(){
return [this.color,this.number,this.shape,this.filling];
}
equals(card){
return this.color===card.color && this.number===card.number && this.shape===card.shape && this.filling===card.filling;
}
}//export {Card}

@ -21,5 +21,8 @@ class Card5 extends Card {
// return [this.color,this.number,this.shape,this.filling,this.outline];
return super.getAttributes().concat(this.outline);
}
equals(card){
return this.color===card.color && this.number===card.number && this.shape===card.shape && this.filling===card.filling && this.outline===card.outline ;
}
}
// export {Card5};

@ -1,19 +1,74 @@
class Deck{
constructor(){
this.outputCards=this.createDeck();
this.setMade=[];
this.allCards=this.createCards();
this.remainingCards=this.allCards;
constructor(nbAttributes=4){
this.allCards=this.createCards(nbAttributes);// All the cards in the game
this.remainingCards=this.allCards;// cards in the stack
this.outputCards=[];// 12 cards lay on the table
this.setMade=[];// array with all the set already mades (array of set)
//this.createDeck();
}
createDeck(){
for (let i=0; i<12; i++){
const rand = this.getRandCard();
this.outputCards.push(this.remainingCards[rand]);
this.remainingCards.splice(rand,1);
}
}
getRandCard(){
Math.floor(Math.random() * remainingCards.length);
const random = Math.floor(Math.random() * this.remainingCards.length);
return random;
}
createCards(){
return 456;
/**
*
* @param {*} nbAttributes : attributes of the card, by default = 4
* @returns all cards: 81 in case of 4 attributes and 1224
*/
createCards(nbAttributes){
const tabColor = ['red','purple','green','blue','orange'];
const tabNumber = [1,2,3,4,5];
const tabShape = ['diamond','oval','wave','star','circle'];
const tabFilling = ['empty','stripped','full','pointed','squared'];
const tabOutline = ['full','dotted ','aa','bb','cc'];
let tabOfAllCards=[];
for (let c=0; c<nbAttributes-1; c++){
for (let n=0; n<nbAttributes-1; n++){
for (let s=0; s<nbAttributes-1; s++){
for (let f=0; f<nbAttributes-1; f++){
if(nbAttributes==4){
tabOfAllCards.push(new Card(tabColor[c],tabNumber[n],tabShape[s],tabFilling[f]));
}
else{
for(let o=0;o<nbAttributes-1;o++){
tabOfAllCards.push(new Card5(tabColor[c],tabNumber[n],tabShape[s],tabFilling[f],tabOutline[o]));
}
}
}
}
}
}
return tabOfAllCards;
}
checkSet(selectedCards){
if(true){//isSet(selectedCards)){
selectedCards.forEach(e => {
this.removeFromRemainingCards(e);
});
}
}
removeFromRemainingCards(selectedCards){//better check of card type more opti
let set=[];
for(let i=0; i<this.allCards.length;i++){
let e = this.allCards[i]
if(e.equals(selectedCards)){
set.push(e);
this.allCards.splice(i,1);
console.log("card remove : "+e.color,e.number,e.filling,e.shape);
}
}
if(set.length!=1){
throw new UnFoundCardException(selectedCards);
}
else{
this.setMade.push(set);
}
}
}

@ -0,0 +1,5 @@
class UnFoundCardException extends Error{
constructor(card){
super(`Card ${card.color +" "+ card.shape+ " " + card.number +" "+ card.filling} is missing`);
}
}
Loading…
Cancel
Save