/ Forside / Teknologi / Multimedie & design / Flash / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Flash
#NavnPoint
bentjuul 4251
molokyle 1978
Klaudi 1488
jhvp 1265
pallenoc 1160
katekismus 1020
Fnollerpi.. 790
slander 510
Dr.Disco 500
10  Flash77 500
At loade random billeder
Fra : Nocturno Culto


Dato : 28-07-02 22:41

Jeg er ved at lave et pokerspil hvor jeg skal have flash til at trække 5
tilfældige kort (billeder).
Der er selvfølgelig ikke 2 der må være ens. Er der nogen der ved hvordan gør
man det ?

--
Nocturno Culto
http://www.jesspar.dk/



 
 
Bo Dudek (31-07-2002)
Kommentar
Fra : Bo Dudek


Dato : 31-07-02 19:22

>Jeg er ved at lave et pokerspil hvor jeg skal have flash til at trække 5
>tilfældige kort (billeder).
>Der er selvfølgelig ikke 2 der må være ens. Er der nogen der ved hvordan gør
>man det ?

jeg kan da hjælpe dig lidt på vej med

kort1 = Math.round(Math.random ()*51+1);

giver et tilfældigt tal imellem 1 og 52.. kan du selv regne resten
ud?? ;)


Kind regards

Bo Dudek
http://www.bodudek.dk
http://www.bodudek.dk/cd (dsl or faster conn. only)

Nocturno Culto (01-08-2002)
Kommentar
Fra : Nocturno Culto


Dato : 01-08-02 11:00

"Bo Dudek" <bo@FJERNbodudek.dk> wrote
> jeg kan da hjælpe dig lidt på vej med
>
> kort1 = Math.round(Math.random ()*51+1);
>
> giver et tilfældigt tal imellem 1 og 52.. kan du selv regne resten
> ud?? ;)

Nu er jeg ikke den helt store kodehaj, men jeg vil kigge på det ellers
vender jeg frygteligt tilbage ;)


--
Nocturno Culto
http://www.jesspar.dk/



Søren Bjerrum (01-08-2002)
Kommentar
Fra : Søren Bjerrum


Dato : 01-08-02 13:36


"Bo Dudek" <bo@FJERNbodudek.dk> skrev i en meddelelse
news:3d482601.9445962@news.cybercity.dk...
>
> kort1 = Math.round(Math.random ()*51+1);
>

Jeg ville nu bare skrive:

kort1= 1+random(5);
//random(5) giver: 0,1,2,3 eller 4 så derfor +1

Math.round afrunder til et helt tal, men det er det jo allerede så ...

Søren Bjerrum





Poul Skovmand Thingh~ (01-08-2002)
Kommentar
Fra : Poul Skovmand Thingh~


Dato : 01-08-02 13:53

On 01/08/02 14:35, in article PV929.780$m15.148538@news010.worldonline.dk,
"Søren Bjerrum" <sb@mijau.dk> wrote:

>
> "Bo Dudek" <bo@FJERNbodudek.dk> skrev i en meddelelse
> news:3d482601.9445962@news.cybercity.dk...
>>
>> kort1 = Math.round(Math.random ()*51+1);
>>
>
> Jeg ville nu bare skrive:
>
> kort1= 1+random(5);
> //random(5) giver: 0,1,2,3 eller 4 så derfor +1

kort1 = random(51)+1; mener du vel?
>
> Math.round afrunder til et helt tal, men det er det jo allerede så ...

Hm. Tråden handler om at finde 5 tilfældige kort ud af 52 mulige. Og
samtidig undgå at få 2 klør knægt... eller 5 esser!!!
At finde et tilfældigt tal er (som I skriver) ret let.

Med venlig hilsen
Poul Skovmand Thingholm


Peo (01-08-2002)
Kommentar
Fra : Peo


Dato : 01-08-02 13:48

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













Peo (01-08-2002)
Kommentar
Fra : Peo


Dato : 01-08-02 14:10

...Tja, det kunne rent faktisk se ud som om der bliver dealet fra bunden af
bunken med pop(); - Selvfølgeligt kan der også dealens fra toppen med
shift();:

// funktion der dealer en hånd
function deal(antalkort) {
haand = new Array();
for (i=1; i<=antalkort; i++) {
haand.push(mineKort.shift());
}
return haand;
}
// test eksempel
trace("Michael's 5 kort: " + deal(5));

Forskellen er nøjagtigt eens!


/peo




Nocturno Culto (04-08-2002)
Kommentar
Fra : Nocturno Culto


Dato : 04-08-02 14:42

Mange tak Peo, det var virkelig noget jeg kunne bruge :)
Men hvad gør jeg nu hvor jeg rent faktisk vil have flash til at vise de
billeder/kort som dine funktioner har fundet frem til ? Jeg har 52 jpg
billeder af kort som gerne skulle vises. Det må være noget med at give dem
et instance navn der passer til kortene ikke? Men hvad ellers ?

--
Nocturno Culto
http://www.jesspar.dk/



Peo (04-08-2002)
Kommentar
Fra : Peo


Dato : 04-08-02 16:54

...lige præcis!
Hvor vi tidl. testede ved at trace...:
trace("Michael's 5 kort: " + deal(5));
Kan vi i stedet tildele værdien til en variabel, f.eks.
haand1 = deal(5);
Nu har vi et array der hedder haand1 der indeholder 5 kort. Hvert kort kan
således tilgåes som man plejer med et array - Det første kort; haand1[0] .
Det andet kort; haand1[1] osv.

....Så for at loade et billede ind for hver værdi i array'et, så er det bare
at lave et lille loop ala:
for (i=0; i<haand1.length; i++) {
// Her står den kode der henter hvert enkelt billede...
// som f.eks. kunne være:
loadMovie(haand1[i]+".swf", "kortholder"+i);
// ...som loader en ekster swf-fil der hedder det samme som
// værdien i array'et eks. (spar7), ind i et tomt movieclip med
// samme nummer som kortet, kortholder0, kortholder1..osv.
}

Dette eksempel er altså baseret på at du har 52 små swf.-filer liggende ved
siden af hovedfilmen.
Man kunne også have alle kortene liggende i bibliotektet og så bare attache
dem.

/peo



Nocturno Culto (04-08-2002)
Kommentar
Fra : Nocturno Culto


Dato : 04-08-02 17:24


Mmmm lækkert det virker perfekt :)
--
Nocturno Culto
http://www.jesspar.dk/



Peo (04-08-2002)
Kommentar
Fra : Peo


Dato : 04-08-02 17:46

Det lyder godt!
Hvis det er et pokerspil du er igang med at lave, ville jeg være meget
interesseret i at høre lidt om hvordan du har tænkt dig at teste om man har
en vindene hånd - altså om man har et par, to par, flush, straight osv.
/peo



Nocturno Culto (04-08-2002)
Kommentar
Fra : Nocturno Culto


Dato : 04-08-02 18:27

Hehe ja det ville jeg også gerne vide :) Jeg overvejer at nøjes med at black
jack spil i stedet - det burde være lidt mere simpelt. Men når jeg en dag er
blevet kodehaj så laver jeg et super deluxe poker spil, og du skal være den
første til at få hemmelighederne at vide ;)

--
Nocturno Culto
http://www.jesspar.dk/



Nocturno Culto (05-08-2002)
Kommentar
Fra : Nocturno Culto


Dato : 05-08-02 23:03

Når jeg skriver loadMovie(haand1[i]+".swf", "kortholder"+i); virker det godt
nok, men de eksterne .swf bliver åbnet i nye browser vinduer og ikke i selv
flash filen ? hvordan ordner man det ?

--
Nocturno Culto
http://www.jesspar.dk/



Nocturno Culto (05-08-2002)
Kommentar
Fra : Nocturno Culto


Dato : 05-08-02 23:07

Rettelse: jeg skriver ikke loadmovie, men loadmovienum da jeg ikke kan få
førstnævnte til at virke

--
Nocturno Culto
http://www.jesspar.dk/



Nocturno Culto (04-08-2002)
Kommentar
Fra : Nocturno Culto


Dato : 04-08-02 16:58

Jeg vil lige sige at jeg bruger flash 5 - jeg har set man kan gøre sådan i
flash MX (myclip.loadmovie("test.jpg");) men jeg kan ikke få det til at
virke i flash 5

--
Nocturno Culto
http://www.jesspar.dk/



Peo (04-08-2002)
Kommentar
Fra : Peo


Dato : 04-08-02 17:28

Det er nok fordi at flash5 ikke understøtter loading af jpg-filer. Den
eneste form for filer man kan loade er swf-filer.
Mit tidl ex. skulle meget gerne virke i 5'eren.

/peo




Nocturno Culto (04-08-2002)
Kommentar
Fra : Nocturno Culto


Dato : 04-08-02 20:11

Hmm kom lige til at tænke på at det egentlig ikke er så smart at alle
kort/billeder ligger externt, medmindre de bliver preloadet før spillet
begynder. Jeg har prøvet med attach movieclip, og det virker fint, men jeg
kan sgu ikke få dem væk igen :/ Er der en nem måde at preloade de externe
billeder på? eller er der noget andet der er bedre?

En helt anden ting er, at når jeg bruger Flash MX og gør sådan her:

"myclip.loadmovie("test.jpg");"

så er det lige som om den sætter et usynligt billede ind. "Myclip" er et
blåt billede, og det forsvinder når scriptet køres, men ellers sker der ikke
noget. Hvis jeg derimod skriver en url til et billede på nettet virker det
helt fint....det er sgu da underligt ?!?

--
Nocturno Culto
http://www.jesspar.dk/



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste