Processing es un lenguaje de programación y entorno de desarrollo integrado de código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital.
Una de las metas de Processing es actuar como herramienta de introducción en el mundo de la programación a los no-programadores a través de un feedback visual.
Esta asignatura se ocupa de la formación relativa a competencias de manipulación, específicamente edición y programación, de medios digitales interactivos y a las destrezas necesarias para desarrollar capacidades de producción en diferentes entornos multimedia. El curso busca indagar en las posibilidades expresivas y comunicacionales que aportan tanto los lenguajes de programación como las tecnologías web.
Dado que este es un campo que avanza a gran velocidad, toda tecnología se vuelve obsoleta en pocos años, es indispensable que el alumno esté preparado para una constante investigación que le permita interpretar esa dinámica con fluidez. Para ello necesitará comprender los paradigmas y modelos que organizan tales cambios más que las tecnologías disponibles en un momento particular.
Crear tu propia versión de un círculo cromático con colores primarios, secundarios y terciarios (RGB). El TP debe ser realizado solo con instrucciones de dibujo. No debe haber ni eventos ni condicionales.
El círculo cromático es una representación ordenada y circular de los colores de acuerdo con su matiz, en donde se representa a los colores primarios y sus derivados.
void setup (){
size(700,600); //(alto,ancho) (x,y)
background(255,255,255); //blanco
strokeWeight(2);
}
void draw(){
line(350,100,150,370); //(x1,y1,x2,y2)
line(150,370,550, 370);
line(550, 370,350,100);
line(350,100,170,170); //linea rojo a magenta
line(350,100,550, 170); //linea rojo a amarillo
line(150,350,150,200); //linea azul a magenta
line(150,370,350,470); //linea azul a cian
line(550,350,550,150); //linea verde a amarillo
line(550,350,350,470); //linea verde a cian
line(150,370,200,500); //linea azul a ceruleo
line(350,470,200,500); //linea cian a ceruleo
line(350,470,500,500); //linea cian a esmeralda
line(550, 350,500,500); //linea verde a esmeralda
line(550, 350,640,260); //linea verde a verde lima
line(550,150,640,260); //linea amarillo a verde lima
line(550,150,450,50); //linea amarillo a naranja
line(350,100,450,50); //linea rojo a naranja
line(150,200,80,270); //linea magenta a violeta
line(150,370,80,270); //linea azul a violeta
line(150,200,250,50); //linea magenta a fucsia
line(350,100,250,50); //linea rojo a fucsia
fill (255,0,119); //magenta
circle(150, 150, 100); //circle(x, y, extent)
fill (255,255,0); //amarillo
circle(550, 150, 100);
fill (0,183,235); //cian
circle(350, 470, 100);
fill (226,4,4); //rojo
circle(350, 100, 120);
fill (5,29,239); //azul
circle(150, 370,120);
fill (0,213,0); //verde
circle(550, 350, 120);
fill(0,135,209);
circle(200,500,70); //ceruleo
fill(0,153,117);
circle(500,500,70); //esmeralda
fill(191,255,0);
circle(640,260,70); //verde lima
fill(255,128,0);
circle(450,50,70); //naranja
fill(148,0,211);
circle(80,270,70); //violeta
fill(227,0,82);
circle(250,50,70); //fucsia
}
Crear una animación con la secuencia de créditos(*) de una película o videojuego seleccionado. Al menos debe contener cinco secuencias de información. Por ejemplo:
Sería importante respetar la estética de la obra seleccionada.
Al realizar este ejercicio deberías haber alcanzado dominio de estos temas:
PFont miLetra;
PImage BG, Header, Piedra, Bedrock, Diamante, Sword;
int pos, pos2;
float S;
int posY;
int posFondo;
int Cuadrado;
void setup(){
background(0);
size(1190,670); //x,y
miLetra = createFont("Minecraftia-Regular.ttf", 60);
textFont(miLetra, 20);
BG = loadImage( "uOjPT3.jpg");
Header = loadImage( "Minecraft_Java_Edition.png");
Piedra = loadImage( "Piedra.png");
Piedra.resize(0, 50);
Diamante = loadImage( "Diamante.png");
Diamante.resize(0, 50);
Bedrock = loadImage( "Bedrock.jpg");
Bedrock.resize(0, 50);
Sword = loadImage( "Sword.png");
textAlign( CENTER, CENTER );
frameRate(2000);
Cuadrado = 8;
posY = height;
posFondo = height/2;
smooth();
noCursor();
}
void draw(){
pos = int(random(width));
pos2 = int(random(height));
S = random(3);
image(BG,0,0);
if (S>=0 && S<=1 && pos%50<3 && pos2%50<3) {
image(BG, 0, 0);
image (Bedrock, pos, pos2);
BG = get(0, 0, width, height);
} else if (S>=1 && S<=2 && pos%50<3 && pos2%50<3) {
image(BG, 0, 0);
image (Diamante, pos, pos2);
BG = get(0, 0, width, height);
} else if (S>=2 && S<=3 && pos%50<3 && pos2%50<3) {
image(BG, 0, 0);
image (Piedra, pos, pos2);
BG = get(0, 0, width, height);
}
image(Header, 300, posY);
fill(255);
text( "============", 590, posY+230);
fill(255,231,6);
text( "Minecraft Team", 590, posY+290);
fill(255);
text( "============", 590, posY+350);
fill(107,101,95);
text( "Original Creator", 350, posY+470);
fill(255);
text( "Markus Persson", 450, posY+530);
fill(107,101,95);
text( "Chief Creative Officer", 390, posY+650);
fill(255);
text( "Jeans Bergensten", 460, posY+710);
fill(107,101,95);
text( "Producers", 320, posY+830);
fill(255);
text( "Adrian Östergård", 450, posY+900);
text( "Dejan Dimic", 410, posY+970);
text( "Frederik Telenius", 450, posY+1040);
text( "Isabella Arningsmark", 470, posY+1110);
fill(107,101,95);
text( "Lead Engineer", 340, posY+1230);
fill(255);
text( "Nathan Adams", 430, posY+1300);
fill(107,101,95);
text( "Game Developers", 360, posY+1420);
fill(255);
text( "Agnes Larsson", 440, posY+1490);
text( "Bartosz Bok", 420, posY+1560);
text( "Cory Scheviak", 430, posY+1630);
text( "Erik Broes", 410, posY+1700);
text( "Georgii Gavrichev", 450, posY+1770);
text( "Josh Letellier", 430, posY+1840);
text( "Maria Lemón", 415, posY+1910);
text( "Michael Stoyke", 430, posY+1980);
text( "Thomas Guimbretière", 465, posY+2050);
fill(107,101,95);
text( "Launcher Tech Lead", 350, posY+2170);
fill(255);
text( "Mikael Hedberg", 440, posY+2240);
fill(107,101,95);
text( "Launcher Developers", 360, posY+2360);
fill(255);
text( "Petr Mrázek", 410, posY+2430);
fill(107,101,95);
text( "Realms Tech Lead", 340, posY+2550);
fill(255);
text( "Alexander Torstting", 460, posY+2620);
fill(107,101,95);
text( "Realms Developers", 350, posY+2740);
fill(255);
text( "Alexandre Pretto Nunes", 500, posY+2810);
text( "Alexander Östman", 460, posY+2880);
text( "Billy Sjöberg", 430, posY+2950);
text( "Brian Threvathan", 460, posY+3020);
text( "Christoffer Hammarström", 500, posY+3090);
text( "Erik Bylund", 410, posY+3160);
text( "Henning Erlandsen", 460, posY+3230);
text( "Mgnus Jäderberg", 450, posY+3300);
text( "Márcio Oliveira", 430, posY+3370);
text( "Niclas Unnervik", 430, posY+3440);
text( "Sina Tamanna", 420, posY+3510);
text( "Tomas Alaeus", 420, posY+3580);
fill(107,101,95);
text( "Minecraft Content Lead", 370, posY+3700);
fill(255);
text( "Marc Watson", 420, posY+3770);
fill(107,101,95);
text( "Minecraft Content Coordinator", 420, posY+3890);
fill(255);
text( "Adam Martinsson", 440, posY+3960);
text( "Matthew Dryden", 430, posY+4030);
text( "Oskar Thysell", 420, posY+4100);
text( "Sara Lempiäinen", 430, posY+4170);
fill(107,101,95);
text( "Art Directors", 320, posY+4290);
fill(255);
text( "Johan Aronsson", 450, posY+4360);
text( "Markus Toivonen", 450, posY+4430);
text( "Martin Johansson", 460, posY+4500);
text( "Ninni Landin", 420, posY+4570);
fill(107,101,95);
text( "Graphics Artists", 320, posY+4690);
fill(255);
text( "Jasper Boerstra", 450, posY+4760);
text( "Mattis Grahm", 420, posY+4830);
fill(107,101,95);
text( "User Experience Design", 380, posY+4950);
fill(255);
text( "Lily Ekman", 410, posY+5020);
text( "Oscar Nilsson", 430, posY+5090);
fill(107,101,95);
text( "Lead User Experience Developers", 450, posY+5210);
fill(255);
text( "Sebastian Hidefelt", 470, posY+5280);
text( "Paulo Ragoha", 440, posY+5350);
fill(107,101,95);
text( "User Experience Developers", 420, posY+5470);
fill(255);
text( "Albin Odervall", 470, posY+5540);
text( "Anna Päärni", 460, posY+5610);
text( "Dario Vodopivec", 480, posY+5680);
text( "Emelie Sidesiö", 470, posY+5750);
text( "Michael Novén", 470, posY+5820);
text( "Oleg Kozitsyn", 468, posY+5890);
fill(107,101,95);
text( "Lead Sound Designer", 370, posY+6010);
fill(255);
text( "Samuel Âberg", 470, posY+6080);
fill(107,101,95);
text( "Sound Design", 300, posY+6200);
fill(255);
text( "Daniel Rosenfeld", 485, posY+6270);
text( "Kevin Martinez", 475, posY+6340);
text( "Peter Mont", 455, posY+6410);
fill(107,101,95);
text( "Music composed by", 330, posY+6530);
fill(255);
text( "Daniel Rosenfeld", 490, posY+6600);
fill(107,101,95);
text( "Writing", 260, posY+6720);
fill(255);
text( "Julian Gough", 460, posY+6790);
fill(107,101,95);
text( "Developers of Mo' Creatures", 394, posY+6910);
fill(255);
text( "Dan Roque", 440, posY+6980);
text( "John Olarte (DrZhark)", 510, posY+7050);
text( "Kent Christian Jensen", 510, posY+7120);
fill(255);
text( "============", 590, posY+7240);
fill(255,231,6);
text( "Mojang", 590, posY+7300);
fill(255);
text( "============", 590, posY+7360);
fill(107,101,95);
text( "Chief Executive Officer", 360, posY+7480);
fill(255);
text( "Jonas Mårtensson", 476, posY+7550);
fill(107,101,95);
text( "Chief Operation Officer", 360, posY+7670);
fill(255);
text( "Ulrika Möjgård", 460, posY+7740);
fill(107,101,95);
text( "Chief Technology Officer", 370, posY+7860);
fill(255);
text( "Mike Carlson", 446, posY+7930);
fill(107,101,95);
text( "Chief Brand Officer", 335, posY+8050);
fill(255);
text( "Lydia Winters", 450, posY+8120);
fill(107,101,95);
text( "Chief Content Officer", 345, posY+8240);
fill(255);
text( "Vu Bui", 406, posY+8310);
fill(107,101,95);
text( "Human Resources", 320, posY+8430);
fill(255);
text( "Maja Samuelsson", 470, posY+8500);
text( "Viktoria Peterson", 470, posY+8570);
fill(107,101,95);
text( "Director of Finance", 335, posY+8690);
fill(255);
text( "Marina Kostesic", 460, posY+8760);
fill(107,101,95);
text( "Director of New Games", 345, posY+8880);
fill(255);
text( "Patrick Liu", 430, posY+8950);
fill(107,101,95);
text( "Game Director", 290, posY+9070);
fill(255);
text( "Måns Olson", 430, posY+9140);
fill(107,101,95);
text( "Gamer Designers", 310, posY+9260);
fill(255);
text( "Christian Berg", 450, posY+9330);
text( "Max Herngren", 448, posY+9400);
fill(107,101,95);
text( "Lead Game Developers", 348, posY+9520);
fill(255);
text( "Kristoffer Jelbring", 480, posY+9590);
text( "Niklas Börestam", 460, posY+9660);
fill(107,101,95);
text( "Game Developers", 310, posY+9780);
fill(255);
text( "Adrian Toncean", 450, posY+9850);
text( "Anton Arbring", 440, posY+9920);
text( "Aron Nieminen", 430, posY+9990);
text( "Christan Berg", 437, posY+10060);
text( "Daniel Wustenhoff", 460, posY+10130);
text( "Jakob Rydén", 420, posY+10200);
text( "Jon Amiga", 410, posY+10270);
text( "Mårte Helander", 448, posY+10340);
fill(107,101,95);
text( "Art Leads", 270, posY+10460);
fill(255);
text( "Daniel Björkefors", 450, posY+10530);
text( "Telemachus Stavropoulos", 500, posY+10600);
fill(107,101,95);
text( "Graphic Designers", 320, posY+10720);
fill(255);
text( "Wiktor Persson", 440, posY+10790);
text( "Markus Karlsson", 450, posY+10860);
fill(107,101,95);
text( "3D/VFX", 255, posY+10980);
fill(255);
text( "Christian Nordgren", 460, posY+11050);
text( "Jakob Gavelli", 425, posY+11120);
fill(107,101,95);
text( "Lead System Engineers", 350, posY+11240);
fill(255);
text( "Jifeng Zhang", 425, posY+11310);
text( "Robert Sjödahl", 435, posY+11380);
text( "Torbjörn Allard", 445, posY+11450);
fill(107,101,95);
text( "System Developers", 320, posY+11570);
fill(255);
text( "Anders Martini", 435, posY+11640);
text( "Maksim Ivanov", 430, posY+11710);
text( "Maria Katsourani", 450, posY+11780);
text( "Mikael Malmqvist", 440, posY+11850);
text( "Joakim Ejenstam", 445, posY+11920);
text( "Jonas Bergström", 448, posY+11990);
text( "Petter Gisslen", 435, posY+12060);
text( "Pär Axelsson", 426, posY+12130);
text( "Stefan Torstensson", 470, posY+12200);
text( "Welan Yang", 415, posY+12270);
fill(107,101,95);
text( "Experience Design", 320, posY+12390);
fill(255);
text( "Daniel Feldt", 426, posY+12460);
fill(107,101,95);
text( "Director of Business Development", 418, posY+12580);
fill(255);
text( "Patrick Geuder", 440, posY+12650);
fill(107,101,95);
text( "Production Director", 330, posY+12770);
fill(255);
text( "Olof Carlson Sandvik", 480, posY+12840);
fill(107,101,95);
text( "Head of Creative Production", 380, posY+12960);
fill(255);
text( "Sheila Ho", 405, posY+13030);
fill(107,101,95);
text( "Production Manager", 340, posY+13150);
fill(255);
text( "Klas Hammarström", 465, posY+13220);
fill(107,101,95);
text( "Producers", 280, posY+13340);
fill(255);
text( "Adele Major", 430, posY+13410);
text( "David Nisshagen", 455, posY+13480);
text( "Hampus Nilsson", 450, posY+13550);
text( "Johannes Fridd", 450, posY+13620);
text( "Kaya Hatcher", 440, posY+13690);
text( "Lisa Kempe", 420, posY+13760);
text( "Moira Ingellum", 440, posY+13830);
text( "Nicolette Suraga", 460, posY+13900);
text( "Sarah Carton", 440, posY+13970);
text( "Sebastian Falk", 440, posY+14040);
text( "Âsa Skogström", 440, posY+14110);
fill(107,101,95);
text( "Project Managers",310, posY+14230);
fill(255);
text( "Isabella Balk", 430, posY+14300);
fill(107,101,95);
text( "Director of Creative Communications", 430, posY+14420);
fill(255);
text( "Owen Jones", 420, posY+14490);
fill(107,101,95);
text( "Head of Marketing Communications", 420, posY+14610);
fill(255);
text( "Thomas Wiborgh", 450, posY+14680);
fill(107,101,95);
text( "Creative Communications Assistant", 420, posY+14800);
fill(255);
text( "Per Landin", 430, posY+14870);
text( "Tom Stone", 420, posY+14940);
fill(107,101,95);
text( "Head of Community Relations", 380, posY+15060);
fill(255);
text( "Karim Walldén", 430, posY+15130);
fill(107,101,95);
text( "Community Relations Coordinator", 400, posY+15250);
fill(255);
text( "Josefin Olsson", 450, posY+15320);
fill(107,101,95);
text( "Head of Social Media", 330, posY+15440);
fill(255);
text( "Alice Löfgren", 450, posY+15510);
fill(107,101,95);
text( "Customer Support Team Lead", 380, posY+15630);
fill(255);
text( "Mattias Victorin", 450, posY+15700);
fill(107,101,95);
text( "Customer Support", 320, posY+15820);
fill(255);
text( "Anna Lundgren", 445, posY+15890);
text( "Andreas Thomasson", 480, posY+15960);
text( "Antonia Kousathana", 478, posY+16030);
text( "Cecilia Flumé", 435, posY+16100);
text( "Cim Borg", 410, posY+16170);
text( "David Stuart Dahlgren", 490, posY+16240);
text( "Ellie Ashrafi", 430, posY+16310);
text( "Frederik Sandström", 480, posY+16380);
text( "Freja Fors", 430, posY+16450);
text( "Jonny Hair", 420, posY+16520);
text( "Nasim Derakhsham", 470, posY+16590);
text( "Nima Tolouifar", 445, posY+16660);
text( "Patrik Södergren", 470, posY+16730);
text( "Rui Ribeiro", 420, posY+16800);
text( "Sarah Mårtensson", 470, posY+16870);
fill(107,101,95);
text( "Office Manager", 300, posY+16990);
fill(255);
text( "Siri Hoel Andersson", 470, posY+17060);
fill(107,101,95);
text( "Office Coordinators", 320, posY+17180);
fill(255);
text( "Aleksandra Zajac", 470, posY+17250);
text( "Joël Älveroth", 440, posY+17320);
fill(107,101,95);
text( "Reception Manager", 330, posY+17440);
fill(255);
text( "Chaimae Truving", 470, posY+17510);
fill(107,101,95);
text( "Financial Accountant", 340, posY+17630);
fill(255);
text( "Josefina Axelsson", 480, posY+17700);
fill(107,101,95);
text( "IT Wizards", 280, posY+17820);
fill(255);
text( "Cesar Sima Falck", 460, posY+17890);
text( "Shoghi Cervantes", 470, posY+17960);
fill(107,101,95);
text( "Product Designer Team Lead", 390, posY+18080);
fill(255);
text( "Amanda Ström", 440, posY+18150);
fill(107,101,95);
text( "Product Designers", 330, posY+18270);
fill(255);
text( "Filip Thoms", 420, posY+18340);
text( "Jennifer Hammervald", 470, posY+18410);
text( "Sherin Kwan", 420, posY+18480);
fill(107,101,95);
text( "Motion Graphics Designer", 380, posY+18600);
fill(255);
text( "Kim Petersen", 430, posY+18670);
fill(107,101,95);
text( "Intellectual Property Enforcement Team Lead", 505, posY+18790);
fill(255);
text( "Olle Personne", 440, posY+18860);
fill(107,101,95);
text( "Intellectual Property Enforcement Agents", 485, posY+18980);
fill(255);
text( "Mathias Andersson", 470, posY+19050);
text( "Matilda Kerman", 440, posY+19120);
text( "Marcus Forss", 440, posY+19190);
text( "Sylvia Chen", 420, posY+19260);
text( "Johan Kedlund", 440, posY+19330);
fill(255);
text( "============", 590, posY+19450);
fill(255,231,6);
text( "Special Thanks", 590, posY+19510);
fill(255);
text( "============", 590, posY+19570);
fill(255);
text( "Daniel Brynolf", 440, posY+19690);
text( "Pontus Hammarberg", 480, posY+19790);
text( "'Twenty years from now you will be more disappointed", 590, posY+19980);
text( "by the things that you didn't do than by the ones you", 590, posY+20010);
text( "did do. So throw off the bowlines. Sail away from the", 580, posY+20040);
text( "safe harbor. Catch the trade winds in your sails.", 570, posY+20070);
text( "Explore. Dream. Discover.'-Unkown", 490, posY+20100);
posY = posY-2; // posY--; (lo mismo)
if(mouseX > width/2 && mouseY < height/2){
fill(random(100,255),0,random(200,255));
text("Hola Profe, por favor apruebeme", width/2, height/2);
}
image(Sword, mouseX, mouseY,50,50);
}
Crear una ilusión óptica interactiva con estructuras repetitivas (ciclos flor).
Con interactiva nos referimos a que la ilusión pueda ser modificada por el usuario mediante el teclado y/o mouse, modulando variables por medio de los eventos o variables acordes.
OBJETIVOS: comprender las estructuras repetitivas en Processing a través de la visualización de patrones de repetición, modulables por la apropiación de los índices (variable de la repetición).
PFont Letra;
int Estado, Ancho, Pie1, Pie2;
color b, n;
void setup() {
size(800, 600);
background(0);
textAlign( CENTER, CENTER);
Letra = createFont("Caramel Sweets.ttf", 40);
textFont(Letra, 60);
Estado = 0;
Pie1 = 0;
Pie2 = 0;
b = color(255);
n = color(0);
}
void draw() {
if (Estado == 0) {
background(200);
textSize(40);
fill(0);
text("Bienvenido", width/2, 90);
text("Espero les guste", width/2, 150);
boolean Dentro;
Dentro= (dist(mouseX, mouseY, width/2, height/4*2)< 150/2);
if (Dentro) {
fill(0);
} else {
fill(230);
}
circle(width/2, height/4*2, 150);
}
if (Estado == 1) {
noStroke();
for (int i=0; i<40; i++) {
if (i%2 == 0) {
fill(0);
} else {
fill(255);
}
rect(i*20, 0, width, height-150); //ancho,altura
}
fill (b);
rect (Pie1, 100, 100, 60); //pie 1
fill (n);
rect (Pie2, 300, 100, 60); //pie 2
fill(200);
circle(70, 520, 100); //Boton color
fill(100);
circle(200, 520, 100); //Boton desde 0
fill(50);
circle(330, 520, 100); //Creditos
textSize(20);
fill(255);
text("Color", 200, 520);
text("Desde 0", 70, 520);
text("Créditos", 330, 520);
}
if (Estado == 2) {
background(200);
textSize(40);
fill(0);
text("Créditos por la inspiración:", 400, 100);
text("Pagina Web: Cibermitanios", 400, 150);
text("Alumne a cargo:", 400, 250);
text("Nayla Belen Aguilar", 400, 300);
boolean D;
D = (dist(mouseX, mouseY, 400, 500)< 150/2);
if (D) {
fill(50);
} else {
fill(230);
}
circle(400, 500, 150);
fill(0);
text("Inicio", 400, 500);
}
}
void mousePressed() {
if (Estado == 0) {
if ((dist(mouseX, mouseY, width/2, height/4*2)< 150/2)) {
background(255);
Estado = 1;
}
}
if ((dist(mouseX, mouseY, 70, 520)< 100/2)) { //desde 0
Pie1 = 0;
Pie2 = 0;
b = color(255);
n = color(0);
}
if ((dist(mouseX, mouseY, 200, 520))< 100/2) { //color
b = color (random(100, 140), 0, random(120, 160));
n = b;
}
if ((dist(mouseX, mouseY, 330, 520)< 100/2)) { //creditos
background(255);
Estado = 2;
}
if ((dist(mouseX, mouseY, 400, 500)< 100/2)) {
Estado = 0;
}
}
void keyPressed() {
if (key == 'a') {
Pie1++;
Pie2++;
}
if (key == 's') {
Pie1--;
Pie2--;
}
}
Crear una aventura gráfica que haga uso de arreglos y funciones.
OBJETIVOS: comprender el uso de los arreglos, así como las funciones.
PFont Letra;
PImage [] Personajes = new PImage [19];
PImage [] Fondo = new PImage [6];
int Pantallas, Final1, Final2, Final3;
boolean mouseOver;
void setup() {
size (1200, 900);
for (int i = 0; i < Personajes.length; i++) {
Personajes[i] = loadImage("personaje_0" + i + ".png");
}
Fondo [0] = loadImage("Fondo_000.png");
Fondo [1] = loadImage("Fondo_001.png");
Fondo [2] = loadImage("Fondo_002.png");
Fondo [3] = loadImage("Fondo_003.jpg");
Fondo [4] = loadImage("Fondo_004.jpg");
Fondo [5] = loadImage("Fondo_005.jpg");
Letra = createFont("Louis George Cafe Bold Italic.ttf", 24);
Pantallas = 0;
Final1 = 0;
Final2 = 0;
Final3 = 0;
mouseOver = false;
}
void draw() {
//println(Pantallas);
if (Pantallas == 0) {
background( Fondo [0]);
fill(255);
rect(300, 700, 600, 100);
Texto(Letra, 40, color(0));
text("Presiona A para comenzar!", 330, 760);
}
if (Pantallas == 1) {
background( Fondo [1]);
image(Personajes[0], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 20, color(255));
text("Había una vez una dulce niña que quería mucho a su madre y a su abuela. Les ayudaba en todo lo que podía y como era tan buena\nel día de su cumpleaños su abuela le regaló una caperuza roja.Como le gustaba tanto e iba con ella a todas partes, pronto todos\nempezaron a llamarla Caperucita roja.", 10, 730);
text("Un día la abuela de Caperucita, que vivía en el bosque, enfermó y la madre de Caperucita le pidió que\nle llevara una cesta con una torta y un tarro de mantequilla. Caperucita aceptó encantada.", 10, 830);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Pantallas == 2) {
background( Fondo [2]);
image(Personajes[1], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Cuando llegó al bosque, la pequeña comenzó a distraerse contemplando los pajaritos y el paisaje. No se\ndio cuenta de que alguien la observaba detrás de un viejo y frondoso árbol.\nDe repente, oyó una voz suave cerca de ella.", 10, 730);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Pantallas == 3) {
background( Fondo [2]);
image(Personajes[6], 600, 90);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Era un Lobo vestido muy elegante y con un aura muy feliz, acercandose mientras saludaba con su pata.", 10, 730);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Pantallas == 4) {
background( Fondo [2]);
image(Personajes[7], 500, 80);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-¿A dónde vas, Pequeña niña?", 10, 730);
text("-¿A dónde te diriges?", 10, 760);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Pantallas == 5) {
background( Fondo [2]);
image(Personajes[2], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 30, color(255));
text("¿Qué deberias hacer ahora?", 10, 740);
Boton2(color(20, 193, 78), 800, 200, 380, 90, 30, "Hablarle", 40);
Boton2(color(50, 132, 239), 800, 420, 380, 90, 30, "Ignorarle", 40);
}
//----------------------------------------- Camino 1
if (Final1 == 1) {
background( Fondo [2]);
image(Personajes[3], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Pues voy a visitar a mi querida Abuela, quien vive al llegar hasta el final del camino, señor Lobo!", 10, 730);
text("-Usted que hace por aqui?", 10, 770);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 2) {
background( Fondo [2]);
image(Personajes[6], 500, 80);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Yo también vivo por allí. Y no mucho, solo paseaba por estos lados mirando el maravilloso paisaje.", 10, 730);
text("-Señorita no te gustaria jugar conmigo?", 10, 770);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 3) {
background( Fondo [2]);
image(Personajes[1], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("¿Deberias aceptar?", 10, 730);
Boton2(color(20, 193, 78), 800, 200, 380, 90, 30, "Aceptar", 40);
Boton2(color(50, 132, 239), 800, 420, 380, 90, 30, "Negarte", 40);
}
if (Final1 == 4) {
background( Fondo [2]);
image(Personajes[2], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Claro que si, señor Lobo!\n¿Qué tipo de juego propone?", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 5) {
background( Fondo [2]);
image(Personajes[7], 500, 80);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Te echo una carrera a ver quién llega antes. Cada uno iremos por un camino diferente ¿te parece bien?", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 6) {
background( Fondo [2]);
image(Personajes[3], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("La inocente niña pensó que era una idea divertida y asintió con la cabeza. No sabía que el lobo\nhabía elegido el camino más corto para llegar primero a su destino.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 7) {
background( Fondo [3]);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Cuando el animal llegó a casa de la abuela, llamó a la puerta.\n -¿Quién es? - Gritó la mujer.\n-Soy yo, abuelita, tu querida nieta Caperucita. Ábreme la puerta - Dijo el lobo imitando la voz de la niña.\n-Pasa, querida mía. La puerta está abierta - Contestó la abuela.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 8) {
background( Fondo [4]);
image(Personajes[8], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("El malvado lobo entró en la casa y sin pensárselo dos veces, saltó sobre ella y se comió a la anciana.\nDespués, se puso su ropa y su pañuelo de dormir y se metió entre las sábanas esperando a que\nllegara la niña. Al rato, se oyeron unos golpes.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 9) {
background( Fondo [3]);
image(Personajes[2], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-¿Quién llama?- Dijo el lobo forzando la voz como si fuera la abuelita.\n-Soy yo, Caperucita. Vengo a hacerte una visita y a traerte unos ricos dulces para merendar.\nPasa, querida, estoy deseando abrazarte - Dijo el lobo malvado relamiéndose.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 10) {
background( Fondo [5]);
image(Personajes[5], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("La habitación estaba en penumbra.\nCuando se acercó a la cama, a Caperucita le pareció que su abuela estaba muy cambiada.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 11) {
background( Fondo [5]);
image(Personajes[4], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Extrañada, Dijo:\n-Abuelita, abuelita ¡qué ojos tan grandes tienes!\n-Son para verte mejor, preciosa mía.- Contestó el lobo, suavizando la voz.\n-Abuelita, abuelita ¡qué orejas tan grandes tienes!\n-Son para oírte mejor, querida.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 12) {
background( Fondo [5]);
image(Personajes[12], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Pero... abuelita, abuelita ¡qué boca tan grande tienes!\n-¡Es para comerte mejor!- Gritó el lobo dando un enorme salto pero fallo en comerce a Caperucita.\nLa niña tomo la oportunidad y salio corriendo hacia el bosque en busca de ayuda.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 13) {
background( Fondo [2]);
image(Personajes[13], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("En su escapada, Caperucita se choca contra un leñador que pasaba por el bosque,\nal cual le pide ayuda para salvar a su abuela.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 14) {
background( Fondo [4]);
image(Personajes[14], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Una vez de vuelta, encuentran al lobo tomando una siesta. Por lo que el leñador utiliza un cuchillo para\nabrirle el estomago y para su sorpresa la abuela sale sana.\nLuego de rescatarla, el Leñador cose la barriga del lobo y esperan a que este despierte.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final1 == 15) {
background( Fondo [2]);
image(Personajes[11], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Cuando por fin abrió los ojos, vio como los tres le rodeaban y escuchando la amenazante voz del cazador:\n-¡Lárgate, lobo malvado! ¡Como vuelva a verte por aquí, no volverás\na contarlo!\nEl lobo, aterrado, se puso de pie y salió despavorido.\nCaperucita y su abuelita, con lágrimas cayendo sobre sus mejillas, se abrazaron.", 10, 740);
Boton2(color(129, 120, 120), 800, 600, 380, 90, 30, "Creditos", 40);
}
//------------------------------------- Camino 2
if (Final2 == 1) {
background( Fondo [2]);
image(Personajes[4], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Lo siento señor, tengo que ir rapido a la casa de mi abuela. Que tenga un buen dia.\nLe dijo timidamente mientras trataba de rodearlo y seguir su camino.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final2 == 2) {
background( Fondo [2]);
image(Personajes[15], 500, 80);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-...\nEl lobo se quedo callado y dejo pasar a la Caperusa sin mucho problema.\nPero lo que no sabia Caperusa es que el lobo comenzo a moverse entre los caminos que conocia, un\nsendero mas corto para la casa de la abuela.\nYa que se habia dado cuenta para donde se dirigia la niña.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final2 == 3) {
background( Fondo [3]);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Cuando el animal llegó a casa de la abuela, llamó a la puerta.\n -¿Quién es? - Gritó la mujer.\n-Soy yo, abuelita, tu querida nieta Caperucita. Ábreme la puerta - Dijo el lobo imitando la voz de la niña.\n-Pasa, querida mía. La puerta está abierta - Contestó la abuela.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final2 == 4) {
background( Fondo [4]);
image(Personajes[8], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("El malvado lobo entró en la casa y sin pensárselo dos veces, saltó sobre ella y se comió a la anciana.\nDespués, se puso su ropa y su pañuelo de dormir y se metió entre las sábanas esperando a que\nllegara la niña. Al rato, se oyeron unos golpes.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final2 == 5) {
background( Fondo [3]);
image(Personajes[2], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-¿Quién llama?- Dijo el lobo forzando la voz como si fuera la abuelita.\n-Soy yo, Caperucita. Vengo a hacerte una visita y a traerte unos ricos dulces para merendar.\nPasa, querida, estoy deseando abrazarte - Dijo el lobo malvado relamiéndose.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final2 == 6) {
background( Fondo [5]);
image(Personajes[5], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("La habitación estaba en penumbra.\nCuando se acercó a la cama, a Caperucita le pareció que su abuela estaba muy cambiada.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final2 == 7) {
background( Fondo [5]);
image(Personajes[4], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Extrañada, Dijo:\n-Abuelita, abuelita ¡qué ojos tan grandes tienes!\n-Son para verte mejor, preciosa mía.- Contestó el lobo, suavizando la voz.\n-Abuelita, abuelita ¡qué orejas tan grandes tienes!\n-Son para oírte mejor, querida.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final2 == 8) {
background( Fondo [5]);
image(Personajes[12], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Pero... abuelita, abuelita ¡qué boca tan grande tienes!\n-¡Es para comerte mejor!-Gritó el lobo dando un enorme salto y comiendose al instante\na la niña de un solo bocado.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final2 == 9) {
background( Fondo [4]);
image(Personajes[10], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Una vez terminada su cena, el lobo se arregla bien la ropa y se acomoda en su nueva casa,\nesperando por nuevas victimas.", 10, 740);
Boton2(color(129, 120, 120), 800, 600, 380, 90, 30, "Creditos", 40);
}
//------------------------------------- Camino 2
if (Final3 == 1) {
background( Fondo [2]);
image(Personajes[5], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Lo siento señor Lobo, creo que seria mejor si me voy directo.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final3 == 2) {
background( Fondo [2]);
image(Personajes[15], 500, 80);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-¡Pero por supuesto niña! No hay ningun problema, espero que tengas un buen viaje.\nLo que no sabia Caperusa es que el lobo comenzo a moverse entre los caminos que conocia, un\nsendero mas corto para la casa de la abuela.\nYa que se habia dado cuenta para donde se dirigia la niña.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final3 == 3) {
background( Fondo [3]);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Cuando el animal llegó a casa de la abuela, llamó a la puerta.\n -¿Quién es? - Gritó la mujer.\n-Soy yo, abuelita, tu querida nieta Caperucita. Ábreme la puerta - Dijo el lobo imitando la voz de la niña.\n-Pasa, querida mía. La puerta está abierta - Contestó la abuela.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final3 == 4) {
background( Fondo [4]);
image(Personajes[8], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("El malvado lobo entró en la casa y sin pensárselo dos veces, saltó sobre ella y le mordio la yugular.\nDespués, la pone a cocinar, se pone su ropa y su pañuelo de dormir y se metió entre las\nsábanas esperando a que llegara la niña.\nAl rato, se oyeron unos golpes.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final3 == 5) {
background( Fondo [3]);
image(Personajes[2], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-¿Quién llama?- Dijo el lobo forzando la voz como si fuera la abuelita.\n-Soy yo, Caperucita. Vengo a hacerte una visita y a traerte unos ricos dulces para merendar.\nPasa, querida, estoy deseando abrazarte - Dijo el lobo malvado relamiéndose.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final3 == 6) {
background( Fondo [4]);
image(Personajes[16], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("La habitación estaba en penumbra.\nCuando se acercó a la cocina, a Caperucita le pareció que su abuela estaba muy cambiada.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final3 == 7) {
background( Fondo [4]);
image(Personajes[4], 0, 200);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Ven a sentarte para comer algo querida.- Dijo el lobo forzando la voz como si fuera la abuelita.\n-Se te escucha algo rara abuela...¿Estas segura que te sientes bien?\n-¡Pero por supuesto mi niña! Ahora come un poco que estas muy delgada.- El lobo hablo mientras sacaba su victima del horno", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final3 == 8) {
background( Fondo [4]);
image(Personajes[17], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Una vez sentada,Caperucita se da cuenta que la carne se ve y tiene un aroma extraño.\n-Abuela esta carne tiene un aroma muy extraño...\n-Claro que no! Come mi niña.- Hablo el Lobo mientras sonreia\nCaperucita sintiendo lo extraño de la situación comenzo a tomar el cuchillo para protegerse.\n-Abuelita, abuelita ¡qué ojos tan grandes tienes!\n-Son para verte mejor, preciosa mía.- Contestó el lobo, suavizando la voz.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final3 == 9) {
background( Fondo [4]);
image(Personajes[18], 0, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("-Pero... abuelita, abuelita ¡Tienes una boca muy grande tienes!\n-¡Es para comerte mejor!-Gritó el lobo dando un enorme salto, por suerte Caperucita\nutiliza el utensillo que ya estaba sosteniendo como arma y la utiliza para apuñala al Lobo, dandose\ncuenta quien realmente era al mismo tiempo.", 10, 740);
Boton1(color (255), 1130, 840, 50, 50);
}
if (Final3 == 10) {
background( Fondo [4]);
image(Personajes[9], 200, 0);
recDial(color(0), 0, 700, width, 1200);
Texto(Letra, 25, color(255));
text("Con el dolor de saber que su abuela le habia pasado algo, arrastro al Lobo al horno y\nlo dejo que se cocinada vivo.\nUna vez muerto y asado, la niña coloca un pedazo en un plato y comienza a comer.\n-Esto es lo que le pasa a los lobos malos.-Hablo con un tono frio Caperucita.", 10, 740);
Boton2(color(129, 120, 120), 800, 600, 380, 90, 30, "Creditos", 40);
}
if (Pantallas == 6) {
background(0);
pushStyle();
Texto(Letra, 50, color(255));
textAlign(CENTER);
text("Trabajo Practico Nº4:\nAventura Grafica", width/2, 100);
text("Alumna a cargo: Nayla Belen Aguilar", width/2, 300);
text("Caperucita Roja", width/2, 500);
text("Adaptación del cuento de Charles Perrault", width/2, 600);
popStyle();
Boton2(color(129, 120, 120), 400, 800, 380, 90, 30, "Reiniciar", 40);
}
}
void keyPressed() {
if (key == 'a' && Pantallas == 0) {
Pantallas = 1;
}
}
void mouseReleased() {
if ((Pantallas < 5) && (mouseX > 1130) && (mouseX < 1130+50) && (mouseY > 840) && (mouseY < 840+50)) {
Pantallas ++;
}
if ((Final1 > 0) && (Final1 < 15) && (mouseX > 1130) && (mouseX < 1130+50) && (mouseY > 840) && (mouseY < 840+50)) {
Final1 ++;
}
if ((Final1 == 0) && (mouseX > 800) && (mouseX < 800+380) && (mouseY > 200) && (mouseY < 200+90)) {
Final1 = 1; //Positivo
}
if ((Final1 == 3) && (mouseX > 800) && (mouseX < 800+380) && (mouseY > 200) && (mouseY < 200+90)) {
Final1 = 4;
}
if ((Pantallas == 5) && (mouseX > 800) && (mouseX < 800+380) && (mouseY > 420) && (mouseY < 420+90)) {
Final2 = 1; //ignorar
}
if ((Final2 > 0) && (Final2 < 9) && (mouseX > 1130) && (mouseX < 1130+50) && (mouseY > 840) && (mouseY < 840+50)) {
Final2 ++;
}
if ((Final1 == 3) && (mouseX > 800) && (mouseX < 800+380) && (mouseY > 420) && (mouseY < 420+90)) {
Final3 = 1; //negarte
}
if ((Final3 > 0) && (Final3 < 10) && (mouseX > 1130) && (mouseX < 1130+50) && (mouseY > 840) && (mouseY < 840+50)) {
Final3 ++;
}
//----Creditos------
if ((Final1 == 15) && (mouseX > 800) && (mouseX < 800+380) && (mouseY > 600) && (mouseY < 600+90)) {
Pantallas = 6;
}
if ((Final2 == 9) && (mouseX > 800) && (mouseX < 800+380) && (mouseY > 600) && (mouseY < 600+90)) {
Pantallas = 6;
}
if ((Final3 == 10) && (mouseX > 800) && (mouseX < 800+380) && (mouseY > 600) && (mouseY < 600+90)) {
Pantallas = 6;
}
//-----Reinicio------
if ((Pantallas == 6) && (mouseX > 400) && (mouseX < 400+380) && (mouseY > 800) && (mouseY < 800+90)) {
Pantallas = 0;
Final1 = 0;
Final2 = 0;
Final3 = 0;
}
}
void Texto (PFont Fuente, int Tam, color Dial){
fill(Dial);
textFont(Fuente);
textSize (Tam);
}
//boton cambio de pantalla
void Boton1(color col, float posX, float posY, float tamX, float tamY) {
fill(col);
rect(posX, posY, tamX, tamY);
}
//botones eleccion
void Boton2(color c, int X, int Y, float Tx, float Ty, float R, String texto, float TamT) {
if (mouseOver(X, Y)) {
fill(255, 213, 0);
} else {
fill(c);
}
rect(X, Y, Tx, Ty, R);
pushStyle();
textAlign(CENTER);
textSize(TamT);
fill(255);
text(texto, X+Tx/4, Y+Ty/1.5);
popStyle();
}
//[Rectangulo de Dialogo]
void recDial(color col, float posX, float posY, float tamX, float tamY) {
fill(col);
rect(posX, posY, tamX, tamY);
}
boolean mouseOver(int posx, int posy) {
if (mouseX > posx && mouseX< posx+380 && mouseY> posy && mouseY< posy+90 ) { return true; } else { return false; } }
Crear una aventura gráfica que haga uso de arreglos y funciones.
OBJETIVOS: comprender el uso de los arreglos, así como las funciones.
Compañero de trabajo: Lutz Juan
Juego tl;
int balasGlobal = 0;
void setup() {
size(800, 600);
surface.setLocation(displayWidth/2-width/2, displayHeight/2-height/2);
smooth();
tl = new Juego();
}
void draw() {
tl.draw();
balasGlobal = tl.balas;
}
void keyPressed() {
if (key=='w') {
tl.w = true;
}
if (key=='s') {
tl.s = true;
}
if (key=='d') {
tl.d = true;
}
if (key=='a') {
tl.a = true;
}
}
void keyReleased() {
if (keyCode==ENTER) {
if (tl.menu) {
tl.menu=false;
}
if (tl.ganar) {
tl.menu=true;
tl.ganar=false;
}
if (tl.perder) {
tl.menu=true;
tl.perder=false;
}
}
if (key=='w') {
tl.w = false;
}
if (key=='s') {
tl.s = false;
}
if (key=='d') {
tl.d = false;
}
if (key=='a') {
tl.a = false;
}
}
void mouseReleased() {
if (!tl.menu) {
if (tl.balas < 50) { tl.balas++; tl.bala[tl.balas-1].impacto=false; tl.bala[tl.balas-1].actualizar(tl.Juan); } else if
(tl.balas==50) { tl.balas=0; } } }
class disparo {
float x, y, absx, absy;
int b = 0;
boolean impacto = false;
float vel=15;
float ang;
disparo(float px, float py) {
x=px;
y=py;
}
void dibujar(Heroe J) {
if (!impacto) {
x=x-vel;
pushMatrix();
translate(J.x, J.y);
rotate(map(ang, -PI, PI, 0, TWO_PI));
circle(x, y, 5);
absx=screenX(x, y);
absy=screenY(x, y);
popMatrix();
} else {
absx=-100;
absy=-100;
}
}
void actualizar(Heroe J) {
ang=(atan2(mouseY-J.y, mouseX-J.x));
x=0;
y=0;
}
boolean municion() {
if (x<-width) { return false; } else { return true; } } }
class Enemigo {
float x, y, tam;
float muertx = 0, muerty = 0;
boolean mX = false, mY = true;
boolean d = true, V = true;
PImage mafia;
Enemigo(float posX, float posY, float t) {
V=true;
x=posX;
y=posY;
tam=t;
mafia = loadImage("mafioso_"+int(random(-0.1, 2.1))+".png");
mafia.resize(int(tam), int(tam));
}
void dibujar(Mapa f, disparo[] dis) {
if (!vivo(dis)) {
V = false;
}
if (V) {
push();
imageMode(CENTER);
image(mafia, x, y);
pop();
mover(f);
muertx=x;
muerty=y;
} else {
x=-200;
y=-200;
push();
tint(255, 0, 0);
imageMode(CENTER);
image(mafia, muertx, muerty);
pop();
}
}
boolean vivo(disparo[] b) {
for (int i=0; i450 && m < 500) {
return true;
} else {
return false;
}
}
void mover(Mapa back) {
if (back.colision(x, y, tam/2)) {
if (back.distX=width-tam/2) {
mX=false;
} else if (x<=0+tam/2) {
mX=true;
}
if (y>=height-tam/2) {
mY=false;
} else if (y<=0+tam/2) {
mY=true;
}
}
boolean colision(float colx, float coly) {
if (dist(colx, y, x, y)
class Heroe {
float x, y, ang;
float diam = 20;
float rad = diam/2;
float vel = 3;
PImage TLWN = loadImage("tl.png");
Heroe(float posX, float posY) {
x=posX;
y=posY;
TLWN.resize(int(diam*3), 0);
}
void dibujar() {
pushStyle();
noStroke();
//circle(x, y, diam);
ang = atan2(mouseY-y, mouseX-x);
pushMatrix();
translate(x, y);
rotate(map(ang, -PI, PI, 0, TWO_PI));
rotate(radians(-90));
//rect(-diam, -diam/6, diam, diam/3);
imageMode(CENTER);
image(TLWN, 0, 0);
popMatrix();
popStyle();
}
void mover(String direc) {
if (direc.equals("none")) {
//IDLE
} else if (direc.equals("derecha") && x0+diam) {
x-=vel;
} else if (direc.equals("arriba") && y>0+diam) {
y-=vel;
} else if (direc.equals("abajo") && y
class Juego {
int cant = 1;
int balas = 0;
int muertes = 0;
boolean menu = true, ganar = false, perder = false;
boolean w = false, a = false, s = false, d = false;
Heroe Juan;
disparo[] bala = new disparo[50];
Enemigo[] Inaki = new Enemigo[cant];
Mapa fondo;
PImage robotito, robotito2, win, lose;
Juego() {
Juan = new Heroe(width/2, height/2);
fondo = new Mapa();
for (int i=0; iJuan.x) {
if (a) {
Juan.mover("izquierda");
}
if (w) {
Juan.mover("arriba");
}
if (s) {
Juan.mover("abajo");
}
} else if (fondo.tempYJuan.y) {
if (w) {
Juan.mover("arriba");
}
if (d) {
Juan.mover("derecha");
}
if (a) {
Juan.mover("izquierda");
}
}
}
}
class Mapa {
int cant = 20;
int tam = 80;
float[] x = new float[cant];
float[] y = new float[cant];
PImage[] basura = new PImage[cant];
PImage piso;
float distX, distY, tempX, tempY;
Mapa() {
piso = loadImage("piso.jpg");
piso.resize(200, 0);
for (int i=0; i300 && x[i]<500 && y[i]<400 && y[i]>200) {
if (x[i]>400) {
x[i] = random(width/2+tam, width-tam/2);
y[i] = random(height/2);
} else if (x[i]<=400) {
x[i] = random(width/2-tam);
y[i] = random(height/2, height);
}
}
}
}
void draw() {
push();
tint(200);
for (int y =0; y < cant; y++) {
for (int x =0; x < cant; x++) {
image(piso, 100*x, 100*y);
}
}
pop();
for (int i=0; ix[i]+tam) {
tempX = x[i]+tam;
}
if (posYy[i]+tam) {
tempY = y[i]+tam;
}
distX = posX-tempX;
distY = posY-tempY;
float distancia = sqrt( (distX*distX) + (distY*distY) );
if (distancia <= radio-15) {
return true;
}
}
return false;
}
}
Crear una aventura gráfica que haga uso de arreglos y funciones.
OBJETIVOS: comprender el uso de los arreglos, así como las funciones.
Compañero de trabajo: Lutz Juan
import processing.sound.*;
Aventura necesitoUnaMano;
void setup() {
size(800, 600);
necesitoUnaMano = new Aventura(this);
}
void draw() {
necesitoUnaMano.draw();
}
void mouseReleased() {
necesitoUnaMano.mouse();
}
void keyPressed() {
necesitoUnaMano.keyP();
}
void keyReleased() {
necesitoUnaMano.keyR();
}
class Aventura {
SoundFile laser;
SoundFile musica;
Juego J;
PFont fuenteDefault;
boolean creditos = false;
Pantalla fondo;
Boton[] B = new Boton[4];
Dialogo destruido = new Dialogo("TL-WN ha quedado destruido", 24, 8, color(255, 0, 0));
String[] pantalla;
String[] texto = {"", ""};
String textCred = "Tecno Multimedia 1\nComisión 2\n----------\nJuan Lutz\nLegajo 88196/6\n----------\nNayla Aguilar\nLegajo 88106/6";
PImage[] img = new PImage[8];
PImage[] tl = new PImage [8];
PImage[] vagos = new PImage [4];
PImage[] back = new PImage[3];
PImage luz, nada, vago, basura, caja, mafia, celebra, sombrero, brazo;
int numP = 0;
int a = 0;
int dial = 0;
float contador = 0;
boolean inicio, B1, B2, B3, B4;
Aventura(PApplet a) {
laser = new SoundFile(a, "disparo.wav");
musica = new SoundFile(a, "musica fondo.mp3");
musica.amp(0.15);
musica.loop();
pantalla = loadStrings("pantallas.txt"); //Tengo las pantallas a utilizar cargadas con Strings para reconocerlas más fácil
fondo = new Pantalla("Hola", color(255), 24);
J = new Juego(a);
for (int i = 0; i6000) {
contador = millis();
numP+=2;
}
fondo.draw(img[numP], true, texto[dial]);
luz(frameCount*8%255);
B[0].draw(width/5/2, height/15*11, width/5, height/12, color(255, 0, 0), "Ignorar la\nalarma");
B[1].draw(width/5*3.5, height/15*11, width/5, height/12, color(255, 0, 0), "Escapar por la\nventana");
push();
strokeWeight(8);
stroke(255, 0, 0);
line(0, height/15*13.55, map(millis()-contador, 0, 6000, 0, width), height/15*13.55);
pop();
} else if (pantalla[numP].equals("Musica")) {
fondo.draw(img[numP], true, texto[dial]);
luz(frameCount*8%255);
B[0].draw(width/1.3, height/5*4, 140, 40, color(50, 50, 255), "Siguiente");
} else if (pantalla[numP].equals("Destruido")) {
fondo.draw(img[numP], true, texto[dial]);
fill(255, 0, 0, 200);
rect(0, 0, width, height);
fill(0);
destruido.draw();
B[0].draw(width/2-width/10, height/15*12, width/5, height/15, color(#251FDE), "Volver al inicio");
} else if (pantalla[numP].equals("Salto")) {
if (dial=width/3 && mouseX<=width/3*2) {
image(tl[1], width/8, height/2.5);
if (mouseX>=width/4*2.2 && mouseX<=width/4*2.2+100 && mouseY>height/2 && mouseY=width/3*2) {
image(tl[3], width/8, height/2.5);
if (mouseX>=width/4*3.2 && mouseX<=width/4*3.2+200 && mouseY>height/2.6 && mouseY=width/20 && mouseX<=width/20+80 && mouseY>height/10*5.5 && mouseY 0) {
texto = loadStrings(pantalla[numP]+".txt");
}
}
void luz (int a) {
pushStyle();
imageMode(CENTER);
tint(255, 0, 0, a);
image(luz, width, 0);
popStyle();
}
void mouse() {
if (!J.menu && !J.ganar && !J.perder) {
if (J.balas < 50) {
J.balas++;
J.bala[J.balas-1].impacto=false;
J.bala[J.balas-1].actualizar(J.Juan);
laser.amp(0.4);
laser.play();
} else if (J.balas == 50) {
J.balas=0;
}
}
if (J.perder) {
J.menu=true;
J.perder=false;
J.musica1.stop();
musica.play();
}
if (numP>0) {
if (dial 0) {
// necesitoUnaMano.numP--;
// necesitoUnaMano.dial=0;
// }
//}
//-----------------------------------------------------
}
void keyR() {
if (keyCode==ENTER) {
if (J.menu) {
J.menu=false;
}
}
if (key=='w') {
J.w = false;
}
if (key=='s') {
J.s = false;
}
if (key=='d') {
J.d = false;
}
if (key=='a') {
J.a = false;
}
}
}
class Boton {
float x, y, tamx, tamy;
color col;
String texto;
String ID;
Boton(String id) {
ID=id;
}
void draw(float posX, float posY, float tamX, float tamY, color colBot, String textoB) {
x=posX;
y=posY;
tamx=tamX;
tamy=tamY;
col=colBot;
texto=textoB;
strokeWeight(10);
stroke(0, 0, 255, 50);
fill(255, 200);
rect(x, y, tamx*1.2, tamy*1.2, tamx*1.2/10);
pushStyle();
strokeWeight(5);
stroke(0, 50);
rectMode(CENTER);
if (botonPres()) {
fill(50, 0, 200);
} else {
fill(col);
}
rect(x+(tamx*1.2)/2, y+(tamy*1.2)/2, tamx*1.12, tamy, tamx/10);
popStyle();
pushStyle();
textAlign(CENTER, CENTER);
textSize(tamx/texto.length()*1.8);
fill(0);
text(texto, x+(tamx*1.2)/2, y+(tamy*1.2)/2);
popStyle();
}
boolean botonPres() {
if (mouseX> x && mouseX< x+tamx*1.2 && mouseY> y && mouseY< y+tamy*1.2) { return true; } else { return false; } } }
class Dialogo {
String texto;
int tam;
int espacio;
color col;
Dialogo(String t, int T, int e, color c) {
texto=t;
tam=T;
espacio=e;
col=c;
}
void draw() {
for (int i=255; i>20; i--) {
stroke(color(0, 0, 0, i/20));
line(0, height-tam*espacio/4+tam*1.2+200/40-(i/40), width, height-tam*espacio/4+tam*1.2+200/40-(i/40));
}
noStroke();
fill(0, 0, 128);
rect(0, height-tam*espacio/4, width, tam*1.2);
fill(100, 100, 220);
rect(0, height-tam*espacio/4-tam/3/1.5, width, tam/3);
pushStyle();
fill(col);
textAlign(LEFT, CENTER);
pushMatrix();
translate(tam, 0);
textSize(tam);
text(texto, width/30, height-tam*espacio/4.3+tam/2);
popMatrix();
popStyle();
}
}
class disparo {
float x, y, absx, absy;
int b = 0;
boolean impacto = false;
float vel=15;
float ang;
disparo(float px, float py) {
x=px;
y=py;
}
void dibujar(Heroe J) {
if (!impacto) {
x=x-vel;
pushMatrix();
translate(J.x, J.y);
rotate(map(ang, -PI, PI, 0, TWO_PI));
circle(x, y, 5);
absx=screenX(x, y);
absy=screenY(x, y);
popMatrix();
} else {
absx=-100;
absy=-100;
}
}
void actualizar(Heroe J) {
ang=(atan2(mouseY-J.y, mouseX-J.x));
x=0;
y=0;
}
boolean municion() {
if (x<-width) { return false; } else { return true; } } }
class Enemigo {
float x, y, tam;
float muertx = 0, muerty = 0;
boolean mX = false, mY = true;
boolean d = true, V = true;
PImage mafia;
Enemigo(float posX, float posY, float t) {
V=true;
x=posX;
y=posY;
tam=t;
mafia = loadImage("mafioso_"+int(random(-0.1, 2.1))+".png");
mafia.resize(int(tam), int(tam));
}
void dibujar(Mapa f, disparo[] dis, Juego j) {
if (!vivo(dis, j)) {
V = false;
}
if (V) {
push();
imageMode(CENTER);
image(mafia, x, y);
pop();
mover(f);
muertx=x;
muerty=y;
} else {
x=-200;
y=-200;
push();
tint(255, 0, 0);
imageMode(CENTER);
image(mafia, muertx, muerty);
pop();
}
}
boolean vivo(disparo[] b, Juego j) {
for (int i=0; i450 && m < 500) {
return true;
} else {
return false;
}
}
void mover(Mapa back) {
if (back.colision(x, y, tam/2)) {
if (back.distX=width-tam/2) {
mX=false;
} else if (x<=0+tam/2) {
mX=true;
}
if (y>=height-tam/2) {
mY=false;
} else if (y<=0+tam/2) {
mY=true;
}
}
boolean colision(float colx, float coly) {
if (dist(colx, y, x, y)
class Heroe {
float x, y, ang;
float diam = 20;
float rad = diam/2;
float vel = 3;
PImage TLWN = loadImage("tl.png");
Heroe(float posX, float posY) {
x=posX;
y=posY;
TLWN.resize(int(diam*3), 0);
}
void dibujar() {
pushStyle();
noStroke();
//circle(x, y, diam);
ang = atan2(mouseY-y, mouseX-x);
pushMatrix();
translate(x, y);
rotate(map(ang, -PI, PI, 0, TWO_PI));
rotate(radians(-90));
//rect(-diam, -diam/6, diam, diam/3);
imageMode(CENTER);
image(TLWN, 0, 0);
popMatrix();
popStyle();
}
void mover(String direc) {
if (direc.equals("none")) {
//IDLE
} else if (direc.equals("derecha") && x0+diam) {
x-=vel;
} else if (direc.equals("arriba") && y>0+diam) {
y-=vel;
} else if (direc.equals("abajo") && y
class Juego {
SoundFile musica1, musica2;
Pantalla resultado;
int cant = 50;
int balas = 0;
int muertes = 0;
boolean menu = true, ganar = false, perder = false;
boolean w = false, a = false, s = false, d = false;
String[] victoria;
Heroe Juan;
disparo[] bala = new disparo[50];
Enemigo[] Inaki = new Enemigo[cant];
Mapa fondo;
PImage robotito, robotito2, win, lose;
Juego(PApplet a) {
musica1 = new SoundFile(a, "derrota.wav");
musica2 = new SoundFile(a, "victoria.mp3");
victoria = loadStrings("Mafia.txt");
resultado = new Pantalla("Hola", color(255), 20);
Juan = new Heroe(width/2, height/2);
fondo = new Mapa();
for (int i=0; iJuan.x) {
if (a) {
Juan.mover("izquierda");
}
if (w) {
Juan.mover("arriba");
}
if (s) {
Juan.mover("abajo");
}
} else if (fondo.tempYJuan.y) {
if (w) {
Juan.mover("arriba");
}
if (d) {
Juan.mover("derecha");
}
if (a) {
Juan.mover("izquierda");
}
}
}
}
class Mapa {
int cant = 20;
int tam = 80;
float[] x = new float[cant];
float[] y = new float[cant];
PImage[] basura = new PImage[cant];
PImage piso;
float distX, distY, tempX, tempY;
Mapa() {
piso = loadImage("piso.jpg");
piso.resize(200, 0);
for (int i=0; i300 && x[i]<500 && y[i]<400 && y[i]>200) {
if (x[i]>400) {
x[i] = random(width/2+tam, width-tam/2);
y[i] = random(height/2);
} else if (x[i]<=400) {
x[i] = random(width/2-tam);
y[i] = random(height/2, height);
}
}
}
}
void draw() {
push();
tint(200);
for (int y =0; y < cant; y++) {
for (int x =0; x < cant; x++) {
image(piso, 100*x, 100*y);
}
}
pop();
for (int i=0; ix[i]+tam) {
tempX = x[i]+tam;
}
if (posYy[i]+tam) {
tempY = y[i]+tam;
}
distX = posX-tempX;
distY = posY-tempY;
float distancia = sqrt( (distX*distX) + (distY*distY) );
if (distancia <= radio-15) {
return true;
}
}
return false;
}
}
class Pantalla {
Dialogo dialogo;
PFont fuente;
Pantalla (String D, color t, int Tam) {
dialogo = new Dialogo (D, Tam, 8, t);
fuente = loadFont("WorkSans-Regular-48.vlw");
}
void draw(PImage fondo, boolean dial, String D) {
image(fondo, 0, 0);
textFont(fuente);
if (dial) {
dialogo.texto = D;
dialogo.draw();
}
}
}