3. Upplägget för föreläsningen
Prototyping, Sketching, Pseudokod & Tips
Tips:
Få inte panik om ni inte förstår allt.
Experimentera med exemplena (ligger uppe i iLearn).
Japanese Memory - HTML, CSS, JavaScript (jQuery)
Falling Math - <canvas>, JavaScript
4. Prototyp?
Testa sina idéer för att sedan kunna förbättra dem.
En testversion som är skapad för att utvärdera en
viss aspekt av den tänkta slutprodukten.
Konkritisera och förmedla vad man har tänkt sig.
Kan vara low-fi, high-fi och allt där emellan.
Testa på någon utomstående, helst inom målgruppen.
5.
6. I erat fall
Inget krav att ni iterera över er prototyp
Skall vara så spelbar och komplett som möjligt
Börja med det viktigaste, utöka om ni hinner
7. Sketchning
Bra för att förmedla sina idéer
Konkretiserar idéer, blir tydligt
om man tänker rätt
Bra att ha fokus när man väl börjar
koda
8. Pseudokod
Bra för att bena ut exakt vad som behövs göras
Bra om alla i teamet jobbar mot samma mål
Skönt när man får blackout
Exempel: Gissa talet
9. var number_to_guess = slumpmässigt tal mellan 0 - 100
function check_guess(){
if ( gissning är mer än number_to_guess ){
skriv ut “För högt. Gissa igen”
if ( gissning är mindre än number_to_guess ){
skriv ut “För lågt. Gissa igen”
else {
skriv ut “Bra! Rätt gissat”
}
}
}
}
Kör funktionen check_guess när användaren gör en gissning
10. Tips
Använd en bra text editor: Sublime Text 2
Använd JavaScript-konsolen
Googla, mycket!
11. Två olika sätt att bygga spel i HTML5
Om spelen vi skall bygga
DOM-element
(klassisk hemside-uppbyggnad)
<canvas>-taggen
HTML-element (<img>, <div> mm.)
CSS-styling
JavaScript (jQuery)
JavaScript för att rita upp objekt, spela
upp ljud mm.
Går det att utföra med hjälp av DOM-element så gör det,
använd <canvas>-taggen i annat fall.
12. Japanese Memory - uppbyggnad
HTML <section>, <div>, <p> ...
data-attribut
CSS Styling
Layout
Animering
JavaScript (jQuery) click-events
Logik
Spela upp ljud
13. ● jQuery( … ) eller $( ... )
jQuery
● jQuery ÄR JavaScript
● Länkar in det i vårt dokument
● Använda CSS-selektorer $(“#myID”).hide()
● Hjälpbibliotek
● Events: click, keydown ...
14. Skapa variabler som håller koll på antalet spelade
omgångar samt vilka kort som har vänts
Blanda korten och ange att funktionen card_clicked körs
när användaren klickar på ett kort
function card_clicked(){
Ta bort möjligheten att klicka på det vända kortet
Visa kortets framsida och spela upp kortets ljud
if ( två kort har vänts ) {
kör funktionen check_pair
}
}
15. “this”
Väldigt mycket upprepning.
Lätt att göra fel.
Jobbigt att felhantera.
$("#card-1").click( card_clicked1 )
$("#card-2").click( card_clicked2 )
$("#card-3").click( card_clicked3 )
20. function check_pair(){
}
Ta bort möjligheten att klicka på något kort
if ( Testa om de båda vända korten matchar varandra )
{
Ta bort de vända korten från spelplanen
Gör resterande kort klickbara igen
else {
Visa korten i två sekunder
Vänd tillbaka korten
Gör samtliga kort klickbara igen
Inkrementera antalet spelade omgångar
}
}
21. Japanese Memory - utökningar
● SVG
● Spelplanen utökas efter varje omgång
● Går på tid
● High score
● ...
22. Falling Math - uppbyggnad
HTML <canvas>
CSS ---
JavaScript Logik
canvas-API
game loop
osv.
23. Falling Math - uppbyggnad
Flera små och avgränsade funktioner
Ändra saker oberoende av vad användaren gör
Definera variabler överst i koden
29. function player_update() {
Uppdatera spelarens x-värde om en
piltangent är nedtryckt
Rita ut spelaren på canvasen
}
Håll koll så att x-värdet inte hamnar
utanför canvasen
32. function collision_check() {
if ( y-värde för fallande tal < y-värde för spelare){
}
}
avsluta funktionen
if ( x-värdet för fallande tal == x-värde för spelare) {
}
Höj eller sänk nivån beroände på om talet var rätt
eller fel
else {
Straffa spelaren om talet var rätt
}
Skapa ett nytt fallande tal
33. player_x <= fall_x + fall_width &&
fall_x <= player_x + player_width
10 / 2 = 5
fall
player
36. function change_level( next_or_prev ) {
if ( next_or_prev == “next” ){
}
}
Höja svårighetsgraden
else if ( next_or_prev == “prev” ){
}
Sänka svårighetsgraden
37. function new_falling_expression {
Ge det nya fallande talet ett nytt
slumpmässigt x-värde
Slumpa fram ett nytt matteproblem
ur listan math_expressions
}
Ange att det nya fallande talet skall
börja från toppen av canvasen
38. Falling Math - utökningar
● Talen genereras slumpmässigt
● Flera tal faller samtidigt
● Animationer i bakgrunden
● Ljud
● ...
40. Tips
Sketcha och skriv pseudokod.
Använd en bra texteditor och utnyttja JavaScripts-konsolen.
Experimentera med exempel-spelen, ställ frågor.
Skicka in era förslag på projekt i iLearn2, Presentera & diskutera projektidén.
Deadline är 2013-10-04.
Gör inte Chinese Memory eller Falling Grammer.
43. Japanese Memory
Fördelar Nackdelar
“Lättare”. Som att bygga en vanlig
hemsida, får mycket gratis.
Praktiskt att kunna styla elementen
med CSS.
Inte möjlighet att manipulera enskilda
pixlar.
44. Falling Math
Fördelar Nackdelar
Har större frihet att placera och
manipulera figurer.
Går att skapa “hit detection”
Är en mer invecklad process, tar
längre tid.
47. Funktionsnamn Asvar
player_update() Ritar ut spelaren
Ändrar spelarens x-värde
problem_update() Ritar ut det fallande talet
Ändrar talets y-värde
background_update() Ritar ut bakgrunden
new_problem() Slumpar ett nytt fallande tal
Flyttar talet till toppen av skärmen
change_level() Höjer / sänker svårighetsgraden
collision_check() Kollar ev kollisioner (fallande talet, spelaren och botten)
game_loop() Körs 60 ggr / sek
Anropar alla update-funktioner samt collision_check.
$(document).ready( … ) Skapar event-lyssnare för tangenter
Startar spelet