Passiday / OOP-Cards

Library for card games
4 stars 8 forks source link

CukasPlayerPerspective created, cards.js edited and #12 done #8

Closed sakars closed 4 years ago

sakars commented 4 years ago

Should give sufficient info to a player - hand, trump card (delete that later), state(attacking, defending, waiting), the amount of cards others have and the cards on-table(attacking, defending)

sakars commented 4 years ago

Removed one of the references (#6)

sakars commented 4 years ago

is getGameInfo needed if createPerspective exists?

Passiday commented 4 years ago

Nē, vai nu viens vai otrs. Bet es neesmu pārliecināts, ka ir nepieciešams ieviest veselu klasi priekš objekta, kam nav paredzētas metodes vai propertijas. Arī statiskos laukus ar līdzīgām nozīmēm nevajadzētu dublēt. Es piedāvātu turēties pie vienkārša objekta tās datu čupas pārnēsāšanai:

{ hand: null, //current players hand (CardSet) attack: [], //cards attacking defence: [],//cards defending otherHandCount: [], //amount of cards of other players /Remove when trump card is sent properly to all users/ trump: null, //trump card state: null }

Vienīgais ieguvums, izmantojot klasi, ir, ka IDEs var kontrolēt, vai tiek respektēta tā struktūra un brīdināt, ja mēģina lasīt propertiju, kura neeksistē. Bet šis ir JavaScript, un tas, kas citā valodā nekompilētos, JavaScriptā ir pilnīgi legāli.

Passiday commented 4 years ago

Tu arī tajā objektā šobrīt pieglabā nevis spēlētāja rokas kopiju, bet pašu spēlētāja objektu, kas ir bezjēdzīgi (jo viņš pats ir šīs datu kopas lietotājs un viņam ir pieejams this) un bīstami (viņš var brīvi mainīt rokas saturu, piemēram salikt tur visus trumpjus). Playerim būtu jāpadod tikai spēles assetu kopijas, kuras mainot spēle netiek ietekmēta.

sakars commented 4 years ago

Nav īsti skaidrs ko man ar šo informāciju darīt

Passiday commented 4 years ago

Nu, Tu vari mēģināt mani pārliecināt, ka klase CukasPlayerPerspective tomēr ir nepieciešama. Mans viedoklis ir, ka ja klases deklarācija nesatur metodes, tad JavaScriptā ir pieejams lielisks tips, saukts "simple object", kuru inicializē caur {} sintaksi:

let gameInfo = {
  propertyA: 1,
  propertyB: "ABC",
  "@Weird-property.name": new Date()
}

Tas ir ideoloģisks jautājums, var gan tā, gan tā. Es gribētu, ka Tu izmēģini, kā ir sadzīvot ar simple object, un ja vēlāk izrādīsies, ka to tomēr ir izdevīgāk deklarēt kā klasi, tad būs ļoti viegli to pārtaisīt.

Attiecībā uz spēlētāja rokas kopiju, vienkārši parūpējies par to, lai CukasPlayer netiek klāt pie īstā rokas mainīgā, kurš tiek glabāts iekš CukasGame. Tāda prakse mūsu mazajā projektā varbūt šķiet mākslīga un sarežģīta, bet es to izmantoju, lai mums būtu diskusija par to, kāda būtu pareiza risinājuma arhitektūra, kas nodrošina pret neatļautām darbībām.

sakars commented 4 years ago

@towergame can i get a code review

sakars commented 4 years ago

If you need me to i can revert this toString() { if(this.isNormal()) { let symbol=this.getSuitSymbol(); if(this.rank < 11) { return this.rank + symbol; } else { switch(this.rank) { case 11: return "J" + symbol; case 12: return "Q" + symbol; case 13: return "K" + symbol; case 14: return "A" + symbol; } } } else { return "★"; } } but i don't think i should Yes it's not good to do that but i accidentally put it with some other commit If @Passiday or the creator of the original code (@towergame) insists i will revert it back

Passiday commented 4 years ago

Nevajag labot atpakaļ, tikai brīdinājums par commitu kultūru. Tādu satīrīšanu jāīsteno nodalītā commitā.

sakars commented 4 years ago

@towergame kas tās par requested changes? Es nevaru atrast ko tu piedāvā un ceru ka dabūšu review

sakars commented 4 years ago

izdariju ieteiktās izmaiņas

sakars commented 4 years ago

šis pull request ir dzīvojis gana ilgi Lūdzu ļaujiet viņam nomirt

sakars commented 4 years ago

Thank you