grimjoey Skrevet 14. desember 2007 Del Skrevet 14. desember 2007 Dersom koden er generert av et annet program er det kanskje ikke så ille. Men er det håndskrevet ville vedkommende helt klart spart noen linjer på å lære seg bruken av løkker. Det er jo ikke brukt en eneste løkke så vidt jeg kan se. At det er mye dårlig kode ute er det ingen tvil om. Derfor er det viktig at de som tror de vet bedre tilbyr konstruktiv kritikk i stedet for bare å fortelle verden at de kan bedre. For de som er interessert kan dere jo ta en titt på denne koden: (Ikke alt fungerer som det skal, blandt annet update spørringene) <?php /* En ordentlig "kriminalitet-funksjon" krever litt database planlegging. brukertabell id brukernavn passord rank brukererfaring penger 1 mafioso **** 37 0 1200 skilltabell id krimid brukerid skill 1 1 1 0 2 2 1 2 krimtabell id krim vanskelighetsgrad risiko gevinst tap erfaring 1 rane gammel dame 10 5 5 35 5 2 rane bank 43 30 100 1000 30 resultattabell id krimid resultat vinn tatt 1 1 damen var for rask for det 0 0 2 1 du gjennomførte med stil 1 0 3 1 du gjorde en tabbe og ble tatt 0 1 4 2 du klarte å rane banken 1 0 5 2 du fikk ikke opp siste låsen og måtte stikke 0 0 6 2 du kom ikke ut av banken og ble derfor tatt 0 1 erfaring, skill, risiko og vanskelighetsgrad er oppgitt i prosentpoeng for enkelhets skyld */ function visRes($krimId, $vinn, $tatt) { $qry = 'SELECT resultat FROM resultattabell WHERE krimId = '.$krimId.' AND vinn = '.(int)$vinn.' AND tatt = '.(int)$tatt.';'; $res = mysql_query($qry); while ($tassoc = mysql_fetch_assoc($res)) { $assoc[] = $tassoc; } print_r($assoc); srand(); $velg = rand(0, count($assoc)); return $assoc[$velg][$resultat]; } function utforKrim($krimId, $brukerId) { // finne brukerskill $qry = 'SELECT skill FROM skilltabell WHERE krimid = '.(int)$krimId.' AND brukerid = '.(int)$brukerId.';'; // sørg for å koble til database før du bruker funksjonen $res = mysql_query($qry); $row = mysql_fetch_row($res); $brukerSkill = $row[0]; // finne vanskelighetsgrad og risiko, samt mulig gevinst, mulig tap og erfaringsgevinnst $qry = 'SELECT vanskelighetsgrad, risiko, gevinst, tap, erfaring FROM krimtabell WHERE id = '.(int)$krimId.';'; $res = mysql_query($qry); $assoc = mysql_fetch_assoc($res); extract($assoc); // dette lager variablene $vanskelighetsgrad = $assoc[0], $risiko = $assoc[1], osv... // trekk skillprosent fra vanskelighetsgrad if($skill > 0) { $skillratio = $skill / 100; $vanskelighetsgrad *= $skillratio; } // gjør handling srand(); $action = rand(0, 100); // hent penge og erfaring info $qry = 'SELECT penger, brukererfaring FROM brukertabell WHERE id = '.(int)$brukerId.';'; $res = mysql_query($qry); $assoc = mysql_fetch_assoc($res); extract($assoc); echo $action.' - '.$vanskelighetsgrad; if ($action > $vanskelighetsgrad) { // Success // Gi skill, erfaring og gevinst $qry = 'UPDATE skilltabell SET skill = '.((int)$skill + 3).' WHERE brukerid = '.(int)$brukerId.' AND krimid = '.(int)$krimId.';'; mysql_query($qry); $qry = 'SELECT skill from skilltabell WHERE brukerid = '.(int)$brukerId.';'; $res = mysql_query($qry); $assoc = mysql_fetch_assoc($res); foreach ($assoc as $row) { $qry = 'UPDATE skilltable SET skill = '.((int)$row['skill'] + 1).' WHERE brukerId = '.(int)$brukerId.';'; mysql_query($qry); } $qry = 'UPDATE brukertabell SET penger = '.(int)$penger + (int)$gevinst.' WHERE id = '.(int)$brukerId.';'; mysql_query($qry); $qry = 'UPDATE brukertabell SET erfaring = '.(int)$erfaring + (int)$brukererfaring.' WHERE brukerid = '.(int)$brukerId.';'; mysql_query($qry); // gi tilbakemelding return visRes($krimId, 1, 0); } else { // Failure // Sjekk om du ble tatt srand(); $action = rand(0, 100); if ($action > $risiko) { // det gikk bra // gi tilbakemelding return visRes($krimId, 0, 0); } else { // det gikk dårlig // trekk fra tap $qry = 'UPDATE brukertabell SET penger = '.(int)$penger - $tap.';'; mysql_query($qry); // gi tilbakemelding return visRes($krimId, 0, 1); } } } ?> Lenke til kommentar
Ernie Skrevet 14. desember 2007 Del Skrevet 14. desember 2007 Hehe... Siden jeg vil tippe det er fra ett halvvkomersiellt mafiaspill tror jeg nok svaret der er nei Famen. Tviler ganske sterkt på at en som driver noe sånnt føler for å dele mer enn "skrytekode" med oss. Isåfall trist at så kvalitetsmessig dårlig kode faktisk får lov til å slippe ut på nett. Ser ut som databasen som tilhører koden ikke akkurat er optimal heller. Tilfredstiller tilsynelatende ikke 1NF engang. Uannsett, det finnes garantert verre kode ute på nettet. Dvs. jeg har faktisk sett verre kode i kategorien her. Mener nemlig å minnes å ha sett kode uten linjeskift. Som du sikkert skjønner var koden svært lesbar Lenke til kommentar
bapeape Skrevet 15. desember 2007 Del Skrevet 15. desember 2007 (endret) Jeg har ikke skrevet koden selv, jeg har ingen grunlag for å si om den er bra eller dårlig, ville i bunn å i grunn bare gi trådstarter ett intrykk av hvor vannsklig et slikt oplegg kan være.. men har grunnlag for å si at den virker, den er testet. Endret 15. desember 2007 av bapeape Lenke til kommentar
Waksy Skrevet 31. desember 2007 Del Skrevet 31. desember 2007 Skjekk ut Fullt mafiaspill script! (Engelsk verson) posten min Det kan du jo bruke til du har lært en del. Det skal i allefall jeg Lenke til kommentar
Dryper Skrevet 4. januar 2008 Del Skrevet 4. januar 2008 Skjekk ut Fullt mafiaspill script! (Engelsk verson) posten min Det kan du jo bruke til du har lært en del. Det skal i allefall jeg Waksy, det skripter var ikke fullt mafia skrips, det var mye som manglet. jeg tar designet og resten kan dere andre kose dere med snart ferdig med mitt Lenke til kommentar
BigJackW Skrevet 4. januar 2008 Del Skrevet 4. januar 2008 og resten kan dere andre kose dere med Nei ellers takk. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå