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

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.

Primeiro, precisamos de uma maneira de recuperar o valor de status para uma identificação de usuário em particular. O SQL para esta consulta fica assim:

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

Tudo bem, mas não exatamente ideal - se quiséssemos recuperar o valor de uma estatística particular, nós primeiro precisamos descobrir o que foi sua identificação (usando seu nome ou apelido), e depois usar isso para descobrir a valor do stat. Felizmente, podemos encurtar a para baixo a apenas uma pergunta:

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 a consulta acima, podemos recuperar o valor estatístico baseado no nome do stat e identificação do usuário - que é muito mais fácil para nós como um colaborador para trabalhar, porque podemos nos referir ao nosso estatísticas como "atk", ou "ataque "- em vez de precisar descobrir que" atk "na verdade significa" 1 ". Usando este sub-consulta, recuperando o valor estatístico para um jogador é fácil:

1 2 3 4 5 6 7 8 9 10 11 
sub getStat { 	meu (statName $,$ userid) = @ _; 	uso config; 	minha $ dbh = DBI->contato("DBI: mysql: $ dbname: dbhost $",$ dbuser,$ dbpass,{RaiseError => 1}); 	minha $ sth = $ dbh->prepare("SELECT FROM WHERE valor user_stats stat_id = (SELECT id estatísticas ONDE display_name = OR? SHORT_NAME?) e user_id =?"); 	$ sth->executar($ statName,statName $,$ userid); 	meu valor de $, 	$ sth->bind_columns(\ $ value); 	$ sth->buscar; 	retornar valor de US $; }

E isso é tudo que precisamos fazer para recuperar um stat. Mas o que se quiséssemos armazenar um novo valor para uma estatística?

Como se vê, que é muito fácil também - é praticamente o mesmo código:

1 2 3 4 5 6 7 
sub setStat { 	meu (statName $,$ userid,$ statValue) = @ _; 	uso config; 	minha $ dbh = DBI->contato("DBI: mysql: $ dbhost: $ dbname",$ dbuser,$ dbpass,{RaiseError => 1}); 	minha $ sth = $ dbh->prepare("user_stats UPDATE SET valor = SHORT_NAME Onde stat_id = (SELECT FROM WHERE id estatísticas display_name =? OR =?) e user_id =?"); 	$ sth- >executar($ statValue,$ statName,statName $,$ userid); }

E isso é tudo que há para atualizar o status! Você pode fazer o que as transformações que pretende executar no stat (como a adição, subtração, multipling) antes de salvá-lo de volta para o banco de dados.

E isso é todo o código que você precisará usar para executar músicas em Perl! É tão simples quanto parece - e ao fazê-lo desta maneira, você pode adicionar gratuitamente a qualquer momento que você precisa sem se preocupar em ter que fazer alterações no seu banco de dados - basta adicionar o stat e escrever o novo código para lidar com isso.Aqui está todo o código em um local (que é perfeito para colocá-lo em seu próprio módulo - stats.pm gosta ou algo assim):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 
sub getStat { 	meu (statName $,$ userid) = @ _; 	uso config; 	minha $ dbh = DBI->contato("DBI: mysql: $ dbname: dbhost $",$ dbuser,$ dbpass,{RaiseError => 1}); 	minha $ sth = $ dbh->prepare("SELECT FROM WHERE valor user_stats stat_id = (SELECT id estatísticas ONDE display_name = OR? SHORT_NAME?) e user_id =?"); 	$ sth->executar($ statName,statName $,$ userid); 	meu valor de $, 	$ sth->bind_columns(\ $ value); 	$ sth->buscar; 	retornar valor de US $; } sub setStat { 	meu (statName $,$ userid,$ statValue) = @ _; 	uso config; 	minha $ dbh = DBI->contato("DBI: mysql: $ dbname: dbhost $",$ dbuser,$ dbpass,{RaiseError => 1}); 	minha $ sth = $ dbh->preparar("SET user_stats = valor? UPDATE WHERE stat_id = (SELECT id estatísticas ONDE display_name = OR? SHORT_NAME?) e user_id =?"); 	$ sth->executar($ statValue,$ statName,statName $,$ userid); }

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

Postar um comentário

powered by Blogger | WordPress by Newwpthemes | Converted by BloggerTheme