Just nu i M3-nätverket
Gå till innehåll

Slumpa ut poster


MaZoR

Rekommendera Poster

Hej. Jag bygger ett turneringssystem och behöver hjälp med att slumpa ut en post från databasen.

När alla har anmält sig vill jag att spelare 1 ska slumpas , så att han tex möter spelare 8 istället för nummer två. Går detta att ordna?

Tack!

Länk till kommentar
Dela på andra webbplatser

Hej.

 

Om du har numrering på posterna är det lätt.

 

<%

Dim Slumptal

Slumptal = Rnd * 10

%>

 

Slumptal blir då ett tal mellan 1 och 10 ..detta kan du använda i din SQLsats för att plocka en spelare från raden <% Slumptal %>

 

Hoppas det var till nån hjälp

 

 

// Admin på lunarkonkurrenten

http://nexxuz.jensite.com \

Länk till kommentar
Dela på andra webbplatser

Tjena!

 

Jag gissar att det i ett turneringssystem behöver tas höjd även för det faktum att man inte vill att spelare 1 ska få möta spelare 1, och att han inte heller vid samma tillfälle ska få möta spelare 4, 7 och 9 medan spelare 2 och 5 inte får möta någon alls... (exempelvis)

 

Har jag förstått saken rätt?

 

I så fall gör man klokt i att loopa igenom alla (i praktiken hälften av) spelarna, samt hålla reda på vilka som redan fått någon att möta, och inte slumpa fram någon av dessa.

 

Innan jag försöker lösa denna problematik, ser jag gärna en bekräftelse på att det är det som är frågeställningen...

 

/ Johan

 

[inlägget ändrat 2002-08-19 17:12:40 av Nollis]

Länk till kommentar
Dela på andra webbplatser

Precis, det script lordnexxus visar mig, kan ju göra så att spelare1 möter sig själv, osv.

 

Om du kan lösa det, vore det asschysst =)

Söker en bra proggrammerare för detta script, som kan hjälpa mig.

Svara här, eller på mazor@starcraftgamers.net.

Tack

 

Länk till kommentar
Dela på andra webbplatser

Tjena!

 

Efter många om och men har jag löst problemet på detta sätt:

 

<%
randomize

Dim turneringsdeltagare
turneringsdeltagare = 11

Dim bg ' hur många gånger ska listan blandas
bg = 10 ' jag tror det är klokt att det är mer än 1.
	' hur högt värde man väljer får man väga mot prestanda

Dim turneringslista()
ReDim turneringslista(turneringsdeltagare)

for x = 0 to turneringsdeltagare-1
turneringslista (x) = x+1
next

for x = 0 to turneringsdeltagare*bg
byt1 = int(turneringsdeltagare*rnd())
byt2 = int(turneringsdeltagare*rnd())
temp = turneringslista(byt1)
turneringslista(byt1) = turneringslista(byt2)
turneringslista(byt2) = temp
' nu har vi bytt position på siffrorna som fanns på två
' slumpvis utvalda ställen - dvs. "leken" blandas
next 

for x = 0 to turneringsdeltagare-1 step 2
' här föreslås att databasen uppdateras med vilka turneringsdeltagare som möter vem
'
if (turneringslista(x) <> "") AND (turneringslista(x+1) <> "") then
'MyConn.Execute("UPDATE turneringsdeltagare SET motstandare="&turneringslista(x)&" WHERE id="&turneringslista(x+1))
'MyConn.Execute("UPDATE turneringsdeltagare SET motstandare="&turneringslista(x+1)&" WHERE id="&turneringslista(x))
	Response.write("UPDATE turneringsdeltagare SET motstandare="&turneringslista(x)&" WHERE id="&turneringslista(x+1) & "<br>" & vbCrLf)
	Response.write("UPDATE turneringsdeltagare SET motstandare="&turneringslista(x+1)&" WHERE id="&turneringslista(x) & "<br>" & vbCrLf)
else
	Response.write("Vad gör vi med turneringsdeltagare "& turneringslista(x) & turneringslista(x+1) & "?")
end if
next
%>

 

Jag tror det ska funka... Frågan som du bara kan besvara själv, är hur du ska hantera den spelare som blir över - ska denna inte möta någon, eller ska han diskas, eller ska han med automatik tas med till nästa omgång... Ja, inte vet jag...

 

/ Johan

 

Länk till kommentar
Dela på andra webbplatser

Men varför ska det vara 11 personer?

Den personen kan få autovinst.

 

Men iallafall, vi ska prova med detta script, och om det inte funkar eller jag får problem , kan jag återkomma här då?

 

Du verkar vara en duktig programmerare, och jag söker en sådan för att bygga ett säsongsspel, till våran gaming-sida: http://www.starcraftgamers.net.

Ordentligt jobb, kan ingå betalning om du gör det seriöst.

 

Hör av dig om du är intresserad, eller vet någon annan som kan ta jobbet.

 

Tack för koden.

/Jonte

 

Länk till kommentar
Dela på andra webbplatser

Tjena!

 

Det får vara hur många personer som helst, men tanken med 11 var att ta höjd för det faktum att det kan vara ett udda antal personer som ska vara med i turneringen, och då är det alltid 1 som blir utan partner...

 

Återkom gärna här, om du har följdfrågor, eller per mail för all del....

 

/ Johan

 

Länk till kommentar
Dela på andra webbplatser

Det är så här att vi har info lagrat i en access databas.

Info som tex hur stor touren är(om det kan få plats 8,16 eller 32 spelare)

sen ska scriptet hämta den infon skapa tex. 16 tabeler (16 mananrs tour)

sen i dom tabelerna ska det lagras deltgarnas namn som vi också har i en databas, dom behöver slumpas ut 1 gång(när touren startas)och sen har vi så om det är tex en 16 mannars tour så kan man "bekräfta" 30 min innan den börjar, ibland blir det så att 13 st som exempel bara bekräftar, då får vi 3 platser över.

det betyder att man slumpar ut dom 13 personerna och dom som ej får en partner att spela mot får "autovinst".

Det är så här att man möter en person i 1vs1 , om ni vet hur brackets fungerar så behöver jag ej snacka mer om detta.

men det enda vi behöver är att den ska slumpa ut första 16 spelarna och ge autovinst om inte 16 pers har hunnit bekräfta. sen så bygger vi på det.

 

vill nu visa ett exempel från en mycket känd gaming sida som har inspirerat oss mycket.

http://www.gamingeye.com/pc/strategi/starcraft/turneringar/index.eye?id=1147

det är ett turenins script.

Så du får en uppfattning om hur vi vill ha det.

 

 

[inlägget ändrat 2002-08-20 16:53:55 av MaZoR]

[inlägget ändrat 2002-08-20 16:55:48 av MaZoR]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...