Gå til innhold

nytt mafia nett spill


Anbefalte innlegg

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
Videoannonse
Annonse
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 :p

Lenke til kommentar

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 av bapeape
Lenke til kommentar
  • 3 uker senere...
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 :p

 

 

Waksy, det skripter var ikke fullt mafia skrips, det var mye som manglet. jeg tar designet og resten kan dere andre kose dere med :p snart ferdig med mitt :p

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