drellout Posted July 13, 2010 Report Share Posted July 13, 2010 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 (****) Quote Link to comment Share on other sites More sharing options...
Code Posted July 13, 2010 Report Share Posted July 13, 2010 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. Quote Link to comment Share on other sites More sharing options...
codez Posted July 13, 2010 Report Share Posted July 13, 2010 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%. Quote Link to comment Share on other sites More sharing options...
drellout Posted July 14, 2010 Author Report Share Posted July 14, 2010 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'");} ?> Quote Link to comment Share on other sites More sharing options...
sheps Posted July 14, 2010 Report Share Posted July 14, 2010 (edited) 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 July 14, 2010 by sheps Quote Link to comment Share on other sites More sharing options...
drellout Posted July 14, 2010 Author Report Share Posted July 14, 2010 Vienigais ko es pamaniju ka diezgan sudigi stradaa - ja uzliek kadam ktw 40000 tad sha vai taa uzvaras mainaas neuzvar 100% stiprakais... Quote Link to comment Share on other sites More sharing options...
sheps Posted July 14, 2010 Report Share Posted July 14, 2010 (edited) 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 July 14, 2010 by sheps Quote Link to comment Share on other sites More sharing options...
drellout Posted July 14, 2010 Author Report Share Posted July 14, 2010 Tur jau buus cipari no kadiem 100 lidz pat 2000 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.