TUTORIAL 15 - ACESSANDO UM BANCO DE DADOS
Neste tutorial aprenderemos como acessar um banco de dados “Access”, ler e gravar dados nele, usando a linguagem script do 3D Game Builder.
Primeiramente faça o download do seguinte arquivo:
http://www.eternix.com.br/pt/3dgamebuilder/bd_exemplo.zip
Salve o arquivo em “C:\”. Este arquivo é um banco de dados “Access” com apenas uma tabela chamada de ator e que possui 3 campos:
Id = Integer
Nome = String
Energia = Integer
Agora crie um novo projeto ou utilize um dos criados anteriormente, e crie também um cenário e adicione a este cenário um Ator MD2, este pode ser o ator padrão do 3D Game Builder. Crie também um pequeno formulário, com um campo onde será digitado um novo nome para o ator, utilize os objetos do tipo “GUI Objects”, na parte superior da tela adicione também dois “Labels” como mostrado na imagem abaixo.
Após concluir o cenário deve estar parecido com este:
Agora vamos criar um script de leitura de dados, quando o mapa for carregado devemos ler os dados da tabela “ator”. Para isso acesse o menu “Mapas -> Eventos -> OnCreate”, o script para a leitura do nome ficou assim:
var Conn: TADOConnection;
var DataSet: TADODataset;
Conn:=TADOConnection.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bd_exemplo.mdb;');
DataSet:=Conn.Execute('select nome, energia from ator where id = 0');
if DataSet.RecordCount <> 0 then
begin
SetLabelText('Objeto3', 'Nome:'+DataSet.FieldAsString[0]);
SetLabelText('Objeto2', 'Energia: '+DataSet.FieldAsString[1]);
end;
HideObject('Objeto5');
HideObject('Objeto6');
HideObject('Objeto7');
HideObject('Objeto8');
WriteGlobalVar('EditarNome', 0);
DataSet.free;
Conn.free;
Lembre-se que “Objeto2” e “Objeto3” são os nomes dos meus objetos do tipo “Label” que estão na parte superior da tela, caso os seus possuam outro nome, altere o script para o nome dos seus objeto, ou então altere o nome dos seus objetos no mapa para os respectivos nomes. E os nomes “Objeto5”, “Objeto6”, “Objeto7” e “Objeto8” são referentes aos outros objetos do tipo “GUI Objects” que formam o formulário de alteração do nome.
Agora vamos à explicação de cada uma das linhas do script.
var Conn: TADOConnection;
(Declara um objeto do tipo “TADOConnection”, ele é responsável pela conexão com o banco de dados)
var DataSet: TADODataset;
(Declara um objeto do tipo “TADODataSet”, ele é responsável por utilizar os dados provenientes da conexão)
Conn:=TADOConnection.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bd_exemplo.mdb;');
(Cria o objeto “Conn” definindo a String de conexão com o banco de dados, esta string de conexão é a mesma utilizada pelos objetos da paleta “ADO” ou “DBGo” do Delphi, no exemplo utilizei o provider “Microsoft.Jet.OLEDV.4.0” e o caminho para o arquivo no parâmetro “Data Source”, existem outros parâmetros que podem ser utilizados, como por exemplo o usuário e senha do banco, para saber mais sobre estes parâmetro consulte a ajuda do Delphi ou algum outro documento disponível na internet)
DataSet:=Conn.Execute('select nome, energia from ator where id = 0');
(Inicializa o objeto “DataSet” definindo a String do comando SQL que será executado pelo objeto “Conn” no banco de dados, no comando SQL é selecionado o campo “nome” e “energia” do registro com o “id = 0” da tabela ator)
if DataSet.RecordCount <> 0 then
(Caso a consulta tenha retornado algum registro para o “DataSet”)
SetLabelText('Objeto3', 'Nome:'+DataSet.FieldAsString[0]);
(Utiliza o comando “SetLabelText” para alterar o texto do objeto do tipo “Label” de nome “Objeto3” colocando como texto a string “Nome:” mais o valor do registro convertido em String na posição 0 do “DataSet”)
SetLabelText('Objeto2', 'Energia: '+DataSet.FieldAsString[1]);
(Utiliza o comando “SetLabelText” para alterar o texto do objeto do tipo “Label” de nome “Objeto2” colocando como texto a string “Energia:” mais o valor do registro convertido em String na posição 1 do “DataSet”)
HideObject('Objeto5');
HideObject('Objeto6');
HideObject('Objeto7');
HideObject('Objeto8');
(O comando “HideObject” torna um objeto invisível, isto é feito para que o formulário para alteração do nome não esteja visível quando o jogo for iniciado, e os meus objetos “Objeto5”, “Objeto6”, “Objeto7” e “Objeto8” são os objetos que formam o formulário)
WriteGlobalVar('EditarNome', 0);
(Cria uma variável global para ser utilizada como controle do formulario visível ou não visível)
DataSet.free;
(Destrói o objeto “DataSet” liberando-o do da memória)
Conn.free;
(Destrói o objeto “Conn” liberando-o do da memória)
Salve o script e agora vamos criar o script para alterar o valor do nome no banco, para isso selecione o botão “Salvar” do seu formulário, e acesse a aba “eventos” nas propriedades do objeto, e clique no evento “OnInteract” este evento ocorrerá no momento que o botão for clicado pelo mouse.
O script para gravação de dados ficou assim:
var Conn: TADOConnection;
Conn:=TADOConnection.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bd_exemplo.mdb;');
Conn.ExecuteSQL('update ator set nome = ' + QuotedStr(GetEditText('Objeto7')) + ' where id = 0');
Conn.Close;
SetLabelText('Objeto3', 'Nome: '+GetEditText('Objeto7'));
HideObject('Objeto5');
HideObject('Objeto6');
HideObject('Objeto7');
HideObject('Objeto8');
Conn.Free;
Lembre-se que “Objeto7” é o nome do meu objeto do tipo “Edit” onde o jogador irá escrever o novo nome, e o “Objeto3” é o “Label” onde aparece o nome que está na parte superior da tela, caso os seus possuam outro nome, altere o script para o nome dos seus objetos, ou então altere o nome dos seus objetos no mapa para os respectivos nomes. E os nomes “Objeto5”, “Objeto6”, “Objeto7” e “Objeto8” são referentes aos outros objetos do tipo “GUI Objects” que formam o formulário de alteração do nome.
Agora vamos para a explicação de cada uma das linhas:
var Conn: TADOConnection;
(Declara um objeto do tipo “TADOConnection”, ele é responsável pela conexão com o banco de dados)
Conn:=TADOConnection.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bd_exemplo.mdb;');
(Cria o objeto “Conn” definindo a String de conexão com o banco de dados assim como foi explicado anteriormente)
Conn.ExecuteSQL('update ator set nome = ' + QuotedStr(GetEditText('Objeto7')) + ' where id = 0');
(Utiliza a conexão para executar um comando SQL de update para alterar o valor de “nome” do registro com o “id=0” para o valor que estiver no texto do “Objeto7” que é o objeto do tipo “Edit” que esta no formulario)
Conn.Close;
(Fecha a conexão com o banco de dados)
SetLabelText('Objeto3', 'Nome: '+GetEditText('Objeto7'));
(Utiliza o comando “SetLabelText” para alterar o texto do objeto do tipo “Label” de nome “Objeto3” colocando como texto o texto que estiver no “Edit” do formulário”)
HideObject('Objeto5');
HideObject('Objeto6');
HideObject('Objeto7');
HideObject('Objeto8');
(O comando “HideObject” torna um objeto invisível, isto é feito para que o formulário para alteração do nome não esteja visível quando o jogo for iniciado, e os meus objetos “Objeto5”, “Objeto6”, “Objeto7” e “Objeto8” são os objetos que formam o formulário)
Conn.free;
(Destrói o objeto “Conn” liberando-o do da memória)
Agora precisamos exibir o formulário para a alteração do nome, já que ele é tornado invisível na criação do mapa, para isto selecione o ator que foi colocado anteriormente no mapa, e vá até o seu evento “OnCollision”, quando o ator principal tocar no outro ator o formulário de alteração de nome será exibido.
O script para exibir o formulário ficou assim:
if ReadGlobalVar('EditarNome') = 0 then
begin
WriteGlobalVar('EditarNome', 1);
ShowObject('Objeto5');
ShowObject('Objeto6');
ShowObject('Objeto7');
ShowObject('Objeto8');
end;
Lembre-se que os nomes “Objeto5”, “Objeto6”, “Objeto7” e “Objeto8” são referentes aos objetos do tipo “GUI Objects” que formam o formulário de alteração do nome, caso os seus possuam outro nome, altere o script para o nome dos seus objetos.
Agora vamos à explicação do script:
if ReadGlobalVar('EditarNome') = 0 then
(É utilizado o comando “ReadGlogalVar” para ler o valor da variável “EditarNome” para saber se o formulário de edição de nomes já não esta visível, caso na esteja ele deverá ser exibido)
WriteGlobalVar('EditarNome', 1);
(Altera o valor da variável global “EditarNome” para 1, isto significa que o formulário de edição do nome já esta visivel)
ShowObject('Objeto5');
ShowObject('Objeto6');
ShowObject('Objeto7');
ShowObject('Objeto8');
(O comando “ShowObject” torna um objeto visível, e os objetos “Objeto5”, “Objeto6”, “Objeto7” e “Objeto8” são os objetos que formam o formulário)
Se você fez tudo corretamente esta pronto o seu acesso de leitura e gravação no banco de dados, então execute o projeto para ver o resultado.
Como você pode notar acessar um banco de dados não é uma coisa muito complexa, é possível utilizar o banco de dados para diversas tarefas como para salvar o jogo, salvar o estado dos atores e dos objetos do mapa, para criar agentes que aprendem no decorrer do jogo, entre outras possibilidades. Este tutorial mostrou como acessar um banco de dados “Access”, mas também é possível acessar outros formatos de banco, como o Firebird, SQLServer, entre outros. E também é possível acessa o banco sem utilizar a string de conexão, basta criar um “Alias” para o banco e utilizar este “Alias” no lugar da string de conexão. Nos próximos tutoriais aprenderemos a fazer outras coisas utilizando a linguagem scripts.
Créditos: Retirado do Site Oficial: http://www.3dgamebuilder.com.br
Happy Wheels features countless characters and vehicles to unlock
superslot เทคนิคการเล่นสล็อตออนไลน์ โปร 100 คือตัวช่วยในการเล่นสล็อตของผู้เล่น northbristol ที่ต้องการเข้าใกล้คำว่า herbalpertpresents โบนัสให้ได้มากที่สุด ทั้งนี้มันคือ xopg.net ตัวช่วยสำคัญที่ทำให้เรา mavoixtavoie ชนะรางวัลได้ง่ายขึ้นมา สมัคร super ต้องบอกว่า เทคนิคการเล่นสล็อตใช้แล้วมันคือตัวช่วยสำหรับผู้ที่ชอบเล่นเกมการพนันเท่านั้น ทดลองเล่นสล็อต ซึ่งเทคนิคต่าง ๆ ไม่ เทคนิคสล็อต เพียง reeffutures2018 เป็นตัวช่วยการทำเงินอย่างเดียวเท่านั้น gclub ยังช่วยสอนให้ slotsuper เรารู้จักและเข้าใจเกมการพนันมากขึ้น
เราคือผู้ให้บริการ superslot เกมสล็อตออนไลน์ northbristol สำหรับบนมือถือ reeffutures2018อันดับ 1 ของประเทศไทย โปร 100 รองรับทั้ง iPhone หรือระบบ IOS และ Android เทคนิคสล็อต เว็บ สล็อต herbalpertpresents ของเรามีเกมส์ให้เลือกเล่นกว่า 200 เกมส์ mavoixtavoie ไม่ว่าจะเป็น xopg.net/ สล็อตยิงปลา เสือมังกร รูเล็ท แข่งม้า ไฮโล เกมคาสิโน Casino และ gclubอีกมากมาย ทดลองเล่นสล็อต เติมเงิน ถอนเงินผ่านระบบอัตโนมัติ. เพื่อนๆ slotsuper สามารถ ดาวน์โหลด ผ่านทาง QR Code ข้างล้างนี้ได้เลย สมัคร super
Your advice is really matters to us. We're not only taking your advice but also paying for that. Your advice for us is not a useless rather, we would love that you come up on our site Paid Online Surveys and get registered yourself. Make money from home now!
I have bookmarked your website because this site contains valuable information in it. I am really happy with the article's quality and presentation. Thanks a lot for keeping the great stuff. I am very much thankful for this site. run 3
เกมสล็อต Big web slots, PG, direct websites, not through agents 2021 with a fast automatic deposit-withdrawal system within 8 seconds.
เกมสล็อต Big web slots, PG, direct websites, not through agents 2021 with a fast automatic deposit-withdrawal system within 8 seconds.
PG SLOT 99 Online slot web ready to provide entertainment on the internet 666 slot
pg slot เปิดใหม่ Online slot web ready to provide entertainment on the internet 666 slot
pg auto Big web slots, PG, direct websites, not through agents 2021 with a fast automatic deposit-withdrawal system within 8 seconds.
pg slot all slot, we have included all the web slots here, the best online slot web site, newcomer of the year 2022
riches888 Including web slot, auto deposit-withdrawal, no minimum One website can play more than 100 slot games
slot888 The No. 1 online slot website, Superslot888, is an online slot game provider that collects all camps.
สล็อตpg The easiest slots to break in 2022 All the leading slot game camps are included here.
mega888 direct online slot Not through a joker agent, direct website, deposit-withdraw, no minimum, quality online gambling website that has received international standards.
เล่นสล็อต Online slots, not through agents Received international standards to be the most popular online slot website of the year 2022
เครดิตฟรี all slot, we have included all the web slots here, the best online slot web site, newcomer of the year 2022
SLOT AUTO all slot, we have included all the web slots here, the best online slot web site, newcomer of the year 2022
allslot Including web slot, auto deposit-withdrawal, no minimum One website can play more than 100 slot games