Hejsan!
Nu ved jeg selvfølgeligt ikke præcist hvordan du har bygget dit pokerspil
op, men jeg har taget udgangspunkt i de mest basale bestanddele af et hvert
kortspil; 'selve kortbunken', 'at blande' og at 'dele kort ud', og så prøvet
at lave en stump kode der gør hver af disse tre ting - Så kan du/man selv
apply'e funktionerne hvor de passer hvad end der er tale om et pokerspil
eller et andet kortspil.
// funktion der laver et spil kort
function kort() {
kuloere = ["hjaerter", "spar", "ruder", "kloer"];
bunke = new Array();
for (i=0; i<kuloere.length; i++) {
for (j=1; j<=13; j++) {
if (j == 1) {
k = "Es";
} else if (j == 11) {
k = "Knaegt";
} else if (j == 12) {
k = "Dame";
} else if (j == 13) {
k = "Konge";
} else {
k = j;
}
bunke.push(kuloere[i]+k);
}
}
return bunke;
}
// afprøv funktionen
trace(kort());
// slut afprøv funktionen
Resultatet bliver følgede:
hjaerterEs,hjaerter2,hjaerter3,hjaerter4,hjaerter5,hjaerter6,hjaerter7,hjaer
ter8,hjaerter9,hjaerter10,hjaerterKnaegt,hjaerterDame,hjaerterKonge,sparEs,s
par2,spar3,spar4,spar5,spar6,spar7,spar8,spar9,spar10,sparKnaegt,sparDame,sp
arKonge,ruderEs,ruder2,ruder3,ruder4,ruder5,ruder6,ruder7,ruder8,ruder9,rude
r10,ruderKnaegt,ruderDame,ruderKonge,kloerEs,kloer2,kloer3,kloer4,kloer5,klo
er6,kloer7,kloer8,kloer9,kloer10,kloerKnaegt,kloerDame,kloerKonge
....Og det er jo også fint nok - et helt spil kort. Nu skal vi så have
kortene blandet, ellers bliver det jo ret forudsigeligt når vi skal til at
'deale'. Jeg har fundet en prototype på:
http://www.layer51.com/proto/ (fremrangende forum for folk der er fremme i
skoene mht. flash, og en gratis flash-slikbutik for os andre), der netop gør
det vil skal bruge...
- "definition / randomize the array by shuffling the contents":
http://www.layer51.com/proto/d.asp?p=3&f=147
...Så når vi skal blande vores kort, så er det bare at skrive:
// lave først et spil kort
mineKort = kort();
// Bland kortene
mineKort.shuffle();
// test om kortene er blevet blandet
trace(mineKort);
...og sørme ja - mine kom ud sådan her:
ruder9,spar2,ruder6,kloer9,sparEs,hjaerterDame,spar5,ruderDame,sparDame,spar
3,kloer2,kloer5,hjaerter2,ruderEs,spar6,hjaerter5,ruder10,hjaerter9,kloerEs,
hjaerterKnaegt,hjaerter10,kloerKonge,kloer7,kloer6,kloer4,ruder5,hjaerter3,h
jaerter8,ruder2,hjaerterEs,ruder3,kloer3,spar7,spar10,ruder7,hjaerter6,sparK
naegt,ruder8,kloerKnaegt,kloer8,spar4,kloerDame,ruderKonge,hjaerterKonge,hja
erter7,sparKonge,spar8,kloer10,spar9,ruderKnaegt,ruder4,hjaerter4
Alt hvad vi mangler nu er at 'deale'. Altså at trække et ønsket antal kort
ud af bunken. Heldigvis har flash en indbygget funktion - pop(); - Der
fjerne det sidste element i et array, og bedst af alt, så returnere
funktionen værdien af det element som den fjerner fra array'et. Og det er
kan man jo se som værende netop den funktion vi skal bruge.. Fjern et det
sidste kort fra bunken og vis det.
Så for at give et kort kan vi bare skrive:
mineKort.pop();
// Test givning af et kort
trace(mineKort.pop());
Hvis man herefter tracer mineKort vil man se at array'et er blevet et
element kortere - Det kort der er blevet givet.
Herefter er det relativt let at lave en lille funktion der dealer en
'hånd' - altså mere en et enkelt kort.
// funktion der dealer en hånd
function deal(antalkort) {
haand = new Array();
for (i=1; i<=antalkort; i++) {
haand.push(mineKort.pop());
}
return haand;
}
// test eksempel
trace("Michael's 5 kort: " + deal(5));
...resultere i mit tilfælde:
Michael's 5 kort: kloer10,spar9,ruderKnaegt,ruder4,hjaerter4
ét par !
mvh.
Michael Peo