Jump to content
php.lv forumi

Sistema uzvara


drellout

Recommended Posts

Izdomaju taisit online speli. Tagad doma ir taisit taka sacikstes. Ideja apmeram ir tada

sakumaa vinsh izvelk abu reiceru status hp un ad vinsh vinju saskaita sanak piem 1200 pirmajam otrajam 1400 un tad vinsh atnem no lielaka mazako

sanak 200

tad if($rezultats > 10)

//mashias ir lidzvertigi jaudigas

tas nozime 10% ka uzvares ta mashina kurai ir vairak hp+ad un 90 ka php kods pats izvelesies uzvaretaju (ka ko tadu izveidot) ?

elseif($rezultats > 100)

///mashina ir mazliet jaudigaka

20% ka uzvares ta mashina kurai ir vairak hp+ad un 80 ka php kods pats izvelesies

 

 

Jautajums ir tads vai ir iespejams kautko tadu izveidot ? Lai php kods izvelas uzvaretaju procentos ja piem $rezultats> 1000 tad 80% ka uzvar ta kurai vairak un 20% ka pats izvelesies.. Varbut es kautko nepareizi domaju. Gaidu no jums piedavajumus varbut juus varat ieteikt ko gudraku, labaku, bet ideju ceru ka sapratat

 

 

 

P.S gribu izveidot online race tuning speli, jo tadu gandriz nav... dr.lv tas bzz vnk galigi (****)

Link to comment
Share on other sites

Uzreiz "ieleca" acīs šis:

if($rezultats > 10)

elseif($rezultats > 100)

Sāc ar lielāko vērtību. Šajā gadījumā, vienalga vai rezultāts būs 11 vai 111, tik un tā nostrādās pirmais IF's (pie otrā netiksi nekad).

 

Par tiem procentiem. Pirmais kas nāk prātā - uzģenerē random skaitli, piemēram, no 0 līdz 100 un tad arī skaties. Ja, piemēram, ja skaitlis ir no 0 līdz 20, tad pieņemam, ka ir 20% un lai uzvar auto ar visvairāk hp+ad, pretējā gadījumā tas otrs variants ko tur minēji.

Link to comment
Share on other sites

Kāpēc nevar vienkārši ar vienu random, kur pie vienāda līmeņa (hp+ad) abiem ir 50% iespēja uzvarēt, bet pie atšķirīga lielākajam vienkārši pieaug iespēja uzvarēt atkarībā no līmeņu starpības vai attiecības.

 

l1-mazākā līmenis

l2-lielākā līmenis

p2-varbūtība uzvarēt lielākajam

 

p2=100-50*l1/l2

 

ja l1=1000 un l2=1000, tad 100-50*(1000/1000)=50%

ja l1=1000 un l2=1000, tad 100-50*(1000/1200)=58,3%

 

PHP iznākumu nosaki

 

if (rand(0,99)<$p1){
 //uzvar stiprākais
} else {
 //uzvar vājākais
}

 

p2 aprēķina forumulu jau vari izdomāt pēc brīvas gribas, ievērojot, lai pie vienādiem līmeņiem p2 būtu 50%, bet pie milzīga pārākuma tuvotos 100%.

Link to comment
Share on other sites

Liels paldies tev codez :)

Rekur kods, varbut kadam vajadzes :D Gribu pajautat par kludam, bet itka jau viss stradaa.... vai var vienkarshot kautka ?

<?
include ("inc/config.mys.php");
$racer_one = '1000';
$racer_one_name = 'Pavels';
$racer_two = '1100';
$racer_two_name = 'Dmitrijs';
if ($racer_one > $racer_two){$pl = '50*($racer_one/$racer_two)';}
elseif ($racer_one < $racer_two){$pl = '50*($racer_two/$racer_one)';}
else $pl = '50';
$sql = mysql_query("SELECT * FROM `users` WHERE name='$racer_one_name'");
while($x = mysql_fetch_array($sql))
$x1 = $x[cash];
$cash_win1 = ($x1+300);
$cash_lose1 = ($x1-300);
$cash_win1 = mysql_real_escape_string(trim($cash_win1));
$cash_lose1 = mysql_real_escape_string(trim($cash_lose1));

$sql2 = mysql_query("SELECT * FROM `users` WHERE name='$racer_two_name'");
while($a = mysql_fetch_array($sql2))
$x2 = $a[cash];
$cash_win2 = ($x2+300);
$cash_lose2 = ($x2-300);
$cash_win2 = mysql_real_escape_string(trim($cash_win2));
$cash_lose2 = mysql_real_escape_string(trim($cash_lose2));

if (rand(25,99)<$pl){
echo "Uzvareja<br>";
echo $racer_one_name;
mysql_query("UPDATE `users` SET cash = '$cash_win1' WHERE name = '$racer_one_name'");
mysql_query("UPDATE `users` SET cash = '$cash_lose2' WHERE name = '$racer_two_name'");}
else{
echo "Uzvareja<br>";
echo $racer_two_name;
mysql_query("UPDATE `users` SET cash = '$cash_win2' WHERE name = '$racer_two_name'");
mysql_query("UPDATE `users` SET cash = '$cash_lose1' WHERE name = '$racer_one_name'");}
?>

Link to comment
Share on other sites

mana formula tev liekas krietni piemeerotaaka un loģiskāka tavam variantam :)

 

 

$p1 = 1400; // summa hp + ad

$p2 = 1000;

 

$p1Parakums = 50 + max(-50,min(50,($p1-$p2)/min($p1,$p2))); // ~ 80%

$p2Parakums = 100 - $p1Parakums; // ~ 20%

 

//formula noteiks cik procentuāli viens vai otrs spēlētājs ir spēcīgāks par otru, rezultāts būs no 0 līdz 100% pārākumam. ps: arī spēcīgie zaudē, tas jāatceras :)

 

 

//kas uzvar

 

if(rand(0,100)<=$p1Parakums){

// uzvar pirmais

}else{

// uzvar otrais

}

Edited by sheps
Link to comment
Share on other sites

Vienigais ko es pamaniju ka diezgan sudigi stradaa - ja uzliek kadam ktw 40000 tad sha vai taa uzvaras mainaas neuzvar 100% stiprakais...

 

 

viss atkarīgs cik lieli tev buus cipari.. bet kā jau tika meneets formulas var buut dažādas un min vietaa biju iekapaajis max.. tagad ar lielu parsvaru garanteeta uzvara :D

 

 

ja nelieto ciparu indeksus mysql_fetch_array radiitajaa masiivaa izmanto mysql_fetch_assoc, jo pirmais atgriež gan vienus gan otrus masīva elementus, sanāk dubūltā..

Edited by sheps
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...