Avatar billede wilweb Nybegynder
28. september 2001 - 22:26 Der er 4 kommentarer og
1 løsning

Random farver

Jeg er helt ny i ASP.
Jeg skal bruge 3 random farve værdier, en til BGCOLOR en til TEXT og en til ALINK, men de må aldrig være ens, hvordan sætter jeg det op.
Det jeg har udarbejdet kan jeg ikke få til at stemme overens.
<%
\'kode eksempel
\'Producerer 3 forskellige farve værdier i variabler bg, tx, al
randomize()
  bg=int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) &int((9*rnd)+1) & int((9*rnd)+1)
  tx=int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) &int((9*rnd)+1) & int((9*rnd)+1)
  al=int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) &int((9*rnd)+1) & int((9*rnd)+1)

\'tjekker om farve er ens

if bg = tx or bg = al or tx = al then
\'Hvis farver er ens, kør Randomize() en gang til
\'indtil at alle farver er forskellige
  do while bg = tx or bg = al or tx = al
    randomize()
    bg=int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) &int((9*rnd)+1) & int((9*rnd)+1)
    tx=int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) &int((9*rnd)+1) & int((9*rnd)+1)
    al=int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) &int((9*rnd)+1) & int((9*rnd)+1)
  loop
else
\'De er ikke mere ens og værdier tilskrives BGCOLOR,
\'TEXT og ALINK
response.write \"<body bgcolor=\" & bg & \" text=\" & tx & \" link=\" & al & \">\"
end if
%>
Er der nogen der ude der kan gide mig igennem, så er der 30 point
Avatar billede wilweb Nybegynder
28. september 2001 - 22:40 #1
Jeg har skiftet OR ud med AND så alle 3 udsagn bliver tester
Det var det.
Men er der ikke en bedre måde at finde en random farve end:
  randomize()
    bg=int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) & int((9*rnd)+1) &int((9*rnd)+1) & int((9*rnd)+1)

så kan det give 30 point i stedet
Avatar billede cpt.kangaroo Nybegynder
29. september 2001 - 00:38 #2
Hvad med:

for j = 0 to 5
bg = bg & Hex(Int(16 * rnd()))
tx = tx & Hex(Int(16 * rnd()))
al = al & Hex(Int(16 * rnd()))
next

Så får du Hex værdierne fra 000000 til FFFFFF. Med alle 16mio farver skulle der være endnu mindre chance for at de bliver ens :-)
Avatar billede wilweb Nybegynder
29. september 2001 - 07:37 #3
Tak for det. Den er helt fin, 30 point hjemme til dig.
Da jeg er ny i asp, gidder du forklare, hvad der lige sker her?
kunne man ikke bare skrive:
for j = 0 to 5
bg = Hex(Int(16 * rnd()))
tx = Hex(Int(16 * rnd()))
al = Hex(Int(16 * rnd()))
next

Hex er det en fastlagt ting eller er den en variabel du har lavet?
Avatar billede wilweb Nybegynder
29. september 2001 - 08:34 #4
Ahhaa
for next løkken kører 6 gange og tillægges en rnd værdi (fra 1 til 16) hver gang, men konverterer Hex til en Hex decimal?
Avatar billede cpt.kangaroo Nybegynder
29. september 2001 - 11:44 #5
Lige præcis :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester