-
-
Save rahcola/4052124 to your computer and use it in GitHub Desktop.
Selainohjelmointi, viikko 2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function init() { | |
naytaLuku("0"); | |
/*eka näytä nolla */ | |
var nappula = document.getElementById("nappi"); | |
var laskin = new Laskin(); | |
/* on nyt tosi rumasti tehty, mutta en keksinyt parempaakaan | |
* eli siis en päässyt tuolta hanskaaHomma-funktiosta | |
* käsiksi laskimeen, yritin vaikka mitä esim. antaa sen olion | |
* tolle hanskaaHommalle parametrina, mutta ei jostain | |
* syystä toiminut. Terkuin 4 tuntia myöhemmin päätin muuttaa | |
* ton oliomäärittelyn globaaliksi */ | |
nappula.addEventListener('click', | |
function() { | |
laskin.kasvata(); | |
naytaLuku(laskin.annaLuku()); | |
}, | |
false); | |
} | |
function naytaLuku(numero) { | |
var span = document.getElementById("laskuri"); | |
span.innerHTML = ""; | |
console.log("naytaLuku luku ="+numero); | |
span.innerHTML = numero; | |
} | |
function Laskin() { | |
this.luku = 0; | |
console.log("luodessa laskin luku ="+this.luku); | |
} | |
Laskin.prototype.kasvata = function() { | |
console.log("kasvata-funktiossa luku ennen kasvatusta="+this.luku); | |
this.luku++; | |
console.log("kasvata-funktiossa luku ="+this.luku); | |
naytaLuku(this.annaLuku); | |
} | |
Laskin.prototype.annaLuku = function() { | |
console.log("annaLuku-funktiossa luku ="+this.luku); | |
return this.luku; | |
} | |
/* Toteuta apuvälineeksi olion luova funktio Laskin | |
jolla on muuttuja luku. Lisää funktiolle Laskin | |
funktiot kasvata, joka kasvattaa olion luvun arvoa yhdellä, ja | |
annaLuku, joka palauttaa olion luvun arvon. */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8" /> | |
<title>Laskuri</title> | |
</head> | |
<body onload="init();"> | |
<header> | |
<h1>Laskuri</h1> | |
</header> | |
<section> | |
<h2>Nappia painettu <span id="laskuri"></span> kertaa.</h2> | |
<input type="button" id="nappi" value="Paina!" /> | |
</section> | |
<script src="laskin_code.js"></script> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*Jokaisella tavaralla on nimi ja paino. | |
Matkalaukkuun lisätään tavaroita, | |
ja matkalaukulla on maksimipaino. | |
Ruumaan taas lisätään matkalaukkuja, | |
ja myös ruumalla on maksimipaino. | |
Matkalaukkuun voi lisätä vain tavaroita, | |
ja ruumaan vain matkalaukkuja. | |
Jos matkalaukun ja uuden tavaran yhteispaino | |
on suurempi kuin matkalaukun maksimipaino, | |
ei tavaraa voida lisätä. Vastaavasti ruumalle. | |
Toteuta olioita luovat funktiot Tavara, | |
Matkalaukku, ja Ruuma lähdekooditiedostoon code.js. */ | |
function Tavara(nimi, paino) { | |
this.nimi = nimi; | |
this.paino = paino; | |
} | |
function Matkalaukku(maksimipaino) { | |
this.maxpaino = maksimipaino; | |
/* tarkista että vain tavaroita, tarkista maksimipaino */ | |
this.tavarat = new Array(); | |
} | |
Matkalaukku.prototype.laskePaino = function(){ | |
this.yhteispaino = 0; | |
for (var i=0; i<this.tavarat.length; i++) { | |
this.yhteispaino += this.tavarat[i].paino; | |
} | |
} | |
Matkalaukku.prototype.paino = function(){ | |
this.laskePaino(); | |
return this.yhteispaino; | |
} | |
Matkalaukku.prototype.lisaa = function(romu) { | |
/* ny pitää tarkistaa et on tavara */ | |
if (romu instanceof Tavara) { | |
if (romu.paino + this.paino() <= this.maxpaino) { | |
for (var i=0; i<this.tavarat.length; i++) { | |
if (this.tavarat[i] === romu) { | |
console.log("Tavara lisätty jo, ei onnistu!"); | |
return; | |
} | |
} | |
this.tavarat.push(romu); | |
} else { | |
console.log("Ei ollut tilaa"); | |
} | |
} | |
} | |
function Ruuma(maksimipaino) { | |
this.maxpaino = maksimipaino; | |
/* tarkista että vain matkalaukkuja, tarkista maksimipaino */ | |
this.laukut = new Array(); | |
} | |
Ruuma.prototype.laskePaino = function(){ | |
this.yhteispaino = 0; | |
/* if (this.laukut.length == 0) { | |
return 0; | |
} */ | |
if (this.laukut[0] == null) { | |
return; | |
} | |
for (var i=0; i<this.laukut.length; i++) { | |
var uusi_paino = this.laukut[i].paino(); | |
this.yhteispaino += uusi_paino; | |
/* this.yhteispaino += this.laukut[i].paino(); | |
console.log("laukun paino on "+this.laukut[i].paino()); | |
this laukut i is undefined */ | |
console.log("ja paino on"+this.yhteispaino) | |
} | |
} | |
Ruuma.prototype.paino = function(){ | |
this.laskePaino(); | |
return this.yhteispaino; | |
} | |
Ruuma.prototype.lisaa = function(kassi) { | |
/* ny pitää tarkistaa et on laukku */ | |
if (kassi instanceof Matkalaukku) { | |
/* kassi.laskePaino(); */ | |
console.log(kassi.paino()+" on kassin paino ja this.paino on "+this.paino()+" ja laukun maxpaino on "+this.maxpaino); | |
if (kassi.paino() + this.paino() <= this.maxpaino) { | |
for (var i=0; i<this.laukut.length; i++) { | |
if (this.laukut[i] === kassi) { | |
console.log("Laukku lisätty jo, ei onnistu!"); | |
return; | |
} | |
} | |
this.laukut.push(kassi); | |
} else { | |
console.log("Ei ollut tilaa"); | |
} | |
} | |
} | |
// testikoodi: | |
var kivi = new Tavara("kivi", 3); | |
var kirja = new Tavara("kirja", 7); | |
var pumpuli = new Tavara("pumpuli", 1); | |
var laukku = new Matkalaukku(10); | |
var vuitton = new Matkalaukku(3); | |
var schenker = new Ruuma(15); | |
laukku.lisaa(kivi); | |
alert("laukun paino, pitäisi olla 3: " + laukku.paino()); | |
laukku.lisaa(kivi); // virhe: "Tavara lisätty jo, ei onnistu!" | |
laukku.lisaa(kirja); | |
alert("laukun paino, pitäisi olla 10: " + laukku.paino()); | |
laukku.lisaa(pumpuli); // virhe: "Liian painava, ei pysty!" | |
alert("laukun paino, pitäisi olla 10: " + laukku.paino()); | |
schenker.lisaa(laukku); | |
schenker.lisaa(pumpuli); // virhe: Vääränlainen esine, ei onnistu! | |
alert("Ruuman paino, pitäisi olla 10: " + schenker.paino()); | |
vuitton.lisaa(pumpuli); | |
alert("Vuitton + pumpuli ="+vuitton.paino()); | |
schenker.lisaa(vuitton); | |
alert("Ruuman paino, pitäisi olla noin 10.001: " + schenker.paino()); | |
pumpuli.paino = 300; | |
alert("Pumpulin uusi paino on!" +pumpuli.paino); | |
alert("Ruuman paino, pitäisi olla 310: " + schenker.paino()); // hups! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8" /> | |
<title>Tavara, Matkalaukku ja Ruuma</title> | |
</head> | |
<body> | |
<script src="ruuma_code.js"></script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment