Gå til innhold

Dele et lag helt random


Anbefalte innlegg

Skrevet

Jeg har lagret disse linjene i en databasetabell med navn table:

1 Nils

2 Arne

3 Bjørn

4 Nils

5 Harald

6 Petrus

 

Hvordan får jeg delt disse spillerne i to lag, helt tilfeldig ved hjelp av php?

Videoannonse
Annonse
Skrevet

jeg har ikke koden, men går det ikke an å:

 

sette alle navnene inn i ett array

 

foreach ($array_med_navn as $navn) {

$tall = random_funksjon();

 

if ($tall == 1) {

//sette $navn inn i $array1

}

if ($tall == 2) {

//sette $navn inn i $array2

}

}

Skrevet
jeg har ikke koden, men går det ikke an å:

 

sette alle navnene inn i ett array

 

foreach ($array_med_navn as $navn) {

$tall = random_funksjon();

 

if ($tall == 1) {

//sette $navn inn i $array1

}

if ($tall == 2) {

//sette $navn inn i $array2

}

}

7494783[/snapback]

 

for meg hørtes dette ut som en dårlig løsning ;)

Gjest Slettet+142
Skrevet (endret)

du kan forsøke å lage en enkel kode ved hjelp av rand()..

jeg gidder ikke lage koden nå, men kanskje jeg gidder senere :p

 

 

edit:

jeg gadd visst å lage kode allikevel.. denne er utestet. i tillegg har jeg aldri laget noe lignende kode før, så du får bare prøve og håpe :p

 

<?php

$query = mysql_query("select * from folk");

$players = array();
$i = 0;

while($result = mysql_fetch_assoc($query)){
$players[] = $result["nick"];
// her går jeg utifra at du har en tabell som heter "folk", og at navnet på kolonnen i tabellen som inneholder navnet, heter "nick"
// alle spillerne lagres i en array, $players
$i++; // øker $i med 1.. dette fordi at jeg vil vite hvor mange spillere det er;)
}


$used = array();
$team1 = array();
$team2 = array();

for($k=0; $k<$i;$k++){

$rand = rand(0, $i-1);
while(in_array($rand, $used)) $rand = rand(0, $i-1);

if($k % 2) $team1[] = $players[$rand];
  else $team2[] = $players[$rand];

$used[] = $rand;


} // for

echo '<h2>TEAM 1:</h2><pre>';
foreach($team1 as $player) echo $player.'<br />';
echo '</pre>';

unset($player);

echo '<h2>TEAM 2:</h2><pre>';
foreach($team2 as $player) echo $player.'<br />';
echo '</pre>';

unset($player);
?>

 

edit 2:

jeg ser at det skjer noe rart.. av og til, så mangler det en person i et av teamene :confused:

 

edit 3:

jeg tror jeg rettet feilen

 

edit 4:

 

dette skriptet bruker jeg til uttestingen:

 

<html><head> <meta http-equiv="content-type" content="iso-8859-1" /> </head> <body>
<?php

/*
$query = mysql_query("select * from folk");

$players = array();
$i = 0;

while($result = mysql_fetch_assoc($query)){
$players[] = $result["nick"];
// her gr jeg utifra at du har en tabell som heter "folk", og at navnet p kolonnen i tabellen som inneholder navnet, heter "nick"
// alle spillerne lagres i en array, $players
$i++; // ker $i med 1.. dette fordi at jeg vil vite hvor mange spillere det er;)
}
*/

$players = array();
$players[] = "Nils";
$players[] = "Arne";
$players[] = "Bjørn";
$players[] = "Nils2";
$players[] = "Harald";
$players[] = "Petrus";

$i = count($players);

$used = array();
$team1 = array();
$team2 = array();

for($k=0; $k<$i;$k++){

$rand = rand(0, $i-1);
while(in_array($rand, $used)) $rand = rand(0, $i-1);

if($k % 2) $team1[] = $players[$rand];
  else $team2[] = $players[$rand];

$used[] = $rand;


} // for

echo '<h2>TEAM 1:</h2><pre>';
foreach($team1 as $player) echo $player.'<br />';
echo '</pre>';

unset($player);

echo '<h2>TEAM 2:</h2><pre>';
foreach($team2 as $player) echo $player.'<br />';
echo '</pre>';

unset($player);
?>
</body></html>

 

Endret av Slettet+142
Skrevet (endret)

hmm

fant en bug.

hvis det bli lagt på en spiller till så blir den nederste ALTID en mer enn den andre.

 

ska teste litt mer så vent på edit.

 

EDIT

Klikk for å se/fjerne innholdet nedenfor
<html>
<head> 
<title>Lag gen</title>
</head> 
<body>
<?php
$players = array
 	(
 	'Spiller1',
 	'Spiller2',
 	'Spiller3',
 	'Spiller4',
 	'Spiller5',
 	'Spiller6',
 	'Spiller7',
 	'Spiller8',
 	'Spiller9',
 	'Spiller10',
 	'Spiller11',
 	'Spiller12'
 	);

$count = count($players);
$lag = $count / 2;
$lag1 = $lag;
$lag2 = $lag;
if($lag != floor($lag))
{
unset($lag1);
unset($lag2);
$rand = rand(0, 1);
if($rand == 1)
{
 $lag1 = $lag + 0.5;
 $lag2 = $lag - 0.5;
}
else
{
 $lag1 = $lag - 0.5;
 $lag2 = $lag + 0.5;
}
unset($rand);
}
unset($lag);
$i = 0;
while(count($player1) < $lag1)
{
$count2 = count($players);
$rand = rand(0, $count);
if(!empty($players[$rand]) && !empty($count2))
{
 $player1[$i] = $players[$rand];
 unset($players[$rand]);
 $i++;
}
elseif(empty($count2))
{
 $i = $lag1;
}
}
unset($i);
unset($rand);
$i = 0;
while(count($player2) < $lag2)
{
$count3 = count($players);
$rand = rand(0, $count);
if(!empty($players[$rand]) && !empty($count3))
{
 $player2[$i] = $players[$rand];
 unset($players[$rand]);
 $i++;
}
elseif(empty($count3))
{
 $i = $lag2;
}
}
echo 'Lag 1<br>';
for($a = 0; $a < count($player1); $a++)
{
echo $player1[$a].'<br>';
}
echo '<br><br>';
echo 'Lag 2<br>';
for($b = 0; $b < count($player2); $b++)
{
echo $player2[$b].'<br>';
}
?>
</body>
</html>

 

lagde en kode selv jeg :D

Du får selv velge hvem du vil bruke

Endret av AlecTBM
Skrevet

 

<?php
$spillere = array(
'Knut',
'Hedvig',
'Arnulf',
'Kim-Johnny',
'Alf',
'Aase',
);
shuffle($spillere);
foreach ( $spillere as $key => $value ) 
{
if ($key % 2) 
{
 	$team1[] = $value;
}
else
{
 $team2[] = $value;
}
}
echo "<pre>";
print_r($team1);
print_r($team2);
echo "</pre>";
?>

 

Eneste er at team2 alltid vil ha en spiller mer om antallet i array'et er et oddetall.

Skrevet (endret)

mixed array_rand ( array input [, int num_req] )

 

<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>

 

rett ut fra min gode venn Phpmanualen :)

Endret av Tussi_qwerty
Skrevet
ok

si fra om ka du syns da

7499553[/snapback]

ok. ble ikke noe testing i dag, får se hva jeg får til i løpet av helga ;)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...