Criar Browser Game - 7# Implementação de um sistema de estatísticas flexível (PHP)

Agora que temos mais como conceber um sistema flexível estatísticas, vamos dar uma olhada em como implementá-lo em PHP.

Para começar, vamos precisar de alguma estrutura da tabela de partida e de dados:

CREATE TABLE usuários ( 	id int NOT NULL AUTO_INCREMENT, 	nome varchar(250), 	senha varchar(50), 	PRIMARY KEY(id) ); CREATE TABLE Estatísticas ( 	id int NOT NULL AUTO_INCREMENT, 	o texto display_name, 	SHORT_NAME varchar(10), 	PRIMARY KEY(id) ); INSERT INTO Estatísticas(display_name,nome abreviado) VALUES ('Magic','mag'); INSERT INTO Estatísticas(display_name,nome abreviado) VALUES ('Ataque','atk'); CREATE TABLE user_stats ( 	int id NÃO NULL AUTO_INCREMENT, 	user_id int, 	int stat_id, 	texto de valor, 	PRIMARY KEY(id) );

E agora que isso é feito, podemos começar realmente a escrever código.

Para começar, vamos precisar de uma forma de puxar para trás o valor de uma estatística particular. A consulta SQL parecido com este:

SELECT valor FROM user_stats WHERE stat_id = <foo> E user_id = <bar>

Isso é muito útil, mas não exatamente o que queremos - porque é que em primeiro lugar queremos recuperar status de identificação, e então usá-lo para recuperar o valor? Seria muito mais agradável para fazer tudo isso com uma consulta:

SELECT valor FROM user_stats WHERE stat_id = (SELECT id FROM estatísticas WHERE display_name = <foo> OU SHORT_NAME = <foo>) e user_id = <bar>

Ao usar o que é conhecido como um sub-consulta para obter os ID stat, podemos encurtar nosso SQL para apenas uma consulta - o que significa que apenas precisamos interagir com o banco de dados uma vez para obter uma estatística para um jogador. Isso faz com que escrever uma função para recuperar estatísticas de um jogador banal:

1 2 3 4 5 6 7 8 9 10 11 12 13 
função getStat(statName $,$ userid) { 	require_once 'config.php'; 	$ conn = mysql_connect($ dbhost,dbuser $,$ dbpass) 		ou morrer ('Erro ao conectar ao mysql'); 	mysql_select_db($ dbname); 	$ query = sprintf("SELECT FROM WHERE valor user_stats stat_id = (SELECT id estatísticas ONDE display_name = '% sou nome abreviado '='% s') e user_id ='% s'", 		mysql_real_escape_string($ statName), 		mysql_real_escape_string($ statName), 		mysql_real_escape_string($ userid)); 	$ resultado = mysql_query($ query); 	lista($ valor) = mysql_fetch_row($ resultado); 	retornar valor de US $;		 }

Você viu todo este código antes - tudo o que estamos fazendo é criar uma consulta específica, e então retornando tudo o que recuperar. Isso é quase tão complexo como a recuperação stat recebe, se você estiver usando um sistema flexível ou não. E isso é realmente tudo o que há de implementar este sistema de estatísticas - que tomamos no nome (que poderia ser ou mostrar o nome ou o nome curto), e nós recuperamos e depois retornar o valor dentro da tabela.

Mas e se você quisesse atualizar o valor do stat? Isso é tão fácil:

1 2 3 4 5 6 7 8 9 10 11 12 
função setStat(statName $,$ userid,$ value) { 	require_once 'config.php'; 	$ conn = mysql_connect($ dbhost,dbuser $,$ dbpass) 		ou morrer ('Erro ao conectar ao mysql'); 	mysql_select_db($ dbname); 	$ query = sprintf("UPDATE SET user_stats valor = '% s'WHERE stat_id = (SELECT id estatísticas ONDE display_name ='% sou nome abreviado '='% s') e user_id ='% s'", 		mysql_real_escape_string($ value), 		mysql_real_escape_string($ statName), 		mysql_real_escape_string($ statName), 		mysql_real_escape_string($ userid)); 	$ resultado = mysql_query($ query); }

And that’s how you can update the stat! You can then do any transforming or displaying for your stat in your other logic, and just call those two functions when you need to store/retrieve stats(I’d even recommend splitting it off into its own page – something like stats.php or something).

Here’s all the code in one spot:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 
function getStat($statName,$userID) { 	require_once 'config.php'; 	$conn = mysql_connect($dbhost,$dbuser,$dbpass) 		or die ('Error connecting to mysql'); 	mysql_select_db($dbname); 	$query = sprintf("SELECT value FROM user_stats WHERE stat_id = (SELECT id FROM stats WHERE display_name = '%s' OR short_name = '%s') AND user_id = '%s'", 		mysql_real_escape_string($statName), 		mysql_real_escape_string($statName), 		mysql_real_escape_string($userID)); 	$result = mysql_query($query); 	list($value) = mysql_fetch_row($result); 	return $value;		 } function setStat($statName,$userID,$value) { 	require_once 'config.php'; 	$conn = mysql_connect($dbhost,$dbuser,$dbpass) 		or die ('Error connecting to mysql'); 	mysql_select_db($dbname); 	$query = sprintf("UPDATE user_stats SET value = '%s' WHERE stat_id = (SELECT id FROM stats WHERE display_name = '%s' OR short_name = '%s') AND user_id = '%s'", 		mysql_real_escape_string($value), 		mysql_real_escape_string($statName), 		mysql_real_escape_string($statName), 		mysql_real_escape_string($userID)); 	$result = mysql_query($query); }

0 Response to "Criar Browser Game - 7# Implementação de um sistema de estatísticas flexível (PHP)"

Postar um comentário

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme