Paspausti norint programuoti SCRATCH programos langą
Žaidimo tikslas yra sugauti kuo daugiau kvadratėlėlių (veikėjų), kurie atsiranda atsitiktinoje vietoje. Kai paliečiame kvadratėlį, gyvalėtė turi padidėti. Jei liečiame kraštą žaidimas turi sustoti.
Paspausti norint programuoti SCRATCH programos langą
Šios pamokos tikslas yra sukurti atminties žaidimą, kuriame kas vienu būgno mušimu pasirodo atsitiktinai 1 iš 4 veikėjų susijusių su būgno spalva (mūsų atveju mergaitė su skirtingos spalvos suknele). Veikėjus geriausia būtų pasirinkti (arba nusipiešti) savo. Pirmiausia veikėjas turi pasirodyti 3 kartus kas vieną sekundę ir turi suskambėti būgnas. Mes turime įsiminti pasirodžiusios mergaitės suknelės spalvos eiliškumą (arba mūsų sukurto veikėjo spalvos eiliškumą). Tada mes turime tokia pat eilės tvarka sumušti į būgnus (tokia pat būgnų spalvų eiliškumu). Jei mes teisingai sumušime būgnų eiliškumą, kaip ir mūsų pasirodžiusio veikėjo spalvų eiliškumą, tada sakome „Laimėjome“ ir gauname tašką. Jei ne, sakome „pralaimėjime“ ir sustabdome žaidimą. Jei mes laimėjome, tada turime dar kartą kartoti žaidimą, bet veikėjo (mergaitės) pasirodymų seka turi padidėti vienetu. Žaidimo esmė – žaidėjas turi prisiminti kiek įmanoma daugiau pasirodžiusių veikėjo spalvų (sekų) ir sumušti tam tikro būgno spalvą.
Paspausti norint programuoti SCRATCH programos langą
Žaidimo tikslas yra sugauti kuo daugiau kvadratėlėlių (veikėjų), kurie atsiranda atsitiktinoje vietoje. Kai paliečiame kvadratėlį, gyvalėtė turi padidėti. Jei liečiame kraštą žaidimas turi sustoti.
Paspausti norint programuoti SCRATCH programos langą
Šios pamokos tikslas yra sukurti atminties žaidimą, kuriame kas vienu būgno mušimu pasirodo atsitiktinai 1 iš 4 veikėjų susijusių su būgno spalva (mūsų atveju mergaitė su skirtingos spalvos suknele). Veikėjus geriausia būtų pasirinkti (arba nusipiešti) savo. Pirmiausia veikėjas turi pasirodyti 3 kartus kas vieną sekundę ir turi suskambėti būgnas. Mes turime įsiminti pasirodžiusios mergaitės suknelės spalvos eiliškumą (arba mūsų sukurto veikėjo spalvos eiliškumą). Tada mes turime tokia pat eilės tvarka sumušti į būgnus (tokia pat būgnų spalvų eiliškumu). Jei mes teisingai sumušime būgnų eiliškumą, kaip ir mūsų pasirodžiusio veikėjo spalvų eiliškumą, tada sakome „Laimėjome“ ir gauname tašką. Jei ne, sakome „pralaimėjime“ ir sustabdome žaidimą. Jei mes laimėjome, tada turime dar kartą kartoti žaidimą, bet veikėjo (mergaitės) pasirodymų seka turi padidėti vienetu. Žaidimo esmė – žaidėjas turi prisiminti kiek įmanoma daugiau pasirodžiusių veikėjo spalvų (sekų) ir sumušti tam tikro būgno spalvą.
Paspausti norint programuoti 3d programos langą
Reikia suprogramuoti namą, kaip pateikta paveikslėlyje.
PImage img; int x = 200; float xk = 200, yk; int point = 0; void setup() { size(400,500); img = loadImage("data/puodas.png"); textSize(20); } void draw() { background(200,255,200); fill(255,0,0); text(point, 20, 20); image(img, x,450, 100, 50); ellipse(xk, yk, 30,30); if(yk < height) { yk+=10; } else { yk=0; xk=random(10, width-20); } if(xk > x && xk < x+50 && yk > 450) { point++; yk=0; xk=random(10, width-20); } } void mousePressed() { x = mouseX; }
Paspausti norint programuoti 3d programos langą
Reikia suprogramuoti namą, kaip pateikta paveikslėlyje. Papildomai reikia pridėti duris ir langą
void setup() { size(400, 400); } void draw() { float posx = map(mouseX, 0, width, 0, 255); float posy = map(mouseY, 0, height, 0, 255); background( posx, posy, (posx+posy)/2); fill(255); noStroke(); ellipse(mouseX,mouseY, 60,60); }
Turime suprogramuoti, kaip parodyta. Turime sukurti 50 paukščių (data/bird.png), kurie atsiranda atsitiktinėje vietoje. Palietus paukštį turi pradingti.
Bird bird; Bird[] birds; int sk = 50; PImage img; void setup() { size(500, 500); birds = new Bird[sk]; img = loadImage("data/bird.png"); for(int i = 0; i < sk; i++) { bird = new Bird(); bird.x = random(10, width-30); bird.y = random(10, height-30); bird.show = true; bird.img = img; bird.psize = (int)random(20, 70); birds[i] = bird; } } void draw() { background(200,255,200); vykdyk(); } void vykdyk() { for(int i = 0; i < sk; i++) { bird = birds[i]; bird.changePosition(); bird.shows(); } } class Bird { float x, y; PImage img; boolean show; int psize; void changePosition() { if(mouseX > x && mouseX < x+psize && mouseY > y && mouseY < y+psize ) { show = false; } } void shows() { if(show) { image(img, x, y, psize, psize); } } }
Turime suprogramuoti, kaip parodyta. Turime sukurti animaciją pasinaudojus masyvu ir PGraphics. Su pelyte perbraukiame per ekraną ir turi pasilikti linija, ir bet kada galime papildyti.
int frames = 20; PGraphics pg[] = new PGraphics[frames]; void setup() { size(500, 500); for(int i=0; i < frames; i++) { pg[i] = createGraphics(width, height); pg[i].beginDraw(); pg[i].background(0); pg[i].stroke(255); pg[i].strokeWeight(3); pg[i].endDraw(); } } void draw() { int currFrame = frameCount % frames; if(mousePressed) { pg[currFrame].beginDraw(); pg[currFrame].line(mouseX, mouseY, pmouseX, pmouseY); pg[currFrame].endDraw(); } image(pg[currFrame], 0, 0); }
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
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 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); }
Pagal pateiktą pavyzdį, padarykite įdentišką vaizdą.
Reiks panaudoti: cos, sin, sukurti objektą, radians, dinaminį masyvą (pvz.: ArrayList)
Atsakymas skirtas pasitikrinti
int maxAge = 100; ArrayListobj; 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); } }
Padarykite taip, kaip parodyta programoje. Turime panaudoti rekursija atvaizduojant paveikslėlį. Atvaizdavimui nesinaudoti žinomo dydžio ciklu.
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(); }
statusas