webForumDet fria alternativet
Logga in / Bli medlem

Problem med randomize igen...

ASP

6 svar · 115 visningar · startad av limpon

Medlem sedan sep. 2001175 inlägg
Trådstart#1

Jag har ett problem igen.. med denna ¤#"% randomizen.

Jag vet hur man plockar fram en randomizad spelare.

Men hur plockar man fram flera?

Jag tänkte mig att det skulle bli nått sånt här.

Do until RS.EOF OR I = 7

brasql = "select * from player where spelare_agd_av = '"&nick&"'"
set spelare = databas.execute(brasql)
if not spelare.eof then
arr = spelare.getrows()
randomize
cnt = ubound(arr,2) + 1
s = int(cnt*rnd)

mal = arr(i,s)
(Sedan en update sats här)
RS.Movenext
Loop

Själva problemet ligger i mitt spel. där egentligen 7 är antalet gjorda mål, som är variabeln "gjordamal".
Men vi får inga spelare att skrivas ut för att ha gjort mål. Och icke assists heller, hoppas nån förstår problemet.. Tack

Medlem sedan dec. 200012 464 inlägg
#2

Nej, jag förstår inte.

Varifrån kommer RS och hur får nick värdet? Nu gör utför du samma select flera gånger. Skall det vara flera spelare ägd av samma nick eller olika spelare.

Hur skulle du använda gjordamal/assists?

Randomize bör ligga utanför loopen.

Medlem sedan sep. 2001175 inlägg
#3

Ja det ska kunna vara flera spelare som är ägd av samma nick. För det är ju mål i matcherna jag vill randomiza ut till spelarna man har i tabellen player.

Jag testade även den här..

sql = "select * from player where spelare_agd_av = '"&nick&"'"
Set RS = Databas.Execute(SQL)
I = 0
Do until RS.EOF or I = 7
Randomize
mal = Int(rnd*RS("id"))
I=I+1
(sedan en update sats här.)
RS.Movenext
Loop

Jag tycker den här randomize satsen är lättsammare att förstå =).

Men som sagt förrut så är jag ny på randomize, har inte full kläm på det hela ännu. Hoppas du förstår lite mer nu ialla fall. annars får du säga till :)

Medlem sedan dec. 200012 464 inlägg
#4
brasql = "select id from player where spelare_agd_av = '"&nick&"'"
set spelare = connect.execute(brasql)
if not spelare.eof then
   arr = spelare.getrows()
   cnt = ubound(arr,2) + 1
   randomize
   for i = 1 to 7
       s = int(cnt*rnd)
       sql = "update player set mal = mal + 1 where id = " & arr(0,s)
       connect.execute sql,,128
   next
end if

är det något sådant du vill ha. Nu är det 7 slumpvis utvalda spelare som får ett mål till. (Som det är nu så kan samma spelare bli framslumpad flera gånger.)

Medlem sedan sep. 2001175 inlägg
#5

Ja exakt, så det ska vara =)
Jag måste göra något nu bara för att målvakterna ska ju inte kunna göra t.ex 3 mål på en match =)

Men tusen tack. En fråga jag har bara.

arr = spelare.getrows()
cnt = ubound(arr,2) + 1

arr`? får den alla posterna?
sedan cnt förstår jag inte alls.

har du tid o förklara så vore jag tacksam

Medlem sedan dec. 200012 464 inlägg
#6

Ja, arr kommer att innehålla alla poster från select-satsen. Det är en tvådimensionell array där varje rad innehåller en post från tabellen.

funktionen Ubound(arr,2) returnerar det högsta indexet i arrayen. Eftersom första index är 0 så kommer då cnt att innehålla antalet rader som finns i arrayen.

Medlem sedan sep. 2001175 inlägg
#7

Aha jag förstår inte så mycket men jag förstår funktionen på dom nu =)
Tack för hjälpen Lasse.

463 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
334 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)