HTML, CSS och Javascript: Skillnad mellan sidversioner
Hoppa till navigering
Hoppa till sök
Hakan (diskussion | bidrag) |
Hakan (diskussion | bidrag) |
||
(12 mellanliggande sidversioner av samma användare visas inte) | |||
Rad 185: | Rad 185: | ||
Skapa en egen funktion som räknar ut något på samma sätt. | Skapa en egen funktion som räknar ut något på samma sätt. | ||
=== Lägg in funktioner i Husbilden === | |||
Du kan använda funktioner för att förenkla koden i din husbild. Du kan arbeta på detta sätt när du skapar nya bilder, exempelvis en figur (gubbe) till ett kommande spel. | |||
{{uppgruta | '''Funktioner förenklar - skapa en gubbe''' | {{uppgruta | '''Funktioner förenklar - skapa en gubbe''' | ||
Rad 222: | Rad 225: | ||
this.myRectangle(50, 20, 50, 70, "Green"); | this.myRectangle(50, 20, 50, 70, "Green"); | ||
this.myRectangle(90, 200, 50, 70, "Red"); | this.myRectangle(90, 200, 50, 70, "Red"); | ||
</script> | |||
</body> | |||
</html> | |||
</pre> | |||
}} | |||
=== Använd variabler till funktionerna === | |||
I exemplet nedan har vi lagt till variabler för att styra var de röda rektanglarna hamnar. | |||
{{Lista | Variabler och funktioner | |||
<pre> | |||
<!DOCTYPE html> | |||
<html> | |||
<body> | |||
<canvas id="myCanvas" width="400" height="500" | |||
style="border:1px solid #d3d3d3;"> | |||
Your browser does not support the canvas element. | |||
</canvas> | |||
<script> | |||
var canvas = document.getElementById("myCanvas"); | |||
var ctx = canvas.getContext("2d"); | |||
var startX = 40; | |||
var startY = 40; | |||
var distX = 80; | |||
var distY = 110; | |||
var bredd = 50; | |||
function myRectangle(x, y, w, l, color) { | |||
ctx.fillStyle = color; | |||
ctx.fillRect(x, y, w, l); | |||
} | |||
this.myRectangle(startX, startY, bredd, 70, "Red"); | |||
this.myRectangle(startX + distX, startY, bredd, 70, "Red"); | |||
this.myRectangle(startX + 2*distX, startY, bredd, 70, "Red"); | |||
this.myRectangle(startX, startY + distY, bredd, 70, "Red"); | |||
this.myRectangle(startX + distX, startY + distY, bredd, 70, "Red"); | |||
this.myRectangle(startX + 2*distX, startY + distY, bredd, 70, "Red"); | |||
</script> | </script> | ||
Rad 981: | Rad 1 027: | ||
{{clear}} | {{clear}} | ||
== | == Andra plattformar för spelutveckling (med Javascript) == | ||
* [http://phaser.io Phaser] | |||
* [http://processingjs.org/ Processing] | |||
// | |||
= Ritprogrammet = | = Ritprogrammet = | ||
Rad 1 119: | Rad 1 041: | ||
== Kod för ritprogrammet == | == Kod för ritprogrammet == | ||
Programmet nedan är ett halvfärdigt ritprogram. Din uppgift är att förbättra det. Du använder kanske anteckningar eller så har du en redigerare som exempelvis Atom. Börja med att skapa två filer; en index.html och en main.js. Koden hittar du nedan. | |||
Testkör programmet och se vad det kan. Du klickar för att rita. Undersök koden för att hitta vilka delar av programmet som gör vad. Du behöver inte förstå hur all kod fungerar. | |||
Programmet kan byta färg när man trycker en tangent och det går att ändra radien. Dessutom finns en mouse over-funktion. | |||
{{uppgruta | '''Ritprogrammet''' | {{uppgruta | '''Ritprogrammet''' | ||
Rad 1 156: | Rad 1 084: | ||
{{Lista | main.js | {{Lista | main.js | ||
<pre> | <pre> | ||
// Thanks to Jagadesha NH: | // Thanks to Jagadesha NH: | ||
// https://medium.com/@jagadeshanh/html5-canvas-click-and-draw-f665e02f5744 | // https://medium.com/@jagadeshanh/html5-canvas-click-and-draw-f665e02f5744 | ||
Rad 1 164: | Rad 1 092: | ||
var width = canvas.width = window.innerWidth; | var width = canvas.width = window.innerWidth; | ||
var mouseClicked = false, mouseReleased = true; | var mouseClicked = false, mouseReleased = true; | ||
var x0 = 50; | |||
y0 = 30; | |||
bredd =40; | |||
hojd = 40; | |||
distance = 40; | |||
color = "green"; | |||
radie = 10; | |||
size = 22; | |||
document.addEventListener("click", onMouseClick, false); | document.addEventListener("click", onMouseClick, false); | ||
document.addEventListener("mousemove", onMouseMove, false); | document.addEventListener("mousemove", onMouseMove, false); | ||
Rad 1 172: | Rad 1 109: | ||
if (mouseClicked) { | if (mouseClicked) { | ||
context.beginPath(); | context.beginPath(); | ||
context.arc(e.clientX, e.clientY, | context.arc(e.clientX, e.clientY, radie, 0, Math.PI * 2, false); | ||
context.lineWidth = 5; | context.lineWidth = 5; | ||
context.strokeStyle = color; | context.strokeStyle = color; | ||
context.stroke(); | context.stroke(); | ||
} | } | ||
//en mouse over-funktion | |||
if ((e.clientX > x0) && (e.clientX < x0 + bredd) && (e.clientY > y0) | |||
&& (e.clientY < y0 + hojd)) { color = "green"; } | |||
} | } | ||
// Här börjar koden inspirerad av spelprogrammering.nu | // Här börjar koden inspirerad av spelprogrammering.nu | ||
function myRectangle(x, y, w, l, color) | |||
function myRectangle(x, y, w, l, color) | |||
{ | { | ||
context.fillStyle = color | context.fillStyle = color | ||
context.fillRect(x, y, w, l); | context.fillRect(x, y, w, l); | ||
} | } | ||
Rad 1 210: | Rad 1 135: | ||
} | } | ||
// rita de | // rita de f?rgade rutorna | ||
this.myRectangle(x0, y0, bredd, hojd, "green"); | this.myRectangle(x0, y0, bredd, hojd, "green"); | ||
this.myRectangle(x0, y0 + distance, bredd, hojd, "blue"); | this.myRectangle(x0, y0 + distance, bredd, hojd, "blue"); | ||
this.myText(x0-30, y0 + distance+25, 18, "b", "blue"); | this.myText(x0-30, y0 + distance+25, 18, "b", "blue"); | ||
Rad 1 217: | Rad 1 142: | ||
this.myRectangle(x0, y0 + 3 * distance, bredd, hojd, "pink"); | this.myRectangle(x0, y0 + 3 * distance, bredd, hojd, "pink"); | ||
// v?lj f?rg att rita med | |||
window.addEventListener('keydown',this.check,false); | window.addEventListener('keydown',this.check,false); | ||
Rad 1 225: | Rad 1 150: | ||
function check(e) { | function check(e) { | ||
var code = e.keyCode | var code = e.keyCode | ||
// Ändra färg | |||
if (code == | if (code == 71) | ||
color = "green"; | |||
if (code == 66) | |||
color = "green"; | |||
if (code == | |||
color = "blue"; | color = "blue"; | ||
if (code == | if (code == 89) | ||
color = " | color = "yellow"; | ||
if (code == 80) | |||
color = "pink"; | |||
// Ändra radie | |||
if (code == 49) | |||
radie = 5; | |||
if (code == 50) | |||
radie = 10; | |||
} | } | ||
</pre> | </pre> | ||
}} | }} | ||
=== Exempel === | |||
: Ett [https://19huhe.ssis.nu/ritprogram/ ritprogram] av Hugo Helm | |||
: Ett [https://19thli.ssis.nu/wp-content/uploads/2019/09/index.html ritprogram] av Theresia Lindahl. | |||
<headertabs /> | <headertabs /> |