8000 Home · ronanbastos/Nandraki.js Wiki · GitHub
[go: up one dir, main page]

Skip to content
Ronan Bastos edited this page Jun 12, 2025 · 12 revisions

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

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

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

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

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

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

Clone this wiki locally
0