Gå til innhold

Dele et lag helt random


Anbefalte innlegg

Videoannonse
Annonse
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 ;)

Lenke til kommentar
Gjest Slettet+142

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
Lenke til kommentar

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
Lenke til kommentar

 

<?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.

Lenke til kommentar

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
Lenke til kommentar

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å
×
×
  • Opprett ny...