Roc Zadkine. Javascript Car. Door: K.Bakker versie 1.0

Vergelijkbare documenten
Roc Zadkine. Javascript SpaceGame. Door: K.Bakker versie 2.0

HTML Graphics. Hans Roeyen V 3.0

Roc Zadkine. Javascript animatie en bewegingen. Door: K.Bakker versie 2.0

Versie 0.4. Documentatie Onsweb Club plugin voor KNKV verenigingen. Laatste wijziging: 19 juli 2012 Auteurs: Marien Dongstra, Sebastian Huisman

Les 4 Snake. Een hele kleine Sprite. 1) Zie Afbeelding 1. Klik met je rechtermuisknop op sprite1. Kies vervolgens verwijderen.

Vakgroep CW KAHO Sint-Lieven

Kris Merckx - 16/10/ Agnes.js - creative commons license

Les 9: formulier controle met javascript.

Gegevens uit een database tonen

0. voorkennis. Periodieke verbanden. Bijzonder rechthoekige driehoeken en goniometrische verhoudingen

Handleiding Woonz.nl iframe

WEBSITE-DESIGN CHRIS VERMAAS & FJODOR VAN SLOOTEN B

1. Open het programma KompoZer Het grote witte vlak is een nog lege webpagina. Deze gaan we nu van inhoud voorzien.

X. Grafische elementen

8 Word Art Teksten. De documentatie van deze API is te lezen in Bijlage P: WordArt Documentatie.

Hand-out Introduction to Programming, werkcollege 7 Alex Reuneker 2013

Functies. Huub de Beer. Eindhoven, 4 juni 2011

Handleiding Aansluiting beeldbank

Eigen Widgets in CRM. Introductie. Limitering. Widgets beschikbaar stellen. Tips & Tricks Eigen Widgets in CRM

AutoTrack.nl. Handleiding Implementatie Voorraadlijst

Voordelen: Nadelen: Benodigdheden: Programma s: Google Web Designer. Photoshop. Sublime (HTML-editor) Websites: Tinypng.com

Werken met afbeeldingen in webpagina's

ONTWERPEN VAN INTERACTIEVE PRODUCTEN

Websitecursus deel 3 JavaScript

FFO Webdesign 1e jaar theorietoets NL niveau4... Totaal aantal vragen: 40

A Inloggen. B - Wachtwoord Veranderen

Zoek bij Beweging de juiste functie en klik ze aan de vorige functie.

Start GameMaker en open een nieuw spel (menu: Zorg ervoor dat GameMaker in Advanced Mode

Informatica: C# WPO 5

Gebruikershandleiding voor: Beperkte Password protectie met JavaScript

Jarno Verhoogt 21 mei 2014 Stud. Nr Docent: Joost Faber. Deeltoets 2: Hoe maak je met javascript een eenvoudige slideshow?

Een verticale vormgeving is makkelijker en sneller te realiseren dan een horizontale.

Instructies Zitecraft Content Management System (CMS)

Websitecursus deel 2 CSS

HANDLEIDING INFOGRAPHIC SOFTWARE Versie 2.3 / jan 2014

Een ASP.NET applicatie opzetten. Beginsituatie:

Javascript oefenblad 1

Het installatiepakket haal je af van de website

10.0 Voorkennis. cos( ) = -cos( ) = -½ 3. [cos is x-coördinaat] sin( ) = -sin( ) = -½ 3. [sin is y-coördinaat] Willem-Jan van der Zanden

Voor vragen: of mail naar

GoogleMapsGoogleMapsGoogleMaps GoogleMapsGoogleMapsGoogleMaps GoogleMapsGoogleMapsGoogleMaps

API geolocation. Ying-Hing Lam Tjebbe Marchand DP31T

Solidworks windmolen

<NANO> Creeren met. <code> Bouw je eigen. website

Schuiven van een voertuig in een bocht met positieve verkanting

oefeningen opstellen met GeoGebra en javascript

Extra: Hoe u uw website met HTML kunt verbeteren

Web building gevorderden: CSS & JavaScript. Karel Nijs 2008/11

Animatie. Korte opdrachten. Tekst Hart Auto MARKETING & COMMUNICATIE - DIGITALE VORMGEVING ANIMATIE- KORTE OPDRACHTEN

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.

Introductie in R.

Inleiding goniometrie

Let s play baseball! Let s get ready! Voorkennis: Sprites, Lopen, Variabelen, Scores, xy. Leerdoelen: 3D illusie, Klonen

Exacte waarden bij sinus en cosinus

De Sense HAT programmeren Je eerste computerprogramma

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

HTML in Outlook Hoe zorgt u ervoor dat uw goed in beeld komt?

Aanmaken van een lokale site kalibratie Hoe kan vanuit Trimble Access en Trimble Business Center een lokale site coordinatensysteem aangemaakt

Hier komt alle informatie over je webpagina, welke niet zichtbaar is op de webpagina zelf.

16.0 Voorkennis. Voorbeeld 1: Los op in 2x + 3i = 5x + 6i -3x = 3i x = -i

Lab Webdesign: Javascript 11 februari 2008

HTML. Media. Hans Roeyen V 3.0

Introductie Coach 6 videometen. 1 Eerste oefening

Agenda. Wat is HTML? Meer over HTML... Waarom HTML leren? Aniel Bhulai. Inleiding Computergebruik - HTML 1. Waarin maak je een HTML-bestand?

Transformaties van grafieken HAVO wiskunde B deel 2. Willem van Ravenstein Haags Montessori Lyceum (c) 2016

BrowseAloud Plus: dé voorleestool op websites! 1

8.1 Rekenen met complexe getallen [1]

Interactief blok 2 code opdracht 6 - wireframe

VOORBEREIDINGSWEEK BASISOPDRACHTEN

Zonnepanelen Hoe krijg je de data op je website?

HTML & CSS DEEL 1. webdesign. Programmeren met CodeAcademy

Javascript - antwoorden

OEFENINGEN PYTHON REEKS 5

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2.

TIPS EN HINTS VOOR BEGINNERS. Klik nu in de Menu balk op het menu item ELEMENT. Onder het woord Element gaat er nu vervolgens nu een sub menu open

Game maker Tutorial Pong

2010-I. A heeft de coördinaten (4 a, 4a a 2 ). Vraag 1. Toon dit aan. Gelijkstellen: y= 4x x 2 A. y= ax

Historische filmrecensie Hotel Rwanda digitaal dossier klas 3V

Handleiding Poll Campagne 9 december 2009 Versie 1.1

Informatietechnologie 1. HTML: DOM, Links en Afbeeldingen. Links en afbeeldingen. Kristof Michiels

Foutcontrole met Javascript

De principes van unobtrusive JavaScript. Peter-Paul Koch (ppk) PFCongrez, 12 april 2008

Lessen wiskunde uitgewerkt.

Hoe maak je een tram in Adobe Illustrator AD en DRAW door Hector Heredia6

De frameset uit de afbeelding wordt op de volgende manier gedefinieerd:

DrICTVoip.dll v 2.1 Informatie en handleiding

Aan de slag met het Geoloket

Basis-theme. Manage Wiki > Look and Feel > Themes > Change or make a new theme > Make a New Theme >

A Inloggen. B - Wachtwoord Veranderen

Calculus I, 19/10/2015

Website maker. Bezoek je domein om de Website maker in te stellen. De volgende melding zal zichtbaar zijn.

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Software Instructions for Real Kids - Felix Plesoianu (2009) en Kris Merckx (2013) - Creative Commons License

Werkblad Cabri Jr. Punten en coördinaten

Versie 0.2. Documentatie Onsweb Club plugin voor NHV verenigingen. Laatste wijziging: 10 mei 2013 Auteurs: Marien Dongstra, Sebastian Huisman

Scratch in drie uur. Hallo, mijn naam is Minti Mint! Ik ga je uitleggen hoe je je eigen computerspel kunt maken. We gaan een racespel maken!

Inhalen les 7 (versie B)

Whitepaper. design best practices

Transcriptie:

Roc Zadkine Javascript Car Door: K.Bakker versie 1.0

mei 2016 distributielijst versie historie versie datum auteur Opmerkingen 1.0 2-2-2016 k.bakker

inhoudsopgave 1. Project benodigdheden 3 2. Benodigdheden 3 3. Project Demo 3 4. Shapes! 4 5. Laat de auto bewegen 7 6. RequestAnimationFrame 9 7. Hoe de beweging controleren met COSAS 9 8. Afronden van het project 14

1. Project benodigdheden Basis kennis Javascript Basiskennis HTML Begrip van cosinus, sinus en tangens 2.Benodigdheden Geschikte afbeelding van een auto 3.Project Demo Introduction to the Canvas De komst van HTML5 heeft enorme veranderingen veroorzaakt in het ontwikkelen van websites. Met de introductie van het CANVAS concept gecombineerd met enige slimme Javascript programmeertechnieken zijn legio mogelijkheden geopend om creatieve en slimme grafische effecten en animaties te maken. In dit project zullen we simpel spel maken waarbij een auto-afbeelding gebruikt wordt als voorwerp dat bestuurd gaat worden. Feitelijk wordt het CANVAS element gecreëerd door de CANVAS TAG. Daarnaast zijn een aantal JavaScript functies beschikbaar om het element te manipuleren. Bestudeer onderstaand HTML code met het<canvas> tag. 01.<!DOCTYPE html> 02.<html> 03. <head> 04. <title>hello world</title> 05. <meta charset="utf-8"> 06. <script type="text/javascript" src="main.js"></script> 07. <style type="text/css"> 08. #canvas{ 09. border: 2px solid #333; 10. } 11. </style> 12. </head> 13. <body> 14. <canvas id="canvas" width"800" height="800"> 15. <!-- fun things happen here --> 16. </canvas> 17. </body> 18.</html>

4.Shapes! Het CANVAS element wordt gebruikt om een een afbeelding te plaatsen. Dit doen we door de context van het betreffende CANVAS element te bepalen met het JavaScript. Er zijn 2 variabelen die het CANVAS element gaan manipuleren. Canvas = document.getelementbyid( canvas ) Context = canvas.getcontext( 2d ) 1.window.onload = function() 2.{ 3. var canvas = document.getelementbyid("canvas"); 4. var context = canvas.getcontext("2d"); 5. 6. context.fillstyle = "rgb(100, 200, 120)"; 7. context.fillrect(10, 10, 55, 50); 8.} Hier gebeuren dus een aantal zaken: 1. window.onload start de grafische functie. 2. Verwijs naar het CANVAS element in het HTML-document (DOM verwijzing) 3. Zet de grafische context naar 2D 4. fillstyle voor een bepaalde kleur. Hiermee geven we kleur aan het object. 5. fillrect() om een vierhoek te tekenen met coördinaten x1,y1,x2,y2. in de kleuren van fillstyle

Het proces om een afbeelding te importeren is anders aangezien we feitelijk geen afbeelding maken met JavaScript maar een grafisch object gebruiken. 1. We maken eerst een image object 2. Het kenmerk src verwijst naar de bestandsnaam van de afbeelding 3. Het image object wordt gekoppeld aan de CANVAS context met de begin coördinaten x en y. De x,y-coördinaten worden gebruikt om de auto-afbeelding te plaatsen op het scherm. Het scherm begint altijd linksboven.

Het JavaScript wordt dus uitgebreid met Var car = new Image() Car.src = auto.jpg // de naam die jij gegeven hebt aan het bestand Context.drawImage( car, x, y) 01.window.onload = function() 02.{ 03. var canvas = document.getelementbyid("canvas"); 04. var context = canvas.getcontext("2d"); 05. 06. var x = 0; 07. var y = 0; 08. 09. var car = new Image(); 10. car.src="myimage.jpg"; 11. context.drawimage(car, x, y); 12.} De auto wordt nu getoond op het scherm!

5.Laat de auto bewegen Dit lijkt veel op de techniek die in een tekenfilm gebruikt wordt. De afbeelding worden keer op keer opnieuw getoond met kleine veranderingen waardoor een beweging gesimuleerd wordt. 1. Toon de afbeelding op het scherm. Afbeelding import en koppelen aan CANVAS element 2. Open een tekengebied 3. Herhaal stap 1 en 2 oneindig. Het openen van een schoon tekengebied doe we als volgt; 1.context.clearRect(0, 0, 800, 800); Bovenstaande code zal alles schoonmaken op het gebied met de coordinaten 0,0,800,800 Voor stap 3 hebben we oneindige loop nodig die iedere keer kleine veranderingen kan aanmaken. Om de veranderingen te zien is een soort pauze nodig iedere keer nadat de functie doorlopen is. Dit doen we met de setinterval methode van JavaScript. In de onderstaande code wordt de auto iedere keer een stukje verder verplaats setinterval( function(), { draw() }, 30 ) start iedere 30 seconden de draw-functie (teken auto) De draw functie plaatst de auto iedere keer een stukje lager door de variabele y++. Context.drawImage(car, x, y )

01.window.onload = function() 02.{ 03. x = 0; 04. y = 0; 05. 06. canvas = document.getelementbyid("canvas"); 07. context = canvas.getcontext("2d"); 08. 09. var moveinterval = setinterval(function() 10. { 11. draw(); 12. }, 30); 13.}; 14. 15.function draw() 16.{ 17. context.clearrect(0, 0, 800, 800); 18. var car = new Image(); 19. car.src="myimage.png"; 20. context.drawimage(car, x, y); 21. 22. y++; 23.} Dit loopt oneindig door. We kunnen dit stoppen de door onderstaande code toe te voegen. clearinterval moveinterval 1.clearInterval(moveInterval);

6.RequestAnimationFrame Naast de functie setinterval, biedt HTML5 een JavaScript API met de naam requestanimationframe. Deze API heeft meerdere mogelijkheden om animaties met CANVAS te stoppen welke in tabs die niet direct zichtbaar zijn. Deze API is echter niet in alle browser te gebruiken. 7.Hoe de beweging controleren met COSAS De functie van SINUS en COSINUS worden veel gebruikt in animaties om de beweging zo natuurgetrouw mogelijk weer te geven. Dit is noodzakelijk indien we de auto over een schuine lijn laten bewegen met een bepaalde constante snelheid. We hebben dit nodig omdat de commando regel Context.drawImage(car, x, y) een afbeelding alleen maar kan plaatsen op absolute coördinaten. X en Y zijn horizontaal en verticaal. Voor verticaal bereken je : Y = cos (hoek) maal (schuine lijn). Voor horizontaal bereken je : X = sin (hoek) maal (schuine lijn). De hoek moet berekend worden naar radialen met Math PI/180 Bekijk de code nu

Bekijk de code nu 01.window.onload = function() 02.{ 03. x = 0; 04. y = 0; 05. speed = 5; 06. angle = 30; 07. 08. canvas = document.getelementbyid("canvas"); 09. context = canvas.getcontext("2d"); 10. 11. car = new Image(); 12. car.src="myimage.png"; 13. 14. var moveinterval = setinterval(function() 15. { 16. draw(); 17. }, 30); 18.}; 19. 20.function draw() 21.{ 22. context.clearrect(0, 0, 800, 800); 23. 24. context.drawimage(car, x, y); 25. 26. x += speed * Math.cos(Math.PI/180 * angle); 27. y += speed * Math.sin(Math.PI/180 * angle); 28.} Zoals je ziet worden twee waarden gebruikt voor de beweging; speed én angle. Hiermee wordt de horizontale en verticale beweging bepaald.

Hoe krijgen we snelheid (speed) en de hoek (angle). Dit wordt geregeld door de API rotate methode De oplossing werkt als volgt; 1. Bewaar de huidige staat van de context. En centreer op halve hoogte en breedte. 2. Roteer de context door bovenstaande code 3. Teken de afbeelding opnieuw maar doe dat houdt rekening met de hoogte en breedte van het object zodat het object roteert om zijn eigen zwaartepunt. 4. Herstel de bewaarde context. Het object is nu geroteerd. 01.window.onload = function() 02.{ 03. x = 0; 04. y = 0; 05. speed = 5; 06. angle =25; 07. 08. canvas = document.getelementbyid("canvas"); 09. context = canvas.getcontext("2d"); 10. car = new Image(); 11. car.src="myimage.png"; 12. 13. var moveinterval = setinterval(function() 14. { 15. draw(); 16. }, 30); 17.}; 18. 19.function draw() 20.{ 21. context = canvas.getcontext("2d"); 22. context.clearrect(0, 0, 800, 800); 23. 24. x += speed * Math.cos(Math.PI/180 * angle); 25. y += speed * Math.sin(Math.PI/180 * angle); 26. 27. context.save(); 28. context.translate(x, y); 29. context.rotate(math.pi/180 * angle); 30. context.drawimage(car, -(car.width/2), -(car.height/2)); 31. context.restore(); 32.}

We hebben nu een auto die kan bewegen en roteren. Het volgende dat we nodig hebben is de besturing vanuit het toetsenbord. Het toetsenbord geeft zogenaamde scancodes af. Deze scancodes zoeken we uit om in het spel te bepalen wat er moet gebeuren bij bijvoorbeeld pijltje naar rechts. De keycodes die het JavaScript bij een windows event leest voor het numeriek deel van het toetsenbord zijn; W: S: A: D: 87 83 65 68 Windows-event: én event.keycode. window.addeventlistener("keydown", keypress_handler, false); Door de waarde in event.keycode worden 2 variabelen bepaald ; mod en angle. Let op de wijziging in de berekening van de beweging:. x += (speed*mod) * Math.cos(Math.PI/180 * angle); 01.window.onload = function() 02.{ 03. x = 0; 04. y = 0; 05. speed = 5; 06. angle = 0; 07. mod = 0; 08. 09. canvas = document.getelementbyid("canvas"); 10. context = canvas.getcontext("2d"); 11. car = new Image(); 12. car.src="myimage.png"; 13. 14. window.addeventlistener("keydown", keypress_handler, false); 15. window.addeventlistener("keyup", keyup_handler, false); 16. 17. var moveinterval = setinterval(function()

18. { 19. draw(); 20. }, 30); 21.}; 22. 23.function draw() 24.{ 25. context = canvas.getcontext("2d"); 26. context.clearrect(0, 0, 800, 800); 27. 28. context.fillstyle = "rgb(200, 100, 220)"; 29. context.fillrect(50, 50, 100, 100); 30. 31. x += (speed*mod) * Math.cos(Math.PI/180 * angle); 32. y += (speed*mod) * Math.sin(Math.PI/180 * angle); 33. 34. context.save(); 35. context.translate(x, y); 36. context.rotate(math.pi/180 * angle); 37. context.drawimage(car, -(car.width/2), -(car.height/2)); 38. context.restore(); 39.} 40. 41.function keyup_handler(event) 42.{ 43. if(event.keycode == 87 event.keycode == 83) 44. { 45. mod = 0; 46. } 47.} 48. 49.function keypress_handler(event) 50.{ 51. console.log(event.keycode); 52. if(event.keycode == 87) 53. { 54. mod = 1; 55. } 56. if(event.keycode == 83) 57. { 58. mod = -1; 59. } 60. if(event.keycode == 65) 61. { 62. angle -= 5; 63. } 64. if(event.keycode == 68) 65. { 66. angle += 5; 67. } 68.}

8.Afronden van het project De basis van het spel heb je nu gemaakt. De achtergrond met aangepast worden zodat de auto ook echt over de weg en over obstakels kan rijden. Maak een grafische achtergrond zodat de dit echt zichtbaar wordt voor de speler. Daarnaast moet er ook een score komen voor het goed afleggen van een bekwaamheid die door de bedenker van dit spel bedacht is. tip maak een array van coördinaten die verboden zijn. Dus als de auto geplaatst wordt op coördinaten die niet mogelijk zijn volgens de achtergrond dan krijg je strafpunten. Hoe? gewoon afvragen voordat je verplaatst Bijvoorbeeld: Als x < -1 dan strafpunt Als x < 800 dan strafpunt. Als x > 30 && x < 40 dan sta je in het water en dus krijg je strafpunten.. Tip: Lees de coördinaten uit in het console.