[SI] Ada Lovelace Day 2014 - Tampon Run

Post on 19-Jun-2015

105 views 6 download

Tags:

description

Delavnica za Ada Lovelace Day 2014. https://www.facebook.com/princessdesignnet

Transcript of [SI] Ada Lovelace Day 2014 - Tampon Run

LFU - 12. oktober 2014 - Ljubljana - KCQ

AdaLovelaceL. F. Menabrea: Sketch of The Analytical Engine Invented by Charles Babbage Note G

Have the courage to try. You can make amazing things happen.Megan Smith, U.S. CTO, former VP of Google[x]

Photo: Taylor Hill/FilmMagic for Google

KodaOriginal: https://github.com/andrea-3000/TAMPON-RUN Kopija za delavnico: https://github.com/princessdesign/TAMPON-RUN

Sestavni deli● HTML ● CSS● JavaScript

○ Processing.js http://processingjs.org/○ Buzz Javascript HTML5 Audio knjiznica http://buzz.jaysalvat.com/

● Slike, glasba

Avatarji / Slike

Navigacija s tipkami● DESNO: 39 // naprej● LEVO: 37 // nazaj● M: 77 // tiho● SHIFT: 16 // start● PRESLEDNICA: 32 // tampon● GOR: 38 // skok● P: 80 // pavza● S: 83 // ponovni start

Glasba● beethovenSound● jumpSound● tamponSound● gameOverSound● ouchSound● shootSound

Naredimo svojo igro ...

Igraj igro 5 minut in ustvari seznam stvari, ki bi jih rada v igri spremenila.

● ____________● ____________● ____________● ____________● ____________

TODO

● ____________● ____________● ____________● ____________● ____________

DANES● ____________● ____________● ____________● ____________● ____________

● Preskoci intro ● Tipke za navigacijo● Zacetno stevilo tamponov● Stevilo tamponov v skatli● Barvo tamponov● Avatarje● Animacije● Barvo ozadja● Barvo tal● Barvo oblakov

Kaj lahko enostavno spremenimo?

● Sliko svetilke● Visino skoka● Velikost okna z igro● Zacetne slike z uvodom (prevod)● Zvoke● ...

Datoteke

index.html

<html> <head> <title>Tampon Run!</title>

<style type="text/css"> /* CSS CODE for STYLE */ </style>

<script src="lib/processing-1.4.1.min.js"></script> <script src="lib/buzz.min.js" type="text/javascript"></script>

<script type="text/processing" data-processing-target="creators">// JAVASCRIPT KODA (creators canvas)

</script>

<script type="text/processing" data-processing-target="mycanvas">/* JAVASCRIPT KODA Z IGRO (mycanvas canvas) */

</script> </head>

<body> <canvas id="creators"></canvas> <canvas id="mycanvas"></canvas> </body></html>

for loopfor(var count=0; count<10; count++){

console.log(count);}

JavaScript - Osnove

for loopfor(var count=0; count<10; count++){

console.log(count);}

brackets.io

for loopfor(var count=0; count<10; count++){

console.log(count);}

Komentarji// Hi, my name is comment

/*I am comment too. I can take more space.*/

for loopfor(var count=0; count<10; count++){

console.log(count);}

test.html

<html><head>

<script>console.log("JavaScript");

</script></head><body></body>

</html>

Google Chrome Console

for loopfor(var count=0; count<10; count++){

console.log(count);}

Stevilke141+15-232*3829/35%4

for loopfor(var count=0; count<10; count++){

console.log(count);}

Besedilo "Ada" "Lovelace""Ada".length "Lovelace".length

for loopfor(var count=0; count<10; count++){

console.log(count);}

Boolova vrednosttruefalse1<2

for loopfor(var count=0; count<10; count++){

console.log(count);}

Spremenljivkavar score = 0; // stevilkascore;console.log(score);

var muted = false; // boolova vrednost

var feedback = "LFU!!!"; // niz

for loopfor(var count=0; count<10; count++){

console.log(count);}

Tabela vrednosti (Array)var lampList = [];

var tampons = ["red", "green", "blue"];

var first = tampons[0];

document.write(first);

console.log(tampons[0]);

for loopfor(var count=0; count<10; count++){

console.log(count);}

Funkcijeconfirm("I feel awesome!");

prompt("What is your name?");

console.log("What is your name?");

for loopfor(var count=0; count<10; count++){

console.log(count);}

Funkcijevar sayHello = function(name) {

document.write("Hej" + " " + name);

};

sayHello("Maja");

for loopfor(var count=0; count<10; count++){

console.log(count);}

if stavekvar x = 1;if ( x === 1) {

document.write("x je enak 1");}

for loopfor(var count=0; count<10; count++){

console.log(count);}

if stavekvar x = 4;if ( x !== 1) {console.log("x ni enak 1");// document.write("x ni enak 1");}

for loopfor(var count=0; count<10; count++){

console.log(count);}

if else stavekvar key = "left";

if (key == "up"){console.log("Key is up.");

} else {console.log("Some key.");

}

for loopfor(var count=0; count<10; count++){

console.log(count);}

if & else if & else stavekvar key = "left";

if (key == "right" ) {console.log("Key is right.");

} else if (key == "up" ){console.log("Key is up.");

} else {console.log("Some key.");

}

for zankafor(var count=0; count<100; count++){

document.write(count);document.write("<br />")

}

for zankatowns = ["LJ", "MB", "KR", "NM", "KP", "GO", "KR"];

for(var i=0; i<towns.length; i++){document.write(towns[i]);document.write("<br />")

}

Objektno programiranjeAnimationGameStateLamppostLampFactoryCloudCloudFactoryGunAmmo

BuildingFactoryEnemyFactoryDuaneReadeBuildingPlayerEnemyTampon

class Tampon { var xTamp; var yTamp; var tampSpeed; var randFR; Animation tampPic; var h; var w;

Tampon() { xTamp = 750; yTamp = 250; tampSpeed = -2; randFR = Math.floor((Math.random() * 20) + 8); tampPic = new Animation("tampz", 2, randFR); h = tampPic.getHeight(); w = tampPic.getWidth(); }

void showTamp() { tampPic.display(xTamp, yTamp); }

void moveTamp() { xTamp = xTamp + tampSpeed; }

void releaseTamp() { yTamp = yTamp + tampSpeed; } }

class DuaneReade { var tamponList;

DuaneReade() { tamponList = []; }

void animate() { var willItBlend = Math.floor((Math.random() * 500) + 1); if (willItBlend == 50) { tamponList.push(new Tampon()); }

showTamponList(); moveTamponList(); removeTampon(); reloadTampon(); }

// MORE CODE...

}

for loopfor(var count=0; count<10; count++){

console.log(count);}

Metodeplay(soundToPlay)pauseSound(SoundToPlay)setup()draw()keyPressed()keyReleased()

for loopfor(var count=0; count<10; count++){

console.log(count);}

Metodevoid pauseSound(soundToPlay) {

soundToPlay.pause()

}

Spremenimo kodo!

● Preskoci intro ● Tipke za navigacijo● Zacetno stevilo tamponov● Stevilo tamponov v skatli● Barvo tamponov● Avatarje● Animacije● Barvo ozadja● Barvo tal● Barvo oblakov

Kaj lahko enostavno spremenimo?

● Sliko svetilke● Visino skoka● Velikost okna z igro● Zacetne slike z uvodom (prevod)● Zvoke● ...

Preskoci introHINT: Ce si na zacetku (0: home) pritisni SHIFT (tipka 16) in pojdi na igro (3: game play)

if (keyCode == 16 && state.page==0){

state.page = 1; // change to 3

NALOGA: Zakaj zvok ne igra?

Spremeni tipke z ukaziif (keyCode == 77)if (keyCode == 39)if (keyCode == 16)if (keyCode == 83)if (keyCode == 38)

NALOGA: Spremeni kodo tako, da bos igrico lahko igrala z eno roko.

SPACE: 32 // throw tamponRIGHT: 39 // forwardLEFT: 37 // backM: 77 // muteSHIFT: 16 // beginUP: 38 // jumpP: 80 // pauseS: 83 // restart

Spremeni zacetno st. tamponovNAMIG: Poisci kje je stevilo definirano in ga spremeni

//player variables

var tampon = 10; //50

NALOGA: Kaj se zgodi, ce igro ponovno zazenes (S)? Popravi!

NAMIG: End game (4) tipka S (83).

Spremeni stevilo tamponov v skatliNAMIG: Poisci kje je stevilo definirano in ga spremeni

tampon = tampon + 5 // 50

Spremni slike v uvodustatementOne = loadImage("res/statementOne0000.png");

statementTwo = loadImage("res/statementTwo0000.png");

statementThree = loadImage("res/statementThree0000.png");

statementFour = loadImage("res/statementFour0000.png");

statementFive = loadImage("res/statementFive0000.png");

instructOne = loadImage("res/learn0000.png");

pausePage = loadImage("res/pause0000.png");

Barva tamponovNALOGA: Odpri slike v

urejevalniku slik in jih

spremeni.

● ammo…png 4x

● attack…png 2x

Ustvari nov avatar (enemy)enemies = new EnemyFactory("eWalk", 1);

/* spremeni v swat in zazeni igro */

NALOGA: Zdaj ustvari svojega

eWalk swat

AnimacijeAnimation title;

title = new Animation("title", 2, 20);

Animation girlIntro;

girlIntro = new Animation("walk",2,5);

Barva ozadjavoid startGame() {background(100);

/* background(255,255,0); //yellow (red, green and blue 0-255)color yellow = color(255,252, 25);color red = color(178,18,18);color orange = color(255,83, 13);color blue = color(9, 113, 178);color pink = color(255, 182, 193);*/

Barva talvoid showBuilding() {fill(0); // color name or number(s)

/* background(255,255,0); //yellow (red, green and blue 0-255)color yellow = color(255,252, 25);color red = color(178,18,18);color orange = color(255,83, 13);color blue = color(9, 113, 178);color pink = color(255, 182, 193);*/

Barva oblakovvoid showCloud() {

fill(255);

fill(0); // black or // (0,0,0) (red, green and blue 0-255)

Barva oblakov - sivaGray clouds (uncomment c and add c to fill())

c = Math.floor((Math.random() * 255) + 1);

}

void showCloud() {

fill(c);

Barva oblakov - nakljucnaColor clouds r = Math.floor((Math.random() * 255) + 1);

g = Math.floor((Math.random() * 255) + 1);

b = Math.floor((Math.random() * 255) + 1);

}

void showCloud() {

fill(r,g,b);

Slika svetilkeNALOGA: Odpri sliko lamppost0000.png

v urejevalniku slik in jo spremeni.

Visina skokajumpHeight = 200;

/*

jumpHeight = 100; // visje

jumpHeight = 300; // nizje

*/

Velikost okna z igrovar CANVAS_HEIGHT = 500; // 700

var CANVAS_WIDTH = 700; // 1200

Spremeni zvokevar jumpSound = new buzz.sound("res/sound/jumpSound", {formats: ["ogg", "mp3"]});

var tamponSound = new buzz.sound("res/sound/tamponSound", {formats: ["ogg", "mp3"]});

var gameOverSound = new buzz.sound("res/sound/gameOverSound", {formats: ["ogg", "mp3"]});

var beethovenSound = new buzz.sound("res/sound/beethovenSound", {formats: ["ogg", "mp3"]});

var ouchSound = new buzz.sound("res/sound/ouchSound", {formats: ["ogg", "mp3"]});

var shootSound = new buzz.sound("res/sound/shootSound", {formats: ["ogg", "mp3"]});

JAVASCRIPT http://learnxinyminutes.com/docs/javascript/http://www.codecademy.com/glossary/javascript https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide

TUTORIALIhttp://www.codecademy.com/tracks/javascripthttps://www.khanacademy.org/computing/cs

PROCESSINGJS http://processingjs.org/reference/

You can leave behind the old regressive sexist representations andinstead create interactive experiences that portray women as capable, complex and inspirational.Anita Sarkeesian, Feminist Frequency