pbInfo.ro
Probleme
Probleme - clasa a IX-a
Probleme - clasa a X-a
Probleme - clasa a XI-a
Probleme din concursuri
Căutare problemă
Exerciții
Programează cu Blockly
Desenează cu Processing
Exersează SQL
Soluţii
Resurse
Resurse pentru clasa a IX-a
Resurse pentru clasa a X-a
Resurse pentru clasa a XI-a
Subiecte bacalaureat
Ajutor
Autentificare
Înregistrare
Autentificare
Utilizator sau email
Parola
Acest site foloseşte cookies. Navigând în continuare, vă exprimaţi acordul asupra folosirii cookie-urilor.
Îti place pbInfo? Atunci acceptă-l cu totul! Dezactivează modulul de blocare a reclamelor!
Lista scripturi
Script Nou
Ajutor
"mainkraft cu copaci :) si nisip" - Processing
ID
Autor
Duplicat din
Ultima modificare
#6202
vasiloiu florin (vasiloiu_florin)
-
Luni, 16 sep 2024, 14:41
let bs = 20; // Block size. let bh = 8*bs; // Block height. let freq = bs*32; // Perlin frequency. let amp = bs*3; // Perlin amplitude. let grass; // Grass texture. let soil; let mc = true; // Minecraft look? let pos = 0; // Position in Perlin terrain. let rows = 33; // How many blocks? let cols = 10; function preload(){ // soil = loadImage('soil.jpg'); // grass = loadImage('grass.png'); } function setup() { createCanvas(400, 400, WEBGL); angleMode(DEGREES); strokeWeight(1); noiseSeed(99); // Offset in Perlin terrain, to avoid // mirroring of terrain features. adjust = floor(bs*999); // Centre mouse. mouseX = 0; mouseY = width*0.5; // Determine number of blocks across // by width of display. cols = (width*2)/bs; // Or not! cols = rows; genTerrain(); } // Toggle 'minecraft' look. function mousePressed(){ mc = !mc; genTerrain(); } function draw(){ genTerrain(); } function genTerrain(){ background(0,64,255); push(); // Lighting. let locX = mouseX - width * 0.5; pointLight(255, 255, 0, locX, -1000, 2000); // Positioning of camera. translate(0, height*1.6, -700); rotateX(-45); // Steer left and right. let rot = map(mouseX, 0, width, 22, -22); rotateY(rot); // Move through Perlin terrain. pos += bs*3; // Our grid of blocks. for (let z = -rows; z < 0; z++){ for (let x = -cols*0.5; x < cols*0.5; x++){ push(); // Perlin noise to derive y-pos // of each block. let y = noise((adjust+x*bs)/freq, (adjust+z*bs-pos)/freq)*amp; // If 'minecraft' mode of appearance, // round down y pos to a whole number, // and draw black block outlines. if (mc) { y = floor(y); stroke(0); } else { noStroke(); } // Translate to block pos. translate(x*bs, floor(-y*bs), floor(z*bs)); // Draw the block. //texture(soil); specularMaterial(200,200,32); shininess(1); box(bs,bh,bs); // Draw grass on top of the block. translate(0, -bh*0.5, 0); //texture(grass); specularMaterial(0,255,0); // White 'snow' if at particular height. if (y > 32) emissiveMaterial(255); shininess(100); box(bs, bs*0.1, bs); // yellow 'sand' if in random places idk how to put them away from snow. //update: nvm xd if (random()<0.001 && y<32) emissiveMaterial(160); shininess(100); box(bs, bs*0.1, bs); pop(); // creeaza copaci aleatoriu if (random() < 0.1 && y<32) { // probabilitatea de aparitie drawTree(x*bs, floor(-y*bs) - bh*0.5, z*bs); } } } pop(); } function drawTree(x, y, z) { push(); translate(x, y, z); // trunchi fill(139, 69, 19); noStroke(); cylinder(bs * 0.2, bs * 1.5); // coroana copacilor translate(0, -bs * 0.75, 0); fill("green"); box(bs * 0.75); pop(); }
Duplicare
Executare
Cod
Cod HTML
<iframe sandbox="allow-scripts" src="/p5js/index.php?id=6202" style="width:408px; height:408px;border:solid 1px gray; overflow: scroll;"></iframe>
Duplicare script
Denumirea noului script
Du-te sus!