Užduotys

PRADEDANTIEJI - 1 KLASĖS UŽDUOTYS

PAŽENGĘ - 2 KLASĖS UŽDUOTYS

ŽINOVAI 3-4 KLASĖS UŽDUOTYS

  • 16 Užduotis.

    Reikia sukurti žaidimą kaip parodyta, jei pataikome ant geltonos spalvos gauname 10, jei ant raudonos 6, jei ant baltos 4 ir t.t. Taškus reikia skaičiuoti pagal atstumą nuo vidurio.

  • Sprendimas
    pamoka16
  • Atsakymas
    PImage taikinys;
    int taskai;
    void setup() 
    {
    size(500,350);
    background(25,200,200);
    taikinys = loadImage("data/taikinys.png");
    textSize(30);
    }
    void draw()
    {
    image(taikinys,0,0, width, height);  
    kryziukas();
    fill(255,255,0);
    text("taškai: "+taskai, 10, 30);
    }
    int mx, my;
    void kryziukas()
    {
    mx = mouseX;
    my = mouseY;
    fill(0,0,0,50);
    line(mx-25, my, mx+25, my);
    line(mx, my-25, mx, my+25);
    ellipse(mx, my, 50,50);
    }
    void mousePressed()
    {
    if(dist(mouseX, mouseY, width/2, height/2) < 20)
    {
    		taskai+=5;
    }
    else if(dist(mouseX, mouseY, width/2, height/2) < 60)
    {
    		taskai+=3;
    }
    else if(dist(mouseX, mouseY, width/2, height/2) < 90)
    {       
    		taskai+=2;
    }
    
    }
    	
  • 17 Užduotis.

    Reikia sukurti skaičiuotuvą. Stipresniems pabaigti funkcionalumą (t.y padaryti pilną skaičiuotuvo funkcionalumą.)

  • Sprendimas
    pamoka17a pamoka17b
  • Atsakymas
    int count=0;
    void setup() {
    size(300,300);  
    } 
    void draw() {  
    fill(250,250,230); 
    rect(0,5,200,40);
    fill(0);
    text(count, 180-(""+count).length()*3, 30);
    for (int i = 50; i < 140; i = i+40) {
    	fill(250,250,230); 
    	rect(0,i,35,35);   
    }   
    for (int x = 50; x < 140; x = x+40) {
    	fill(250,250,230);
    	rect(40,x,35,35);
    }  
    for (int y = 50; y < 140; y = y+40) {
    	rect(80,y,35,35);
    }  
    rect(0,170,75,35);
    rect(120,50,80,35);
    rect(120,90,80,35);
    rect(120,130,80,35);
    rect(80,170,35,35);
    rect(120,170,80,35); 
    	fill(0); 
    	text("7", 12, 75); 
    	text("8", 52, 75); 
    	text("9", 90, 75);
    	text("4", 12, 115);
    	text("5", 52, 115);
    	text("6", 92, 115);  
    	text("1", 12, 150);
    	text("2", 52, 150);
    	text("3", 92, 150);
    	text("0", 30, 190);
    	text("C", 92, 190);
    	text("+", 155, 74);
    	text("-", 155, 112);
    	text("*", 155, 150);
    	text("=", 155, 190); 
    } 
    
    void mousePressed () {  
    if ((mouseX>0) && (mouseX < 35) && (mouseY < 80) && (mouseY > 50)) {   
    count = 7;  
    	}
    	else if ((mouseX > 40) && (mouseX < 75) && (mouseY < 80) && (mouseY > 50)) {   
    count = 8;   
    	}
    	else if ((mouseX > 80) && (mouseX < 115) && (mouseY < 80) && (mouseY > 50)) {   
    count = 9;  
    	}
    	else if ((mouseX > 0) && (mouseX < 35) && (mouseY < 125) && (mouseY > 90)) {   
    count = 4;  
    	}
    	else if ((mouseX > 40) && (mouseX < 75) && (mouseY < 125) && (mouseY > 90)) {   
    count = 5;   
    	}
    	else if ((mouseX > 80) && (mouseX < 115) && (mouseY < 125) && (mouseY > 90)) {   
    count = 6;  
    	}   
    	else if ((mouseX > 0) && (mouseX < 35) && (mouseY < 170) && (mouseY > 130)) {   
    count = 1;   
    	}
    	else if ((mouseX > 40) && (mouseX < 75) && (mouseY < 170) && (mouseY > 130)) {   
    count = 2;  
    	}
    	else if ((mouseX > 80) && (mouseX < 115) && (mouseY < 170) && (mouseY > 130)) {   
    count = 3;   
    	}    
    }
    		

IŠMANANTYS 5-8 KLASĖS UŽDUOTYS

  • 16 Užduotis.

    Reikia sukurti žaidimą kaip parodyta, jei pataikome ant geltonos spalvos gauname 10, jei ant raudonos 6, jei ant baltos 4 ir t.t. Taškus reikia skaičiuoti dviems būdais pagal atstumą ir pagal spalvą.

  • Sprendimas
    pamoka16
  • Atsakymas
    PImage taikinys;
    int taskai;
    String tekstas="";
    void setup() 
    {
    size(500,350);
    background(25,200,200);
    taikinys = loadImage("data/taikinys.png");
    textSize(30);
    }
    void draw()
    {
    image(taikinys,0,0, width, height);  
    kryziukas();
    fill(255,255,0);
    text("taškai: "+taskai, 10, 30);
    text(tekstas, 10, 90);
    }
    int mx, my;
    void kryziukas()
    {
    mx = mouseX;
    my = mouseY;
    fill(0,0,0,50);
    line(mx-25, my, mx+25, my);
    line(mx, my-25, mx, my+25);
    ellipse(mx, my, 50,50);
    }
    void mousePressed()
    {
    if(dist(mouseX, mouseY, width/2, height/2) < 20)
    {
    		taskai+=5;
    }
    else if(dist(mouseX, mouseY, width/2, height/2) < 60)
    {
    		taskai+=3;
    }
    else if(dist(mouseX, mouseY, width/2, height/2) < 90)
    {       
    		taskai+=2;
    }
    getColors();
    }
    void getColors()
    {
    int nx = (int)map(mouseX, 0, width, 0, taikinys.width);
    int ny = (int)map(mouseY, 0, height, 0, taikinys.height);
    color c = taikinys.get(nx, ny);
    int r = red(c);
    int g = green(c);
    int b = blue(c);
    int sum = r+g+b;
    if(sum ==510)
    {
    			taskai+=5;
    }
    else if (sum == 128)
    {
    	taskai+=3;
    }
    else if (sum == 765)
    {
    		taskai+=2;
    }
    else if(sum == 0)
    {
    taskai+=1;
    }
    }
    void keyPressed()
    {
    if(key == 'a')
    {
    taskai = 0;
    }
    }
    										
    	
  • 17 Užduotis.

    Reikia sukurti skaičiuotuvą. Stipresniems pabaigti funkcionalumą (t.y padaryti pilną skaičiuotuvo funkcionalumą.) Stipresniems perdaryti pasinaudojant objektais.

  • Sprendimas
    pamoka17a pamoka17b
  • Atsakymas
    int count=0;
    void setup() {
    size(300,300);  
    } 
    void draw() {  
    fill(250,250,230); 
    rect(0,5,200,40);
    fill(0);
    text(count, 180-(""+count).length()*3, 30);
    for (int i = 50; i < 140; i = i+40) {
    fill(250,250,230); 
    rect(0,i,35,35);   
    }   
    for (int x = 50; x < 140; x = x+40) {
    fill(250,250,230);
    rect(40,x,35,35);
    }  
    for (int y = 50; y < 140; y = y+40) {
    rect(80,y,35,35);
    }  
    rect(0,170,75,35);
    rect(120,50,80,35);
    rect(120,90,80,35);
    rect(120,130,80,35);
    rect(80,170,35,35);
    rect(120,170,80,35); 
    fill(0); 
    text("7", 12, 75); 
    text("8", 52, 75); 
    text("9", 90, 75);
    text("4", 12, 115);
    text("5", 52, 115);
    text("6", 92, 115);  
    text("1", 12, 150);
    text("2", 52, 150);
    text("3", 92, 150);
    text("0", 30, 190);
    text("C", 92, 190);
    text("+", 155, 74);
    text("-", 155, 112);
    text("*", 155, 150);
    text("=", 155, 190); 
    } 
    
    void mousePressed () {  
    if ((mouseX>0) && (mouseX < 35) && (mouseY < 80) && (mouseY > 50)) {   
    count = 7;  
    }
    else if ((mouseX > 40) && (mouseX < 75) && (mouseY < 80) && (mouseY > 50)) {   
    count = 8;   
    }
    else if ((mouseX > 80) && (mouseX < 115) && (mouseY < 80) && (mouseY > 50)) {   
    count = 9;  
    }
    else if ((mouseX > 0) && (mouseX < 35) && (mouseY < 125) && (mouseY > 90)) {   
    count = 4;  
    }
    else if ((mouseX > 40) && (mouseX < 75) && (mouseY < 125) && (mouseY > 90)) {   
    count = 5;   
    }
    else if ((mouseX > 80) && (mouseX < 115) && (mouseY < 125) && (mouseY > 90)) {   
    count = 6;  
    }   
    else if ((mouseX > 0) && (mouseX < 35) && (mouseY < 170) && (mouseY > 130)) {   
    count = 1;   
    }
    else if ((mouseX > 40) && (mouseX < 75) && (mouseY < 170) && (mouseY > 130)) {   
    count = 2;  
    }
    else if ((mouseX > 80) && (mouseX < 115) && (mouseY < 170) && (mouseY > 130)) {   
    count = 3;   
    }    
    }
    	

EKSPERTŲ UŽDUOTYS 

  • 1. Užduotis

    Pagal pateiktą pavyzdį, padarykite įdentišką vaizdą. Kad būtų lengviau susigaudyti koordinatėse, paspaudus ant paveikslėlio pelytės mygtuku gausime foną su koordinatėmis.

    Turime kintamuosius, kurie pateikti kode. Reikia tuos kintamuosius panaudoti, kad gautme tokį pat vaizdą kaip pateikta. pvz line(a, f, b, g);

    Reiks panaudoti: line, rect, ellipse, triangle

  • Sprendimas
    Programuojame processing programoje arba paspaudus mygtuką "programuoti" turėsime langą, kuriame atliksime veiksmus analogiškus processing programai.
    Nustatome ekrano dydį: size(600, 600);
    NoStroke() raktažodžiu nustatome, kad būtų paveikslėliai be linijų kraštinėse.
    Nustatome fono spalvą pasinaudojus background(?); ? - [0..255].
    Stačiakampiui piešti pasinaudojame rect(?, ?, ?, ?);  ? - [0..255].
    Elipsei piešti pasinaudojame ellipse(?, ?, ?, ?);  ? - [0..255].
    Norint piešti figūrą turime rašyti taip: 
    	beginShape();         
    	vertex(?, ?);
    	...
    	...
    	vertex(?, ?);
    	endShape();  
    Norime piešti tik dalį ar visą ellipsę - naudosime arc(?, ?, ?, ?, ?, ?);
    1 parametras atstumas nuo krašto.
    2 atstumas nuo viršaus.
    3 elipsės ilgis.
    4 elipse aukštis.
    5 kokiu kampu pradėsime piešti.
    6 kokiu kampu baigsime piešti.
    Galimos kampo reikšmės nuo 0 iki 2*PI kas atitinka (0..360). Skaičius galime daryti ir didesnius bet jie yra kartotiniai ir neturi prasmės.
  • Atsakymas

    Atsakymas skirtas pasitikrinti

    void setup() {
    	size(600, 600);
    	noStroke();
    	background(140);
    	fill(170);
    	rect(0, 0, width, 20);
    	fill(160);
    	rect(0, height-100, width, 100);
    	fill(110);
    	rect(0, height-110, width, 10); 
    	fill(180);
    	rect(width/2-300/2, height-200, 300, 10);     
    	rect(width/2-260/2, height-190, 260, 15);     
    	rect(width/2-260/2, height-175, 10, 100);     
    	rect(width/2+260/2-10, height-175, 10, 100);    
    	fill(110);
    	rect(width/2-260/2, height-75, 10, 5);         
    	rect(width/2+260/2, height-75, -10, 5);
    	fill(160);
    	rect(width/2-260/2, height-190, 260, 5);      
    	fill(200);
    	rect(width/2+150, height-140, 70, 10);   
    	rect(width/2+150, height-130, 10, 60);   
    	rect(width/2+210, height-130, 10, 60);   
    	fill(220, 50, 110);
    	rect(width/2+150, height-150, 70, 10);    
    	fill(110);
    	rect(width/2+150, height-75, 10, 5);    
    	rect(width/2+210, height-75, 10, 5);
    	fill(180);
    	rect(width/2+150, height-130, 10, 5);    
    	rect(width/2+210, height-130, 10, 5);
    	fill(200);
    	rect(width/2-180, height-140, 200, 10);   
    	rect(width/2-180, height-140, 10, 70);    
    	rect(width/2+10, height-130, 10, 60);    
    	fill(220, 50, 110);
    	rect(width/2-180, height-150, 200, 10);   
    	fill(110);
    	rect(width/2-180, height-75, 10, 5);      
    	rect(width/2+10, height-75, 10, 5);
    	fill(180);
    	rect(width/2-180, height-130, 10, 5);
    	rect(width/2+10, height-130, 10, 5);
    	fill(255, 40);
    	ellipse(width/2, 290, 50, 50);   
    	fill(255, 30);
    	ellipse(width/2, 290, 60, 60);   
    	fill(255, 20);
    	ellipse(width/2, 290, 70, 70);   
    	fill(255, 10);
    	ellipse(width/2, 290, 80, 80);   
    	fill(255, 150);                 
    	ellipse(width/2, 290, 40, 40);
    	fill(30);
    	rect(width/2-2, 0, 4, 250);      
    	fill(60);
    	rect(width/2-50, 250, 100, 50); 
    	fill(0, 200, 255);
    	rect(0, 100, 80, 300);  
    	fill(35, 190, 95);
    	rect(0, 300, 80, 100);   
    	fill(220, 220, 255);
    	beginShape();         
    	vertex(0, 200);
    	vertex(40, 230);
    	vertex(40, 300);
    	vertex(0, 300);
    	endShape();
    	fill(200, 200, 235);
    	rect(40, 230, 40, 70);  
    	fill(90, 90, 95);
    	beginShape();
    	vertex(0, 200);        
    	vertex(80, 200);
    	vertex(80, 240);
    	vertex(40, 240);
    	endShape();
    	fill(70, 70, 75);
    	rect(15, 190, 20, 10);  
    	fill(200, 130, 215);
    	rect(0, 240, 10, 30);   
    	fill(100);
    	rect(0, 100, 80, 10);    
    	rect(80, 100, 10, 300);  
    	rect(0, 260, 80, 10);    
    	fill(120);
    	rect(0, 400, 100, 10);  
    	fill(100);
    	rect(0, 410, 90, 30);   
    	fill(80);
    	rect(0, 410, 90, 10);
    	fill(40);
    	rect(0, 110, 110, 4);
    	ellipse(110, 112, 12, 12);
    	fill(255, 150);
    	rect(50, 110, 50, 270);   
    	rect(50, 110, 50, 15);    
    	fill(200);
    	rect(width-110, 190, 110, 170);
    	fill(230, 175, 0);
    	rect(width-100, 200, 100, 150);
    	fill(190, 140, 0);
    	ellipse(width/2-20, height-240, 30, 30); 
    	ellipse(width/2+15, height-240, 30, 30);  
    	fill(0, 150, 0);
    	ellipse(width/2-25, height-248, 3, 3);   
    	fill(200, 150, 0);
    	ellipse(width/2, height-240, 30, 30);    
    	fill(0, 150, 0);
    	ellipse(width/2+3, height-250, 3, 3);
    	fill(0, 150, 255);
    	arc(width/2, height-240, 80, 80, 0, PI); 
    	fill(0, 120, 230);
    	rect(width/2-42, height-240, 84, 5);     
    	fill(255, 30);
    	rect(width/2-100, height-250, 30, 50);   
    	rect(width/2+100, height-250, -30, 50);
    	fill(185, 15, 15, 150);
    	rect(width/2-95, height-230, 20, 25);    
    	rect(width/2+95, height-215, -20, 10);
    	fill(50);
    	rect(width-35, height-125, 20, 25, 10, 10, 0, 0);
    } 
  • 2. Užduotis

    Pagal pateiktą pavyzdį, padarykite įdentišką vaizdą.

    Reiks panaudoti: cos, sin, sukurti objektą, radians, dinaminį masyvą (pvz.: ArrayList)

  • Sprendimas
    
    							
  • Atsakymas

    Atsakymas skirtas pasitikrinti

    int maxAge = 100;  
    ArrayList obj; 
    boolean pause = false;     
    void setup() {
    size(500, 500);
    background(120, 110, 100);
    obj = new ArrayList();
    for (int i=0; i < 3; i++) {
    Objektas f = new Objektas(width/2, height/2);
    obj.add(f);
    }
    }
    void draw() {
    if (!pause) {
    for (int i=obj.size()-1; i>=0; i-=1) {
    	Objektas f = obj.get(i);
    	f.update();
    	if (f.distFromCenter >= width/2-50 || f.age > maxAge) {
    		obj.remove(i);
    	}
    	f.display();
    }
    if (frameRate < 30) {
    	setup();
    }
    }
    }
    
    
    
    
    
    class Objektas {
    float angleChangeAmt = radians(8);
    float speed =          1;
    float chanceSplit =    2;
    float splitAngle =     radians(16);
    float x, y, prevX, prevY;
    float angle;
    float distFromCenter;
    int age = 0;
    Objektas(float _x, float _y) {
    x =     _x;
    y =     _y;
    prevX = x;
    prevY = y;
    angle = random(0, TWO_PI);
    }
    Objektas(float _x, float _y, float _angle) {
    x = _x;
    y = _y;
    angle = _angle;
    }
    void update() {
    age += 1;
    distFromCenter = sqrt(pow(width/2-x, 2) + pow(height/2-y, 2));
    angle += random(-angleChangeAmt, angleChangeAmt);
    prevX = x;
    prevY = y;
    x += cos(angle) * speed;
    y += sin(angle) * speed;    
    if (random(100) < chanceSplit) {
    	Objektas f = new Objektas(x, y, angle+splitAngle);
    	obj.add(f);
    	angle -= splitAngle;
    }
    }
    void display() {    
    stroke(255, 245, 235, 60);
    line(prevX, prevY, x, y);
    }
    }
    									
     
  • 7 Užduotis

    Padarykite taip, kaip parodyta programoje. Turime panaudoti rekursija atvaizduojant paveikslėlį. Atvaizdavimui nesinaudoti žinomo dydžio ciklu.

  • video aprašai
  • Atsakymas
    									int lygisMin = 3;
        int lygisMax = 10;
        float ilgis = 70;
        
        float kampasMin = PI/24;
        float kampasMax = PI/6;
    
        void recursiveTree (int lygis, float ilgis, float kampas){
            if (lygis>0){  
                pushMatrix();           
                rotate (kampas);         
                line (0,0,0,-ilgis);   
                pushMatrix();           
                translate(0,-ilgis);   
                scale (0.85f);          
                recursiveTree (lygis-1, ilgis, kampas);  
                popMatrix();  
                popMatrix(); 
                pushMatrix();
                rotate (-kampas);
                line (0,0,0,-ilgis);
                pushMatrix();
                translate(0,-ilgis);
                scale (0.85f);
                recursiveTree (lygis-1, ilgis, kampas);
                popMatrix();
                popMatrix();
            }
        }
    
        public void setup() {
            size(500, 500);
            stroke(27, 25, 9);
            strokeWeight(3);
        }
    
        public void draw() {
            background(color(245,247,232));
            
            float kampasP = map (mouseX, 0, width, kampasMin, kampasMax); 
            int lygis = (int)map (mouseY, height,0, lygisMin, lygisMax); 
            
            pushMatrix(); 
            translate (width/2, height); 
            recursiveTree (lygis, ilgis, kampasP); 
            popMatrix(); 
        }
      
Redaktorius