-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Welcome to the Nandraki.js!
[Alfa documentação 1.4.0 ultima versão ante do hard rest do codigo para Beta]
Verficar Version
Nandraki.version();
Criar obj com Class Nandraki
//constructor(id,grav,vel,mas)
//create_obj(id,width,height,top,left,debug)
//create_ui(id,txt,width,height,top,left)
Nandraki.create_obj("text",100,100,50,50,true);
const txt = new Nandraki("text",0,0,0);
Nandraki.create_ui(txt.id," Hello, world!","100px","100px","50px","50px");
Detectar colisão Nandraki.js
Nandraki.create_obj("chao",100,100,50,50,true);
const chao = new Nandraki("text",0,0,0);
Nandraki.create_obj("item",100,100,50,50,true);
const item = new Nandraki("item",0,0,0);
//game.coord(chao.body) = getBoundingClientRect() -> this.body=document.getElementById(this.id);
chaolocal=game.coord(chao.body);
powerlocal=game.coord(item.body);
// check_item_in_chao = true ou false dentro do update
check_item_in_chao = game.colidir(chaolocal, powerlocal);
if(check_item_in_chao == true){
game.print("check true");
}
Start game
Nandraki.create_obj("text",100,100,50,50,true);
const txt = new Nandraki("text",0,0,0);
myjogo = {
start : function(){
Nandraki.create_ui(txt.id," Hello, world!","100px","100px","50px","50px");
},
}
fps=60;
game.update(myjogo.start,fps);
Criar canvas
game.canvas_start(id,width,height);
Canvas Text
game.canvas_text(text,font,cor,x,y);
Canvas Arc
game.canvas_arc(x,y,font,b,p);
Criar barra de life
Nandraki.create_obj("barra1",100,10,100,50,true);
const barra1 = new Nandraki("barra1",0,0,0);
Nandraki.create_obj("barra2",50,10,100,50,true);
const barra2 = new Nandraki("barra2",0,0,0);
barra2.body.style.background = "red";
Game Print
game.print("ola mundo");
force_obj function(id,x,y,rotate)
// rotate true = translate3d("+x+"px,"+y+"px, 0px) rotateY(180deg)
// rotate false = translate3d("+x+"px,"+y+"px, -0px) rotateY(0deg)
game.force_obj(item1.id,0,item1.gravidade,true)
Simples gravidade div dom
const item1 = new Nandraki("div","power1","test",0,5.5,10);
Nandraki.create_obj(item1.id,"30px","50px","50px","150px",true);
const chao = new Nandraki("div","power1","test",0,5.5,10);
Nandraki.create_obj(item1.id,"30px","50px","50px","150px",true);
item1.gravidade+=item1.velocidade;
game.force_obj(item1.id,0,item1.gravidade,false);
pulo=false;
if(item1.up>=450){
pulo=false;
item1.up=item1.up;
}
else{
pulo=true;
if(pulo==true){
item1.up+=10;
}
}
Click Mouse
function click(){
game.print("click");
}
game.click_start("id do obj",click);
Move Mouse
game.move_mouse(id do obj);
Touch Move
game.touch_move("id do obj");
Touch start e and
function click(){
game.print("touch start ative");
}
game.touch_end("id do obj",click);
// or
game.touch_start("id do obj",click);
Add obj dentro de outro obj
game.obj_in_obj(id do obj1,id do obj2);
Set Text
game.set_text(id do obj,"texto");
game.set_text(id do obj,1+1);
Teclado log keydown keyup
game.log_key;
game.log_down(logKey1);
function logKey1(e) {
if( e.code == "KeyS") {
game.print("Test log key down ok!");
}
}
game.log_up(logKey2);
function logKey2(e) {
if( e.code == "KeyS") {
game.print("Test log key up ok!");
}
}
Scale X
game.scaleX("id player ou obj","-1");
Random Math
random_m(max,min,variante);
Random Math floor
random_mf(max,min,variante);
Opacity
opacity(id,value);
kill_free
kill_free(id);
som_play
game.som_play(id,path som);
touchpad virtual
html{
<div id="joy">
</div>
}
game.touchpad("joy" ,set left,set top);
stick=game.get_obj("stick");
base=game.get_obj("base-stick");
if(stick.offsetLeft == 32){
anim="parado";
di=di;
}else if(stick.offsetLeft >= -10){
anim="corre";
di+=5;
scala=1;
game.force_obj("player",di,up,false);
}
else if(stick.offsetLeft < 50){
anim="corre";
di-=5;
scala=-1;
game.force_obj("player",di,up,true);
}
if(stick.offsetTop <= -1 ){
up-=0;
}
Create sprite
//create_sprite(id,img,width,height,left,top)
Nandraki.create_sprite("player","player.png",64,64,32,50);
img frame
//img_frame(img_id,width,height,math frame,start frame,end frame,rest frame)
anim="run";
if(anim=="run"){
game.img_frame("img_player",64,64,6,frame++,13,10);
if(frame==15)frame=10
}
bd_save: function(variavel,value)
localStorage.setItem(variavel, value);
bd_load: function(variavel)
game.bd_load(variavel)
bd_remove: function(variavel)
game.bd_remove(variavel)
bd_clear: function()
game.bd_clear();
Sobre Draki3D
-
Classe ThreeCore A ThreeCore é a classe que gerencia o núcleo da cena 3D, como o ambiente, a câmera e o renderizador. Ela também garante que apenas uma instância de ThreeCore seja criada, usando o padrão Singleton. Isso significa que, mesmo se você tentar criar várias instâncias dessa classe, você só terá uma instância em toda a aplicação. Construtor ( constructor ): Cena 3D: A cena é onde todos os objetos 3D são colocados e renderizados. Câmera: A câmera é responsável por exibir o que está na cena. Aqui, usamos uma câmera de perspectiva, que simula como vemos o mundo em 3D, com distâncias variáveis. Renderizador: É o motor que desenha a cena 3D na tela. O alpha: true é utilizado para que o fundo da cena tenha transparência, o que pode ser útil para integrações com outras camadas (como a integração com um jogo 2D). Singleton: ThreeCore.instance = this garante que apenas uma instância da classe seja criada. Se já houver uma instância, ele retorna a instância existente. Métodos: init(container) : Inicializa a cena, adiciona o renderizador ao container da página HTML e começa o loop de animação. animate() : Este método é chamado repetidamente através de requestAnimationFrame , o que permite a animação contínua. Ele renderiza a cena a cada quadro.
-
Classe ThreeFactory A ThreeFactory é responsável por criar os objetos 3D fundamentais, como luzes, cubos e câmeras. Esse é um exemplo de Abstract Factory, já que ela centraliza a criação desses objetos. Métodos: createLight() : Cria uma luz pontual (uma luz que emite de um ponto em todas as direções). createCube() : Cria um cubo 3D com uma cor verde usando BoxGeometry (geometria do cubo) e MeshStandardMaterial (material com sombreamento adequado para renderização realista). createCamera() : Cria uma câmera de perspectiva. O padrão Abstract Factory ajuda a abstrair a criação de diferentes tipos de objetos 3D sem que o código do cliente precise saber como esses objetos são criados internamente.
-
Classe EntityBuilder A EntityBuilder é uma implementação do padrão Builder. Ela permite construir entidades compostas de forma mais flexível, adicionando diferentes componentes a uma única entidade, como malhas (meshes) e posições. Métodos:
addMesh(mesh) : Adiciona um mesh (malha 3D, como um cubo) à entidade.
setPosition(x, y, z) : Define a posição da entidade no espaço 3D.
build() : Finaliza a construção e retorna a entidade 3D.
O objetivo da classe EntityBuilder é proporcionar uma maneira fácil de criar objetos mais complexos, ao adicionar diferentes componentes (como malhas) e personalizar atributos de forma fluida.
- Classe PrototypeFactory A PrototypeFactory segue o padrão Prototype. Ela permite registrar e clonar objetos 3D, o que é útil quando você deseja criar cópias de objetos sem precisar recriá-los do zero, economizando recursos e tempo de processamento.
Métodos: register(name, object3D) : Registra um objeto 3D com um nome para que ele possa ser clonado mais tarde. clone(name) : Clona um objeto registrado anteriormente, retornando uma cópia exata dele.
- Classe Game A classe Game utiliza a ThreeFactory para criar objetos de forma simplificada. Ao chamar o método Game.create(type) , ele cria um objeto do tipo especificado (como cube , camera , ou light ).
Método create(type) : Cria os objetos 3D usando a ThreeFactory . O type pode ser cube , camera ou light , e o método retorna o objeto correspondente. Se um tipo desconhecido for passado, o código lança um erro. Resumo de como funciona: ThreeCore gerencia o ciclo de vida da cena, a câmera e o renderizador. ThreeFactory cria objetos 3D, como luzes, cubos e câmeras. EntityBuilder ajuda a construir entidades 3D compostas (como adicionar malhas e definir posições). PrototypeFactory permite clonar objetos registrados. Game é a interface simplificada para criar objetos e interagir com a cena 3D de maneira fácil e rápida.
Objeto de Mapeamento: Criamos um objeto objects que mapeia os tipos de objetos ('cube', 'camera', 'light') para as suas respectivas instâncias criadas pelo ThreeFactory.
Acesso Rápido: Agora, ao chamar Game.create(type), o código retorna o objeto correspondente diretamente. Se o tipo não existir no objeto objects, será lançado um erro.
Simples e Eficiente: A criação dos objetos é feita de forma bem simples, sem a necessidade de uma estrutura switch.