Computerspil i Greenfoot

Størrelse: px
Starte visningen fra side:

Download "Computerspil i Greenfoot"

Transkript

1 Computerspil i Greenfoot Af Mikkel Knudsen Kofoed Nordfyns Gymnasium mikkelkofoed@yahoo.com version:

2 Hvad er et computerspil? ("Den digitale leg" 1 s ) Definition: Et spil er en aktivitet der udføres på baggrund af formelle regler med henblik på en evaluering af deltagernes præstationer. - Et computerspil er blot et spil, der afvikles på en computer. - fra Den digitale leg Ordet aktivitet betegner nødvendigheden af at et spil kræver tilstedeværelse af en eller flere spiller. Endvidere må disse spillere have en meningsfuld indflydelse på hændelsesforløbet for at der kan tales om et spil. Et spil er altså noget interaktivt, og en film er derfor ikke et spil. Computerspil kan spilles på forskellige computertyper eller platforme, som det ofte betegnes f.eks. PC, MAC, PlayStation, Nintendo WII, X Box osv. En konsol (PlayStation, Nintendo WII, X Box) betegner en platform som er en fast konstrueret enhed som ikke (eller kun i ringe grad) kan opgraderes. Konsoller er normalt bygget med det ene formål at spille computerspil. Oftest udgives computerspil til flere forskellige platforme, og de er nogle gange tilrettet specifikt til de enkelte platforme især når det drejer sig om konsoller. Computerspilsgenrer i 4 kategorier ("Den digitale leg" s ) Når computerspil opdeles i genrer gøres det ofte på baggrund af de kompetencer, som spillet aktiverer i spilleren. Derfor opdeles computerspil typisk i de følgende fire kategorier: 1. Actiongenren 2. Adventuregenren 3. Strategigenren 4. Simulationsgenren Der kan opdeles som i tabellen nedenfor: Action Adventure Strategi Simulation Typisk handling Kamp Opklaring af mysterium Opbygge samfund i konkurrence med andre (Forskelligt) Succeskriterium Hurtige reflekser Løsning af gåder (logisk tænkning) Overblik, prioritering, analyse Bemestring af komplekse principper Interaktivitet Stor Lille (Tur) Mellemstor (Real) Stor Figur 1: Spilkategorier ("Den digitale leg" s. 25) Stor 1 "Den Digitale Leg - om børn og computerspil" af Simon Egenfeldt-Nielsen og Jonas Heide Smith kan hentes som gratis PDF på linket Side 1

3 Til at kortlægge hvor et spil hører hjemme i forhold til genre kan det ofte være brugbart at indtegne kategorierne på akse som nedenfor: Figur 2: Spilkategorier ("Den digitale leg" s. 26) Hjemmeopgave Du skal udvælge ét af dine yndlingsspil, som du næste gang skal fremlægge for de andre på holdet. Under fremlæggelsen skal du komme ind på: Hvorfor du godt kan lide at spille spillet Hvad spillet går ud på Hvilken genre spillet hører under brug her figur 1 og 2 som udgangspunkt Fremlæggelsen skal foregå via computeren. Hvis det er muligt må du gerne medbringe og fremvise noget af spillet via en bærbar. Ellers lav et par screendumps og sæt dem ind som slides i Power Point. Computerspillets historie ("Den digitale leg" s ) Her følger en kort oversigt over computerspillets udvikling gennem tiden frem til År Spil Beskrivelse 1962 Spacewar Betragtes af mange som det første rigtige computerspil på grund af muligheden for ægte interaktivitet. I spillet kæmper to spillere mod hinanden med hver deres rumskib. Lunar Lander Kan anses som det første spil i simulationsgenren. I spillet skal et månefartøj landes sikkert på månens overflade. Hammurabi / Kingdom Kan anses som det første strategispil. I spillet styrer man et kongerige og skal fastsætte skatter og planlægge høst. Hunt the Wumpus Skrivespil hvor en Wumpus skal jages i underjordiske komplekser Navnløst tennisspil Første konsolspil til konsollen Odyssey, der kunne spilles på en fjernsynsskærm Computer Space Første arkademaskine der indeholdt en udgave af Spacewar. Side 2

4 Pong Den anden udgave af en arkademaskine, der blev langt mere populært. Grundlaget for Atari Første konsol med cartridges til at spille flere spil Adventure Første tekstbaseret adventurespil baseret på rollespil som Dungeons & Dragons der blev opfundet i Death Race Første voldelige arkadespil, hvor man skulle kører fodgængere over 1976 Night Driver Et af de første 3D-spil 1978 Space Invaders Grundlægger af mange actionspil. Første arkadespil med high-score-liste. Gjorde arkademaskiner populærer. Astroids Battlezone Populær efterfølger til Space Invaders Kampvognsactionspil, hvor det er muligt at bevæge sig i 3D. Blev meget populær også ved militæret 1980 Ultima Et af de første computerrollespil 1981 Pac-man Skabte for første gang en identificerbar helt i et spil og blev desuden idoldyrket. Zork Populær adventure efterfølger til adventure Mystery House Første adventurespil med grafik, dog stadig tekstbaseret King s Quest Første grafiske adventurespil med styring af grafisk person 1984 Commodore Gauntlet Et af de første multiplayerspil med op til 4 spillere 1987 Maniac Mansion Et af de første point-and-click adventures, hvor man ikke behøvede at skrive sine handlinger 1987 SimCity Et strategi spil som blev meget populært, på trods af at de ikke rigtigt er et spil 1993 Ultima Underworld & Wolfenstein 3D Doom De 2 første 1-person-shooter spil Første 3D-shooter med mulighed for at linke flere computere sammen til multiplayer 1993 Dune II Det første real-time strategispil 1997 Ultima Online Det første multiplayer online rollespil Hjemmeopgave Du skal på baggrund af afsnittet om computerspillets historie frem til 2000 udfylde hvad der er sket med computerspil siden På baggrund af dit kendskab til computerspil, skal du altså prøve at svare på følgende spørgsmål: Hvad er der sket med computerspil siden 2000? Hvilke spil har gjort sig været revolutionerende siden 2000? o Hvad er revolutionerende ved spillene? Hvordan skiller de sig ud fra andre spil? Hvad er der sket med spilgenren siden 2000? Noter så mange spil som muligt. I timen vil vi så i fællesskab kortlægge computerspillets historie siden 2000 og frem til nu. Side 3

5 Greenfoot Greenfoot er et simpelt udviklingsmiljø baseret på Java, som hurtigt og simpelt gør det muligt at konstruere visuelle 2-D spil. Greenfoot er gratis, og det er tilgængeligt på hjemmesiden For at benytte Greenfoot skal man først have installeret Java SE Development Kit (JDK), hvilket også er gratis og tilgængeligt via SUNs hjemmeside: Java ultrakort Java er et objektbaseret programmeringssprog, hvilket vil sige, at Java er opbygget af en række objekter kaldet klasser (class es). I hver klasse kan der være en række metoder som minder om funktioner, som I kender fra JavaScript. Først kaldes evt. foruddefinerede javaklasser med import, som vi får brug for. I hver klasse initialiseres først de variable, som skal bruges i klassen. Derefter kaldes muligvis klassens constructor, der initialiserer objektet, som vi ønsker det. Til sidst indeholder klassen de metoder, som skal bruges i forbindelse med et objekt af klassen. I Java skelnes der mellem private, som er metoder og variable, der kun kan tilgås indenfor selve objektet, og public der er metoder og variable, der også kan tilgås udenfor objektet. Nedenfor skitseres opbygningen af en klasse i Java med udgangspunkt i Wombat-klassen. import greenfoot.*; public class Wombat extends Actor private static final int UP = 0; public Wombat() public void act() - Foruddefinerede javaklasse - Klassen Wombat oprettes - Variable initialiseres - Constructor - Metoder under klassen Side 4

6 Wombats Det første computerspil, vi skal se på, er Wombats, som er et af de standard scenarier, der følger med Greenfoot. 1. Åben scenariet via Scenario -> Open og vælg Wombats. Nu er der en tom ternet baggrund (8x8 tern) hvilket er spillets World. 2. Indsæt nu en Actor (aktør) i form af en Wombat i spillet ved at højreklikke på Wombat-kassen og vælg new Wombat(). Sæt Wombatten ind et sted i verden ved at trække-og-slippe figuren. 3. Indsæt nu en række blade på samme måde som ved Wombatten - altså tryk på Leaf-kassen, vælg new Leaf(), og træk bladet derhen, hvor det skal være. 4. Når du mener, at din verden er som du gerne vil have den, trykker du på Run. 5. Prøv at eksperimenter med at sætte forskellige wombats og blade ind, dette kan du også gøre mens spillet kører. 6. Prøv også at varierer på spillets hastighed med speed -baren. Det står dog klart efter lidt tid at Wombats -scenariet ikke er noget godt computerspil, hvis det da kan siges at være et computerspil overhovedet! For når spillet først er startet, er der ingen interaktivitet med spilleren. Men det kan vi gøre noget ved!!! Side 5

7 Bomberman Med udgangspunkt i Wombats vil vi nu lave vores første computerspil - nemlig det klassiske 2D-spil Bomberman. Vi starter helt fra bunden med spillet, så vælg "new scenario" under Greenfoot. Kald scenariet Bomberman og gem det under dit eget drev. Hent mappen "images" ned fra Fronter (under computerspil->greenfoot), der indeholder de billeder som vi i første omgang bruger. Gem mappen under dit Greenfoot-scenarie, således at Greenfoot kan finde billederne. Så er vi klar til at gå i gang! Opbygning af verdenen Det første vi skal have lavet er den verden som Bomberman skal foregå i. Dette gøres ved at højreklikke på "World" -> "new subclass". Navngiv verden "BomberWorld" og vælg "cell.jpg" som grafik. Tryk "compile all". Dobbeltklik på BomberWorld. Java-koden for verden kommer nu frem og ser således ud: import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class BomberWorld here. * (your name) (a version number or a date) */ public class BomberWorld extends World /** * Constructor for objects of class BomberWorld. * */ public BomberWorld() // Create a new world with 20x20 cells with a cell size of 10x10 pixels. super(20, 20, 10); Foruden diverse kommentarer (altså alt mellem /* og */ er kommentarer, som I kan slette hvis I vil), er der nu oprettet en klasse BomberWorld. Under denne klasse er der construktor'en BomberWorld, der fortæller hvordan verden ser ud: public BomberWorld() // Create a new world with 20x20 cells with a cell size of 10x10 pixels. super(20, 20, 10); Side 6

8 Her inddeler koden - super(20,20,10) verden i 20x20 felter (de 2 første tal i super), hvert felt er 10x10 pixels store (det sidste tal i super). Lav en verden hvor felterne er 60x60 pixels store. Lav en verden som er 10 felter bredt og 6 felter højt. Lav en verden som er 3 felter bredt og 9 felter højt. Lav en verden med et andet baggrundsbillede. Brug f.eks. elephant.png som er i image-mappen (dette kan gøres ved at højreklikke på BomberWorld-klassen og vælg set image). Hvad sker der, hvis billedet ikke har dimensionerne 60x60 pixels? Lav verden tilbage til cell.jpg med 9x9 felter og dimensionerne 60x60 pixels, som er det vi skal bruge i Bomberman. Bomberman Vi skal nu have vores Bomberman på banen. Han oprettes som en Actor ved at højreklikke på "Actor"->"New subclass". Kald ham Bomberman og vælg billedet "wombat.gif" (det kan vi altid ændre igen senere). Vi kan indsætte vores Bomberman i verden ved at højreklikke "Bomberman"->"new Bomberman()" og trække figuren ind på banen. Men vores Bomberman kan stadig ikke noget! Styring med tastaturet For at lave scenariet Bomberman om til noget der minder om et computerspil, starter vi med at lave Bombermanden spillerstyret. For at gøre dette skal vi ind og ændre i javakoden for programmet - dobbeltklik derfor på "Bomberman". Koden ser pt således ud: import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Bomberman here. * (your name) (a version number or a date) */ public class Bomberman extends Actor /** * Act - do whatever the Bomberman wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() // Add your action code here. Side 7

9 I skal i første omgang bare betragte java-programmering i stil med JavaScriptprogrammering, som I allerede kender til. Der er for Bomberman-klassen til at starte med 1 metode (betragt den som en funktion), som klassen kan kalde nemlig act(). act() Generel for Greenfoot objekter, der i dette tilfælde fortæller, hvad Bombermanden skal gøre. Vi skal have lavet en metode move(), som rykker vores Bomberman ved tastaturtryk. Metoden skal kaldes under metoden act(), hvilket I gør ved at skrive følgende under act(): public void act() move(); Metoden move() skal I bygge op som vist nedenfor. I koden kan Bomberman pt kun rykke op, hvilket I skal udvide så han kan rykke både: op, ned, til højre og til venstre. /** * Controls how the Wombat moves */ public void move() if (Greenfoot.isKeyDown("up")) setlocation(getx(), gety() - 1); else if (Greenfoot.isKeyDown("down")) // Erstat med kommando // Lav kommandoer for "left" og "right" Koordinatsystemet for styringen er indlagt som vist på nedenstående tegning, hvilket I skal bruge, når I skal finde ud af, hvilken værdi de forskellige retninger har. X Y +1 Forklaring af metoder Greenfoot.isKeyDown("X"): En metode der checker om tasten "X" på tastaturet er trykket ned - hvor "X" kan være alle taster og f.eks. "up" refererer til op-pilen. setlocation(x,y): En metode der sætter locationen for objektet (Bombermanden) til koordinaterne (X,Y) - dvs flytter vores Bomberman. getx(), gety(): To metoder der henholdsvis fortæller hvilken X- og Y-koordinat, som vores objekt (Bombermanden) er i pt. Side 8

10 Bombermanden i programmet kan kun gå op, hvilket sker når vi trykker på pil op ( up ). Udvid move() metoden så Bombermanden går: ned på pil ned ( down ) til højre på pil højre ( right ) til venstre på pil venstre ( left ). Dvs. udvid if-then-else-forgrenningerne under metoden der hvor jeg har skrevet kommentarer med //. Afprøv spillet med 1 Bomberman Afprøv spillet med flere Bomberman's Prøv også at ændre knapperne til retninger så Bombermanden går: op på ( w ) ned på ( s ) til højre på ( d ) til venstre på ( a ), hvilket bruges i mange spil. Afprøv spillet Ændre tasterne tilbage til pilene igen. Power-up I Bomberman er der forskellige power-up's, som Bomberman kan opsamle. I første omgang laver vi blot muligheden for at opsamle power-up's. Senere tilføjer vi at disse har en effekt. Opret under klassen Actor den nye klasse PowerUp (højre-klik på "Actor"->"new subclass()"), som kaldes PowerUp med billedet "leaf.gif". Vi kommer ikke til at lave kode under selve Power-up'en men i stedet skal vi ændre koden under vores Bomberman. Vi indfører nu metoden powerup(), der er en metode der i første omgang fjerner eventuelle power-up's som bombermanden løber ind i. Metoden skal således kaldes hver gang bombermanden bevæger sig, hvilket gøres ved at udvide metoden act() således: public void act() powerup(); move(); Side 9

11 Selve metoden powerup skal skrives længere nede i Bomberman-klassen, og skal se således ud: public void powerup() Actor onepowerup = getoneintersectingobject(powerup.class); if (onepowerup!= null) getworld().removeobject(onepowerup); Forklaring af metoder getoneintersectingobject(x.class): En metode der returnere et overlappende (intersecting) objekt af klassen X (i dette tilfælde klassen: PowerUp). getworld().removeobject(x): En metode under World, der fjerner objektet X fra verdenen. Afprøv spillet hvor du indsætter flere power-up's i verden og lader Bomberman samle dem op Lydeffekter For det meste spiller den lydmæssige side af et spil også en vigtig faktor for et godt spil. I Greenfoot er det ret let at indsætte en lydeffekt ud fra en lydfil undervejs i spillet. Dette gøres med kommandoen: Greenfoot.playSound("<filnavn>"); Hvor <filnavn> kan være en lydfil af formattet.wav. Forskellige lydeffekter kan findes med lidt søgning på nettet. Alternativt kan I bruge nogle af lydene fra de andre Greenfoot-spil. Lydfilerne ligges i en undermappe ved navn sounds på Fronter, som pakkes ud og lægges under Bomberman-scenariet (ligesom I gjorde ved mappen "images"). Indsæt lydeffekten "eat.wav" for Bomberman når han samler en power-up op. Indsæt en lydeffekt for Bomberman når han går, f.eks. "eat2.wav" Side 10

12 Rotation af figur Vi udvider nu vores spil rent grafisk således, at billedet af Bombermanden drejer afhængigt af, hvilken vej han går. Dette gøres ved at udvide Bomberman-klassen. For at gøre det overskueligt indfører vi, at hver retning får en værdi således at UP = 0, DOWN = 1, RIGHT = 2, LEFT = 3 (se figur nedenfor). UP -1 LEFT RIGHT +1 DOWN Tilsvarende indfører vi variablen direction, som vi undervejs sætter lig retningen som bombermanden vender. Disse variable indsættes i starten af bomberman-klassen, som skrevet nedenfor: public class Bomberman extends Actor int UP = 0; int DOWN = 1; int RIGHT = 2; int LEFT = 3; int direction; Desuden indføres den nye metode setdirection som vist nedenfor: /** * Sets the direction we're facing. */ public void setdirection() if (direction == UP) setrotation(270); // Lav de 3 forgrenninger for hhv DOWN, LEFT og RIGHT Der tilføjes desuden en ekstra linie setdirection() under hver af retningerne under move-metoden, som vist nedenfor: Side 11

13 public void move() if (Greenfoot.isKeyDown("up")) setlocation(getx(), gety() - 1); direction = UP; setdirection(); Forklaring af metode setrotation(x): Metoden roterer figuren X grader. 0 grader er mod øst og tælles med uret rundt. Udfyld resten af retningerne (DOWN, LEFT, RIGHT) i begge metoderne: move() og setdirection(), således at Bombermanden peger den vej som han går. Ændring af figur Nogle gange er vi ikke tilfredse med kun at rotere billedet af vores figur, men vi vil i stedet indsætte et nyt billede. Til det formål kan vi bruge en billede-variabel kaldet GreenfootImage. I det følgende udvider vi vores Bomberman-spil således, at bombermanden ikke løber på hovedet, når den går mod venstre. Vi bruger derfor 2 billeder: et hvor bombermanden peger mod højre (wombatright) og et mod venstre (wombatleft). Variablene til de 2 billeder initialiseres med private GreenfootImage (se nedenfor), hvilket indsættes efter de andre variable. Selve billederne skal laves i en constructor som hedder Bomberman(), som automatisk kaldes idet bombermanden som objekt oprettes i spillet. Det er under denne constructor, at vi ligger alle de standard informationer, som bombermanden skal oprettes med. For hver klasse oprettes normalt en metode som denne, der initialiserer objektet (i dette tilfælde bombermanden), hver gang et nyt objekt oprettes. Det højre billede sættes lig det billede, vi tidligere har brugt for wombatten (via bombertright = getimage()). Det venstre billede sættes først til at være en kopi af det samme billede (via bomberleft = new GreenfootImage(getImage())), hvorefter det spejles horizontalt (via bomberleft.mirrorhorizontally()). int direction; GreenfootImage bomberright; GreenfootImage bomberleft; public Bomberman() bomberright = getimage(); bomberleft = new GreenfootImage(getImage()); bomberleft.mirrorhorizontally(); Side 12

14 Efterfølgende skal vi fortælle programmet, hvornår de forskellige billeder skal bruges. Det gør vi ved at udvide metoden setdirection() under hver retning med kommandoen setimage(bomberright). Vi bruger her det spejlvendte billeder, når bombermanden går mod venstre og opad. public void setdirection() if (direction == DOWN) setimage(bomberright); setrotation(90); Udvid bomberman-programmet med de nye ændringer. Find efterfølgende de rette rotationer (dvs. grader) for bombermanden, når den går mod venstre og opad. Hint: Prøv jer evt. frem indtil den rette findes. Vi kan også få billedet til at være et billede hentet fra en fil, i princippet kan vi så tildele vores bomberman forskellige billeder for hver retning. For bomberleft skal du nu prøve at indsætte billedet for bladet leaf.gif i stedet for billedet af wombatten getimage() i linien wombatleft = new GreenfootImage(getImage()). Dvs skriv wombatleft = new GreenfootImage( leaf.gif ). Se hvad der sker. Prøv også at bruge et andet billede for bombermanden ved at ligge et andet.gif-billede,.png-billede eller.jpg-billede i images -mappen under dit bomberman-scenario og hent det ind i spillet for wombatleft, på samme måde, som du hentede bladets billede ind. Jeg har lagt wombat-billedet ( real_wombat.gif ) op på Fronter, som I kan bruge, hvis I vil. Slut af med at rette spillet tilbage til det originale wombat-billede. Initialisering af verdenen På et tidspunkt bliver vi trætte af at trække bombermanden og power-ups ind i verden, hver gang vi laver en ny kørsel. Derfor kan det være rart at opbygge verden, så den står klar hver gang vi compilere. På den måde vil vi så være i stand til at gemme indstillingerne for verdenen. Vi udbygger derfor bomberman-spillet med metoder: populate(), der skal placeres under BomberWorld-klassen. Udvid først vores constructor for BomberWorld med et metodekald til populate(): public BomberWorld() super(9, 9, 60); populate(); Side 13

15 Derefter indsættes den nye metode populate() nedenunder: /** * Populate the world with a fixed scenario of bombermans and power-ups. */ public void populate() Bomberman b1 = new Bomberman(); addobject(b1,1,1); Hvordan ser verden ud? Ændre populate() således at bombermanden starter i øverste venstre hjørne. Udvid populate() således at der også er en bomberman i nederste højre hjørne. Udvid populate() således at der er en power-up i hvert hjørne. Multiplayer Det er i mange spil muligt at spille flere spillere på en gang. For at tilføre en ny spiller skal I oprette en ny Actor, hvilket I gør ved at højreklikke på Actor -> new subclass. Her kan I så vælge en figur prøv f.eks. elefanten - og navn for spiller 2: "Bomberman2" Opret en spiller 2 som har de samme regler som spiller 1 (her kan det meste klippe-klistres fra spiller 1). Spiller 2 skal styres på tasterne a (venstre), s (ned), d (højre) og w (op) i stedet for piltasterne. Læg evt. andre lydeffekter ind for spiller 2. Side 14

16 Forhindringer En måde at gøre spillet mere udfordrende er ved at indføre nogle forhindringer på banen. Opret en sten som en subclass til Actor ved navn Rock brug sten-billedet. Næste skridt er at sikre os, at bombermanden ikke kan rykke igennem stenen. Dette gør vi ved at indsætte en metode, der checker om bombermanden kan flytte, hver gang der trykkes på tasterne. Denne metode kalder vi canmove(int dx, int dy), hvor dx er bevægelse i x-aksens retning, og dy er bevægelse i y-aksens retning. Metoden indsættes blandt metoderne under bomberman-klassen. public boolean canmove(int dx, int dy) List rocks = getobjectsatoffset(dx, dy, Rock.class); if (rocks.isempty()) return true; else return false; Hvad gør linierne i metoden? Hvornår returnere metoden værdien true og hvornår værdien false? Før wombatten flytter kaldes nu metoden canmove(int dx, int dy), som indsættes under metoden move(). For bevægelse op ser det sådan ud: public void move() if (Greenfoot.isKeyDown("up")) if (canmove(0,-1)) setlocation(getx(), gety() - 1); direction = UP; setdirection(); Ret resten af metoden move() til således, at wombatten ikke kan gå igennem stenen, ligegyldigt hvilken vej den går (juster her værdierne af dx og dy, som metoden canmove(int dx, int dy) kaldes med). Juster også spiller 2 så den heller ikke kan gå igennem stenen. Side 15

17 Initialisering af banen Vi har nu de første simple elementer til at lave det gamle klassiske spil Bomberman! Lav en verden der er 9x9 stor, placer spiller 1 i øverste venstre hjørne og spiller 2 i nederste højre hjørne. Placer en sten (Rock) i hvert andet felt i midten som vist på billedet nedenfor. o Spillets bane minder således i stil med den som nedenfor Side 16

18 Bomber! En måde at gøre spillet mere udfordrende på, og rent faktisk gør det fortjent til navnet Bomberman, er ved at tilføje muligheden for at ligge bomber. Nu begynder vores tilføjelser at blive omfattende. Det er derfor vigtigt, at vi udfører dem i små skridt. Sørg derfor for løbende at teste hvert skridt, og tag kun 1 skridt af gangen - for som mantraet for dataloger lyder K.I.S.S. (Keep It Simple Stupid) altså lad være med at lave for mange ting på én gang! 1. Bombe-klassen Opret en sub-klasse af Actor ved navn Bomb. Vælg her bomben som billede. 2. Bomben ligges på tastetryk Udvid spiller-klassen med muligheden for at smide bomber. Dette gøres ved at indføre den nye metode dropbomb(). Indsæt metoden dropbomb() blandt bombermandens metoder. Udvid metoden move() således at en den nye metode dropbomb() kaldes når enter-knappen trykkes ned. o Har det betydning hvor if-betingelsen for tastetrykket står i rækken af if og else-if udsagn? Opret bomben hvor bombermanden er i verden ved at skrive følgende i metoden dropbomb(): /** * Bomberman drops bomb */ private void dropbomb() Bomb bomb = new Bomb(); getworld().addobject(bomb, getx(), gety()); Forklaring af metoder getworld().addobject(objekt, X, Y): En metode der opretter et nyt objekt af typen Objekt (i vores tilfælde bomb) på koordinaterne X,Y. Hvad gør den 1. linie i metoden dropbomb? Hvad gør den 2. linie i metoden? Test spillet med den nye metode Side 17

19 3. Bomben sprænger ved kontakt I første omgang laver vi bomben som en mine, der sprænger ved kontakt med spiller 2. Så når spiller 2 løber hen over bomben sprænger bomben og spiller 2 dør. Til det formål skal vi ændre på koden for bomben. Vi indfører en metode hit() under bombens (Bomb) metode act(), som derved kaldes, hver gang spillet har foretaget et gennemløb: public void act() hit(); Efterfølgende laver vi metoden hit() (også under vores bomb) som vist nedenfor: public void hit() Actor victim = getoneobjectatoffset(0, 0, Bomberman2.class); if (victim!= null) // If there's a Bomberman 2 getworld().removeobject(victim); // Remove victim getworld().removeobject(this); // Remove bomb Greenfoot.playSound("Explosion.wav"); Indsæt ovenstående kald af metode hit() i act() og selve metoden hit() begge under klassen for bomben. Hvad gør følgende linier i koden? o Actor victim = getoneobjectatoffset(0, 0, Elephant.class);? o getworld().removeobject(victim);? o getworld().removeobject(this);? Ekstra Udvid metoden hit() således at player 1 også springer i luften, hvis den løber ind i bomben o Sørg her for at wombatten kan nå at ligge bomben inden, den selv springer i luften. o For at gøre dette kig her på hvornår metodekaldet til bomb() kommer under metoden move() i forhold til de andre muligheder, hvor wombatten rykker rundt ved tastetryk. Den skal kunne nå at ligge bomben OG flytte i samme runde. o Udvid koden for spiller 2 således at den også kan ligge de samme bomber som spiller 1. Den skal ligge bomber ved f.eks. at trykke på tasten q. o Det kan i nogle tilfælde være en fordel at udvide metoden dropbomb() med følgende linier: Side 18

20 private void dropbomb() Actor existingbomb = getoneobjectatoffset(0, 0, Bomb.class); if (existingbomb == null) Bomb b = new Bomb(); getworld().addobject(b, getx(), gety()); o Hvad gør den nye bid kode? Side 19

21 Rækkevidde på bomber 1. Ændring af klassen Bomb Vi ændrer nu spillet således, at bomberne er tidsindstillet og sprænger i luften i en eksplosion, der har en rækkevidde, som er større end feltet, som bomben ligger i. De følgende ændringer laves alle i Bomb-klassen. Vi skal bruge en tæller på, hvor lang tid bomben lever og en ny metode til bomben kaldet bombexplode(). Dette kan f.eks. se sådan ud: public class Bomb extends Actor private int countdown; // life-time of bomb public Bomb () countdown = 5; public void act() hit(); if (countdown==0) bombexplode(); else countdown = countdown - 1; /* * Bomb explodes */ public void bombexplode() Implementer den nye bid kode i den allerede eksisterende kode under klassen Bomb. Hvordan virker tælleren countdown? o Hvad starter countdown med at have af værdi? o Hvad sker der med countdown for hvert gennemløb af act()? o Hvad sker der, når countdown rammer nul? Side 20

22 2. Fjern bombe Løsning: Prøv at se om du selv kan udvide den nye metode bombexplode() under bomben med to linier således, at den i første linie fjerner bomben fra verden og i anden linie afspiller en eksplosionslyd (vent med at se på løsningen i boksen nedenfor). o Hint: se hvordan I gjorde under metoden hit() /* * Bomb explodes */ public void bombexplode() getworld().removeobject(this); // Remove bomb Greenfoot.playSound("Explosion.wav"); 3. Eksplosion som klasse Lav en ny klasse Explosion som en subklasse til Actor (dette gøres på samme måde, som vi lavede f.eks. Rock). Billedet I skal bruge til klassen Explosion er lagt under navnet explosion.gif. I første omgang skal I ikke tilføje noget kode til klassen. Denne klasse skal vi senere bruge til at lave store eksplosioner Eksplosion når bomben sprænger Vi laver nu en ny metode makeexplosion(int x, int y) under vores klasse bomb. /* * Explosion around bomb */ public void makeexplosion(int x, int y) Tilføj metoden makeexplosion(int x, int y) til bomb-klassen. Prøv at se om du selv kan udvide den ny metode makeexplosion(int x, int y) således, at den opretter et objekt af typen i Explosion i feltet med koordinatet (x,y). (vent med at se på løsningen i boksen nedenfor). o Hint: se hvordan I gjorde, da I lavede en ny bombe under metoden dropbomb() under Player 1. Side 21

23 Løsning: public void makeexplosion(int x, int y) Actor explosion = new Explosion(); getworld().addobject(explosion, x, y); 4.2 Eksplosion når bomben sprænger Vi skal nu kalde denne nye metode, når bomben eksploderer. Dette gør vi ved at udvide metoden bombexplode(). public void bombexplode() int x; int y; x = getx(); y = gety(); makeexplosion(x,y); getworld().removeobject(this); // Remove bomb Greenfoot.playSound("Explosion.wav"); Udvid metoden bombexplode() med ændringerne ovenfor. Hvad gør hver af de nye linier i metoden? Udvid metoden således, at der også laves en eksplosion til højre, venstre, ovenfor og nedenfor bomben. o Hint: Hvad gør metodekaldet makeexplosion(x,y)? 5. Dødelig eksplosion I det følgende skal vi arbejde med koden under Explosion-klassen. Det første, vi skal have ordnet, er, at få eksplosionen til at forsvinde med det samme bomben sprænger. Det andet, vi skal gøre, er, at sikre os at eksplosionen fra bomben er dødelig for spillerne. Begge dele gøres ved tilføjelser til metoden act(). Lav en linie under act() således at eksplosionen forsvinder o Hint: Se hvordan vi fjernede f.eks. bomben under bombexplode(). Lav endnu en linie under act(), der kalder en metode explosionhit(), som vi også ligger under Explosion-klassen. o Denne nye linie skal skrives før linien, hvor vi fjerner eksplosionen, for at spillet ikke crasher. Hvorfor mon det? Lav metoden explosionhit() som fjerner spiller 1 og spiller 2, hvis disse befinder sig i samme felt og derved er ramt. o Hint: Denne metode er meget lig hit()-metoden under Bomb-klassen. Side 22

24 Løsning: public class Explosion extends Actor /** * Deadly explosion */ public void act() explosionhit(); getworld().removeobject(this); // Remove explosion /* * Kills player 1 or player 2 if they are hit */ public void explosionhit() Actor victim1 = getoneobjectatoffset(0, 0, Elephant.class); Actor victim2 = getoneobjectatoffset(0, 0, Wombat.class); if (victim1!= null) getworld().removeobject(victim1); // Remove elephant if (victim2!= null) getworld().removeobject(victim2); // Remove wombat Ekstra o Prøv at redigere koden for Bomb-klassen, så det nu ikke mere er dødeligt for spillerne at gå ind i bomberne. De dør først idet bomben sprænger. o Hint: Dette kan gøres ved at udkommentere 1 enkelt linie i koden for bomb-klassen. o Prøv evt. at gøre bombernes rækkevidde større f.eks. 2 felter til hver side fremfor 1. o Hint: Dette kan gøres ved at tilføje nye eksplosioner med linier med makeexplosion(x,y) under metoden bombexplode(). Side 23

25 Lidt mere Java Objekter og klasser Tidligere (se side 7) blev opbygningen af klasser i Java ultrakort beskrevet. I det følgende vil klasser og objekter i Java blive uddybet noget mere. Dette gøres med udgangspunkt i en tekst taget fra hjemmesiden 2, som har et godt eksempel, der til forståelsen af klasser og objekter måske er bedre end vores Bomberman-spil. Hidtil har vi kun brugt de simple typer (som int, boolean og double). Et javaprogram vil ofte udføre mere komplekse opgaver og dermed have brug for objekter. Et objekt repræsenterer en eller anden (ofte fysisk) ting og indeholder sammensatte data om denne ting, f.eks. et hus-objekt (med adresse, telefonnummer, antallet af døre og vinduer ), en bil, en person, en bankkonto, en selvangivelse, en ordre, et dokument Objekter kan klassificeres i forskellige kategorier, kaldet klasser. F.eks. kunne man sige, at alle hus-objekter tilhører Hus-klassen. Hus-klassen er en beskrivelse af alle slags huse. Næsten alt er repræsenteret som objekter i Java og der findes tusindvis af foruddefinerede klasser til ting, som man ofte har brug for som programmør såsom: tekststrenge, datoer, lister, filer og mapper, vinduer, knapper, menuer, netværksforbindelser, hjemmesideadresser, billeder, lyde I vores tilfælde med spil bruger vi bl.a. de vigtige klasser Actor og World. Et objekt indeholder data, der beskriver det, som objektet repræsenterer. Et Fil-objekt har oplysninger om den fil, det repræsenterer: Navn, placering, type, dato for oprettelse og indhold. Et Person-objekt har måske variabler for fornavn, efternavn, CPR-nummer. Et objekt kan også indeholde navngivne programstumper, som kan udføres ved at give objektet besked om det. Disse programstumper kaldes metoder og kan opfattes som spørgsmål eller kommandoer, som man bruger til at undersøge og manipulere indholdet af objektet med. Et Fil-objekt har måske metoden "omdøb()", der ændrer filens navn, et Person-objekt kan måske give personens alder med metoden "hvaderdinalder()". Et objekt kan indeholde metoder og data (variabler) En metode kan ændre på objektets data, når den udføres Ligesom med de simple typer afhænger det af objektets type, dets klasse, hvad man kan gøre med det. Ordet "klasse" skal forstås i betydningen "kategori, gruppe". Alle objekter kan klassificeres som værende af en bestemt type (klasse), f.eks. Streng, Dato, Fil, Knap. Objekter af samme klasse forstår de samme beskeder (kommandoer og spørgsmål) og indeholder samme slags data. Objekter af klassen Person indeholder f.eks. begge et navn, men navnene (data) i de to person-objekter, kan være forskellige. 2 Helt præcist: - altså fra kapitel 3 Side 24

26 Et objekts type kaldes dets klasse Klassen bestemmer, hvilke metoder og data et objekt har Vi tegner klasser, som vist her til højre. Øverst er klassens navn, dernæst data og nederst metoderne. Dette er en del af UML-notationen (Unified Modelling Language), en notation, der ofte bliver anvendt i forbindelse med objektorienteret programmering. Tegn en objektkasse som vist på tegningen for alle de klasser I har under Actor i Bombermanspillet (dvs. Bomberman, Rock, Leaf osv) og ligeledes for klasserne under World. Sådanne kasser har den fordel, at man lettere kan overskue opbygningen af sine programmer. Når I senere skal lave jeres egne computerspil, er det derfor alpha & omega at tegne sådanne kasser! Side 25

27 Jord I Bomberman er der normalt både felter med sten (Rock) og jord (Dirt). Forskellen er, at sten ikke kan sprænges væk med bomber, imens jorden kan sprænges væk. Man skal i spillet sprænge sig vej gennem jordfelterne for at komme over til modstanderen og vinder så ved at sprænge modstanderen med bomber. Der er lagt et billede af Dirt, som I kan bruge, op på Fronter ( Dirt.jpg ). Udvid spillet med en Dirt-klasse med følgende egenskaber: o Spillerne kan ligesom for Rock-klassen ikke rykke gennem jorden. Hint: Laves på samme måde som for Rock-klassen under spillerklasserne. o Bomberne kan sprænge jord væk (men stadig ikke sten) Hint: Laves på samme måde som spillerne bliver sprængt væk under Explosion-klassen. Placer jord-felter så der er fyldt godt op med disse, hvor der ikke er sten, når spillet starter. Husk at gøre plads ved siden af spillerne til at starte med. Side 26

28 Andre udvidelser Til sidst er der nedenfor en række udvidelser, som kan gøre spillet sjovere. Hårde bomber o Udvid spillet så spillerne ikke kan løbe gennem bomberne, når de først er lagt. o Hint: Lav udvidelsen på samme måde under spiller klasserne, som I gjorde for Rock og Dirt-klasserne Power-up gør eksplosionerne større o Udvid spillet så rækkevidden på bomberne til at starte med er 1. Rækkevidden for en spillers bombe bliver efterfølgende 1 større for hver gang, den spiller spiser en power-up. o Hint: Lav en tæller under hver spiller, der tæller op hver gang spilleren spiser enpower-up. o Hint: Udvid under klassen Bomb metoden bombexplode(), med en løkke (f.eks. en for-løkke). Denne løkke skal for hvert gennemløb lave rækkevidden på bomben 1 større. Således giver metodekaldet: bombexplode(1) en bombe med rækkevidde 1, bombexplode(2) en bombe med rækkevidde 2, osv. o Lav en constructor under Bomb-klassen der som input tager rækkevidden af bomben, så dette kan bruges som length i metoden bombexplode(). Således bestemmes bombens rækkevidde idet bomben oprettes under hver spiller. o Lav en verden hvor der er gemt en række power-ups fra start gerne under Dirt-felterne, da disse jo kan sprænges væk. Hint: brug eventuelt metoden randomleaves(int howmany) under WombatWorld til at lægge en række tilfældige blade fra start. Side 27

29 En mulig løsning til constructor en til Bomb-klassen: public Bomb (int inputreach) countdown = 10; this.reach = inputreach; En mulig løsning til metoden bombexplode() med for-løkke: public void bombexplode() int x; int y; x = getx(); y = gety(); makeexplosion(x,y); // Gets the x-coordinate // Gets the y-coordinate // Makes an explosion in coordinate (x,y) for (int i=0; i <= reach; i++) // Makes explosion as large as the value of reach makeexplosion(x + i,y); makeexplosion(x - i,y); makeexplosion(x,y + i); makeexplosion(x,y - i); getworld().removeobject(this); // Remove bomb Greenfoot.playSound("Explosion.wav"); Hvor reach er en global variabel under Bomb-klassen af typen int. Side 28

30 Endnu en ekstra udvidelse En sidste udvidelse til spillet kan være at sikre os, at bomberne ikke sprænger gennem sten (Rock-klassen). Denne udvidelse kan være lidt tricky. Først skal vi lave en metode af typen boolean ved navn rockfree(int dx, int dy) under Bomb-klassen, der checker om, der er en sten i koordinatet (dx, dy) i forhold til bomben. Hvis der er en sten i koordinatet, skal vi senere fortælle bomben, at den ikke skal lave eksplosioner den vej. Udvid metoden rockfree(int dx, int dy) nedenfor således, at den returnerer true, hvis der ikke er en sten i koordinatet (dx, dy), og false hvis der er en sten i koordinatet. o Hint: Se hvordan vi i metoden canmove(int dx, int dy) under wombatklassen checker, om der er et objekt i et koordinat (dx, dy) vha. metoden getobjectatoffset(dx, dy, X.class). o Ligesom i metoden canmove(int dx, int dy) returneres der true, hvis der ikke er et objekt, og false hvis der er et objekt. public boolean rockfree(int dx, int dy) // Udfyld kode En mulig løsning til metoden rockfree(int dx, int dy): public boolean rockfree(int dx, int dy) List rocks = getobjectsatoffset(dx, dy, Rock.class); if (rocks.isempty()) // No rocks return true; else return false; Side 29

31 Udvid metoden bombexplode() under bomb-klassen således, at den ud fra bombens position via metoden rockfree(int dx, int dy) checker, om der er en sten i et af de 4 felter ved siden af bomben. o Hint: nedenfor er vist hvordan udvidelsen kan se ud når der kun checkes til højre for bomben. Udvid metoden således at der også checkes til venstre, ovenfor og nedenunder bomben. public void bombexplode() int x; int y; boolean rightfree, leftfree, upfree, downfree; x = getx(); y = gety(); makeexplosion(x,y); // Gets the x-coordinate // Gets the y-coordinate // Makes an explosion in coordinate (x,y) rightfree = rockfree(+1,0); for (int i=0; i <= reach; i++) // Makes explosion as large as the value of reach if (rightfree) makeexplosion(x + i,y); makeexplosion(x - i,y); makeexplosion(x,y + i); makeexplosion(x,y - i); Side 30

32 En mulig løsning til udvidelsen af metoden bombexplode(): public void bombexplode() int x; int y; boolean rightfree, leftfree, upfree, downfree; x = getx(); y = gety(); makeexplosion(x,y); // Gets the x-coordinate // Gets the y-coordinate // Makes an explosion in coordinate (x,y) rightfree = rockfree(+1,0); leftfree = rockfree(-1,0); upfree = rockfree(0,-1); downfree = rockfree(0,+1); for (int i=0; i <= reach; i++) // Makes explosion as large as the value of reach if (rightfree) makeexplosion(x + i,y); if (leftfree) makeexplosion(x - i,y); if (downfree) makeexplosion(x,y + i); if (upfree) makeexplosion(x,y - i); Side 31

33 Opsamling af Bomberman Vi har nu gennem de tidligere sider arbejdet med at opbygge grundlæggende spilfunktioner i Greenfoot. Disse funktioner har vi implementeret i Bomberman-spillet. Vi har således blandt andet lært at: Oprette og ændre en verden til vores spil o klassen BomberWorld Tilføje figurer som kan indsættes i verden o f.eks. klassen Bomberman og klassen Rock Lave regler for figurerne der bliver udført for hvert spilgennemløb o Metoden act() under hver klasse af en figur Styre en figur med tastaturet o metoden move() under klassen Bomberman Lave kollisionsregler for figurer o F.eks. metoden canmove(int dx, int dy) under klassen Bomberman Ændre billedet af en figur o Metoden setdirection(int direction) under klassen Bomberman Oprette eller fjerne figurer ved bestemte hændelse o F.eks. metoderne bomb() og powerup() under klassen Wombat Side 32

34 Lidt mere Java 3 Oversætter Når man skal udvikle et program, skriver man først en kildetekst (eng.: source code), der beskriver, hvad det er, man vil have programmet til at gøre. Programmet, vi lige har set, er et eksempel på en kildetekstfil. Instruktionerne, som centralenheden i computeren arbejder med, er i en binær kode (kaldet maskinkode eller bytekode), der er umulig at læse for almindelige mennesker. Kildeteksten skal derfor oversættes (eng.: compile; mange siger også kompilere på dansk) til den binære kode, som så kan udføres af computeren. I Java kalder man den binære kode for bytekode. Bytekode er platformuafhængigt, dvs. at det kan køre på stort set alle hardware-platforme og alle styresystemer. De fleste andre sprogs binære kode er ikke indrettet til at være platformuafhængigt. For at oversætte et program som f.eks. HejVerden skal det gemmes i en fil med navnet "HejVerden.java". En kildetekstfil skal hedde det samme som klassen og skal have.java som fil-endelse Eksempel: Klassen hedder HejVerden og filen hedder HejVerden.java. Oversættelse og kørsel fra kommandolinjen Hvis vi brugte det kommandolinje-orienterede JDK direkte, skulle vi åbne en DOS/UNIX-kommandoprompt, stå i den samme mappe som kildeteksten findes, og så skrive: javac HejVerden.java Dette oversætter programmet til bytekode (filen HejVerden.class skulle nu gerne ligge i samme mappe). Programmet kan efterfølgende køres med kommandoen: java HejVerden Resultatet udskrives i vinduet: Hej Verden! Hvornår smager en Tuborg bedst? Hvergang! 3 Klippet-klistret og efterfølgende tilpasset fra kap. 2 og 3 Side 33

35 Oversættelse og udførelse af programmet HejVerden Oversættelse og kørsel med Greenfoot I de fleste udviklingsværktøjer er den ovenstående procedure gjort meget lettere. I Greenfoot behøver I for eksempel kun holde styr på, hvor projektmappen for et spil ligger, så skal Greenfoot nok selv holde styr på at oprette de tilhørende.java-filer. Ligeledes er selve oversættelses-funktionen i Greenfoot gjort lettere idet, I blot behøver at trykke på knappen Compile all, og så ordner Greenfoot-programmet selv resten. Der foregår således en del underlæggende og for jer skjulte processer, når I bruger Greenfoot. Dette er med til at gøre hele programmeringsdelen lettere og overskueligt for jer, og gør det muligt for jer hurtigt at komme i gang med hele essensen nemlig den sjove programmeringsdel. Import af standardklasser Øverst i kildeteksten "importerer" vi alle klasser i pakken greenfoot.* ved at skrive import Greenfoot.*; Dette fortæller oversætteren, hvor den skal lede efter definitionen af klasserne, vi bruger i programmet. For alle klasser vi opretter i Greenfoot-programmet er det nødvendigt at fortælle oversætteren om greenfoot-pakken, da den skal kende til de metoder der hører til greenfoot. En pakke er en samling klasser med beslægtede funktioner. Således indeholder greenfootpakken de forskellige nyttige klasser og metoder, som vi bruger under programmeringen. Andre pakker I også har importeret er java.util.list;, som er en standard-klasse under Java som bruges i forbindelse med lister. Lister kommer vi dog ikke nærmere ind på her. Konstruktører Når man vil oprette et objekt med bestemte startværdier, kan det gøres ved, at benytte en konstruktør, hvor startværdierne kan angives. For eksempel har vi lavet en udvidelse sådan i vores spil, at en bombe (klassen Bomb) kan oprettes med en rækkevidde på 3 med følgende linie: Side 34

36 b = new Bomb(3); Hvor tallet 3 angiver rækkevidden af bomben b. Det er i virkeligheden en slags metodekald, vi her foretager, så det er ikke nogen tilfældighed, hvis det ligner. Når man skaber et nyt objekt med new, kaldes en konstruktør. Konstruktøren opretter objektet og initialiserer dets data (variabler). Før vi udvidede vores klasse Bomb blev en bombe blot oprettet med følgende linie: b = new Bomb(); Derved blev der ikke videregivet nogen inputvariable til konstruktøren af Bomb-klassen, og alle bomber, der blev oprettet, var således ens. Side 35

37 Platformspil Vi skal nu i gang med at se på opbygningen af en ny type spil nemlig det klassiske platformspil. Til det formål har jeg lavet en grundramme for et platformspil til Greenfoot (på baggrund af et spil jeg fandt på nettet), som jeg har lagt op på Fronter som Platform.zip. Download scenariet og pak scenariet ud der, hvor I plejer at ligge jeres Greenfoot scenarier. Scenariet består af de følgende 4 klasser: PlatformWorld - Spillets verden Bunny - En figur spilleren kan styre Star - En stjerne spillerfiguren kan indsamle Block Platformenes bestanddele Koden for de 4 klasser ser således ud: PlatformWorld import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.lang.string; import java.util.list; public class PlatformWorld extends World /** * Constructor for objects of class PlatformWorld. * */ public PlatformWorld() // Create a new world with 90x60 cells with a cell size of 10x10 pixels. super(90, 60, 10); createworld(); public void createworld() int x; String worldrow; setbackground("casa.jpg"); String[] worldshape= " ", " ", " ", " ", " ", " ", " ", " ", Side 36

38 " ", " ", " ", " ", " ", " " ; Bunny player = new Bunny(); addobject(player, 1, 55); // The world is created based on the numbers in the string "worldshape" // "i" counts the number of rowss and "j" counts the number of columns for (int i = 0; i < 14; i = i + 1) worldrow = worldshape[i]; for (int j = 0; j < 45; j = j + 1) if(worldrow.charat(j) == '1') Block b = new Block(); addobject(b, j*2, (i + 3) * 4); else if(worldrow.charat(j) == '2') Star s = new Star(); addobject(s, j * 2, (i + 3) * 4); Bunny import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.list; /** * Write a description of class Bunny here. * (your name) (a version number or a date) */ public class Bunny extends Actor int LEFT = -1; int RIGHT = 1; int imagenumber = 0; int direction = RIGHT; GreenfootImage[] BunnyRight = new GreenfootImage[10]; GreenfootImage[] BunnyLeft = new GreenfootImage[10]; /** * Constructor loads the 20 images for the Bunny */ Side 37

39 public Bunny () // Loads the 10 images for moving left BunnyLeft[0] = new GreenfootImage("conejo1.png"); BunnyLeft[1] = new GreenfootImage("conejo2.png"); BunnyLeft[2] = new GreenfootImage("conejo3.png"); BunnyLeft[3] = new GreenfootImage("conejo4.png"); BunnyLeft[4] = new GreenfootImage("conejo5.png"); BunnyLeft[5] = new GreenfootImage("conejo6.png"); BunnyLeft[6] = new GreenfootImage("conejo7.png"); BunnyLeft[7] = new GreenfootImage("conejo8.png"); BunnyLeft[8] = new GreenfootImage("conejo9.png"); BunnyLeft[9] = new GreenfootImage("conejo10.png"); // Loads the 10 images for moving right BunnyRight[0] = new GreenfootImage("conejo1_1.png"); BunnyRight[1] = new GreenfootImage("conejo2_1.png"); BunnyRight[2] = new GreenfootImage("conejo3_1.png"); BunnyRight[3] = new GreenfootImage("conejo4_1.png"); BunnyRight[4] = new GreenfootImage("conejo5_1.png"); BunnyRight[5] = new GreenfootImage("conejo6_1.png"); BunnyRight[6] = new GreenfootImage("conejo7_1.png"); BunnyRight[7] = new GreenfootImage("conejo8_1.png"); BunnyRight[8] = new GreenfootImage("conejo9_1.png"); BunnyRight[9] = new GreenfootImage("conejo10_1.png"); /** * Act - do whatever the Bunny wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() move(); /** * Moves the player around */ public void move() int dx = 0; int dy = 0; int x; int y; if (Greenfoot.isKeyDown("left")) // direction = -1 for moving left. direction = LEFT; if (canmove(-1,0)) dx = -1; else dx = 0; Side 38

40 else if (Greenfoot.isKeyDown("right")) // direction = 1 for moving right. direction = RIGHT; if (canmove(1,0)) dx = 1; else dx = 0; // standing still else imagenumber = 9; /** * INSERT TO MAKE THE BUNNY JUMP */ x = getx() + dx; y = gety() + dy; setlocation(x,y); changeimage(); /** * Checks if it's legal for player to move */ public boolean canmove(int dx, int dy) List blocks = getobjectsatoffset(dx, dy, Block.class); if (blocks.isempty()) return true; else return false; /** * Change the image of the bunny when it runs */ public void changeimage() if (direction == LEFT) setimage(bunnyleft[imagenumber]); else if (direction == RIGHT) Side 39

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.

Læs mere

Introduktion til ActionScript

Introduktion til ActionScript Introduktion til ActionScript Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling på

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen. Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19

Læs mere

Gem dine dokumenter i BON s Content Management System (CMS)

Gem dine dokumenter i BON s Content Management System (CMS) 24. august 2007 Gem dine dokumenter i BON s Content Management System (CMS) INDHOLDSFORTEGNELSE 1. Indledning... 2 2. Se indholdet i dit Content Management System... 3 3. Tilgå dokumenterne i My Content

Læs mere

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

Læs mere

Den digitale Underviser. Videoredigering. Windows Live Movie Maker

Den digitale Underviser. Videoredigering. Windows Live Movie Maker Den digitale Underviser Videoredigering Windows Live Movie Maker Indhold Indhold... 1 Windows Movie Maker... 2 Om at oprette et projekt... 3 Optage og downloade video... 4 A. Optage din egen video:...

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere

Bekrig Klonerne. Introduktion. Scratch. I dette projekt skal du lære, hvordan du laver et spil, hvor du skal redde Jorden fra monstre i rummet.

Bekrig Klonerne. Introduktion. Scratch. I dette projekt skal du lære, hvordan du laver et spil, hvor du skal redde Jorden fra monstre i rummet. Scratch 2 Bekrig Klonerne All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club.

Læs mere

Mediator 9. Materiale til elever. Version: August 2012

Mediator 9. Materiale til elever. Version: August 2012 Mediator 9 Materiale til elever Version: August 2012 Indholdsfortegnelse Farveliste til kopiering/udlevering...4 Mediator - et eksemplarisk forløb...5 Dataindsamling...5 Start programmet...5 Intro...8

Læs mere

MS Visual Studio Basic 2010. En kort vejledning

MS Visual Studio Basic 2010. En kort vejledning Du kan hente programmet gratis her: MS Visual Studio Basic 2010 Express http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express Tryk på Install Now og følg vejledningen. Indholdsfortegnelse

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

Læs mere

Kom godt i gang med Fable-robotten

Kom godt i gang med Fable-robotten Kom godt i gang med Fable-robotten 1. Først skal du installere programmet på din computer. Gå ind på shaperobotics.com og under support vælger du download: Her vælger du, under PC App om du kører Windows

Læs mere

Kilder: Troldspejlets Spilskolen, yoyogames.com

Kilder: Troldspejlets Spilskolen, yoyogames.com Kilder: Troldspejlets Spilskolen, yoyogames.com Indholdsfortegnelse Gamemaker 7.0... 3 Installation... 3 Det første spil.... 5 Trin 1: Spilidéen... 5 Trin 2: Grafik og lyd.... 6 Trin 3: Objekter og spilpladen....

Læs mere

Sådan laver du en animationsfilm

Sådan laver du en animationsfilm Sådan laver du en animationsfilm i Animtoon Først skal du åbne Animtoon. I start menuen trykker du på Film Værkstedetikonet, som er billedet af et ben der går, se figur 1. Figur 1: Film Værkstedetikonet.

Læs mere

Arduino Programmering

Arduino Programmering Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået

Læs mere

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet.

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet. 8 3. Nedtælling Nu skal du lave en nedtæller. Det er en god måde at lære variabler på og hvordan du skal kode micro:bit til at gøre dét, du vil have, at den skal vise. Du skal bruge: 1 x BBC micro:bit

Læs mere

Fable Kom godt i gang

Fable Kom godt i gang Fable Kom godt i gang Opdateret: 26-03-2018 Indholdsfortegnelse 1. Først skal du installere programmet på din computer 3 2. Når programmet er installeret er du klar til at pakke robotten ud 4 3. Nu er

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 9 Andre designmønstre Andre designmønstre: Uforanderlig, Fluevægt, Lagdelt Initialisering, Komposit/Rekursiv Komposition, Kommando/Ændring Fremlæggelse af programmering/status

Læs mere

Sådan starter du PowerPoint vha. Start-knappen

Sådan starter du PowerPoint vha. Start-knappen Bliv en haj til IT i hverdagen 4.3 PowerPoint Microsoft PowerPoint er et præsentationsprogram, som kan bruges til at oprette flotte præsentationer, der enten kan udskrives eller afspilles på en computer.

Læs mere

Opgave: Digitalisering af et dokument

Opgave: Digitalisering af et dokument Denne opgave omhandler digitaliseringen af et Veje i Frederikssund Kommune. I opgaven gennemgås følgende: Oprettelse af mapper og sider på hjemmesiden Indsættelse af tekst, billeder, links til PDF og hjemmesider

Læs mere

02101 Indledende Programmering Introduktion til Eclipse

02101 Indledende Programmering Introduktion til Eclipse 02101 Indledende Programmering Introduktion til Eclipse Version 2018 1 Introduktion I dette kursus lægger vi op til at man bruger det integrerede udviklingsmiljø Eclipse. Basalt set er et integreret udviklingsmiljø

Læs mere

HCI (Human Computer Interaction)

HCI (Human Computer Interaction) HCI (Human Computer Interaction) HCI står for Human Computer Interaction, hvilket vil sige samspillet mellem computer og bruger. Det er en tankegang om at computeren skal være brugervenlig overfor den

Læs mere

Adobe Digital Editions

Adobe Digital Editions Adobe Digital Editions Kom godt i gang Klik på knapperne nedenfor for at komme videre Forberedelse Download Adobe Digital Editions: Til Windows TRYK HER Til Mac OS TRYK HER Bemærk: Adobe Digital Editions

Læs mere

Arbejde med 3D track motion

Arbejde med 3D track motion Arbejde med 3D track motion Gary Rebholz I sidste måneds Tech Tip artikel gennemgik jeg det grundlæggende i track motion. Selv om vi ikke gennemgår alle værktøjer i Track Motion dialog box vil du alligevel

Læs mere

ViKoSys. Virksomheds Kontakt System

ViKoSys. Virksomheds Kontakt System ViKoSys Virksomheds Kontakt System 1 Hvad er det? Virksomheds Kontakt System er udviklet som et hjælpeværkstøj til iværksættere og andre virksomheder som gerne vil have et værktøj hvor de kan finde og

Læs mere

Scratch. - introduktionshæfte

Scratch. - introduktionshæfte Scratch - introduktionshæfte Opret bruger 2 Det første, du skal gøre er at oprette dig som bruger, så dine projekter bliver gemt. Gå ind på scratch.mit.edu/ Vælg knappen Meld dig ind i Scratch i den øverste

Læs mere

Michael Jokil 11-05-2012

Michael Jokil 11-05-2012 HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...

Læs mere

Det er muligt at chekce følgende opg. i CodeJudge: og

Det er muligt at chekce følgende opg. i CodeJudge: og Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

SIGIL Sådan opretter du en e- bog Step by Step

SIGIL Sådan opretter du en e- bog Step by Step SIGIL Sådan opretter du en e- bog Step by Step Af Gitte Winter Graugaard Nov. 2013, Sigil version 0.7.2 1 Her følger en intro skridt for skridt til at oprette en e- bog i SIGIL og publicere den på SAXO

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere

Du kan også bruge Dropbox sammen med din Iphone, Android telefon eller anden smartphone.

Du kan også bruge Dropbox sammen med din Iphone, Android telefon eller anden smartphone. Dropbox Introduktion til Dropbox Dropbox er en online tjeneste, hvor man ganske gratis kan få noget lagerplads til sine dokumenter, billeder og meget mere. Der er mange muligheder med Dropbox, som bliver

Læs mere

Når du åbner Sportsplanner første gang, får du to muligheder. Åben opstilling og Ny opstilling.

Når du åbner Sportsplanner første gang, får du to muligheder. Åben opstilling og Ny opstilling. Sportsplanner I DGI Sportsplanner har du mulighed for at tegne redskabsbaner, som passer direkte på det sted, hvor du og dine gymnaster træner. De opstillinger du tegner har du mulighed for at få tilsendt

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge: Side 1 af 5 Ide med Diff. Min ide med differenertierings modulet er at lave et program som kan vise 3d objekter, og få lavede en konverter som kan konventer 3ds filer over til noget som flash kan bruge.

Læs mere

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold:

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold: Manual til Wordpress Sådan opdaterer du din hjemmeside i Wordpress: Dette er en manual til de mest grundlæggende ting, så du selv kan redigere indholdet eller tilføje nyt på din hjemmeside. Guiden er skrevet

Læs mere

Fable Kom godt i gang

Fable Kom godt i gang Fable Kom godt i gang Vers. 1.3.1 Opdateret: 29-08-2018 Indholdsfortegnelse 1. Installer programmet 3 2. Pak robotten ud 5 3. I gang med at programmere 6 4. Programmér Fable til at køre fra 90 til -90

Læs mere

At indsætte ord og billeder og brug af hjælpefunktionen.

At indsætte ord og billeder og brug af hjælpefunktionen. Udarbejdelse af kommunikationsbøger Noter og øvelser i forbindelse med at udarbejde kommunikationsbøger vha. programmet Phraseit (Genlyd). Følgende øvelser og instruktion er baseret på at Phrase-it 2.1

Læs mere

Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober 2003. Jonas Christiansen Voss

Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober 2003. Jonas Christiansen Voss Introduktion til CD ere og Arkivdeling Gammel Dok - September-oktober 2003 Jonas Christiansen Voss 2. marts 2004 Indhold 1 CD ere 2 1.1 Brænde dokumenter til CD....................... 2 1.2 Disk Copy.................................

Læs mere

Lav din egen forside i webtrees

Lav din egen forside i webtrees Lav din egen forside i webtrees Du behøver ikke at kunne kode eller gøre noget advanceret for at designe din helt egen forside i webtrees. Alt du skal gøre er bare at gøre brug af den indbygget editor.

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Oktober Dokumentpakker

Oktober Dokumentpakker Oktober 2017 Dokumentpakker Dokumentpakkerne er et værktøj til at udskrive dynamiske breve, som har en standardtekst i brevet, og hvor der automatisk sættes blandt andet patientens navn, adresse og aftaletid

Læs mere

MANUAL. Siteloom CMS

MANUAL. Siteloom CMS MANUAL Siteloom CMS www.hjerteforeningen.dk/cms Brugernavn: Password: 3. september, 2012 BASIS FUNKTIONER 1. Kalender... 4 1.a. Opret... 5 1.b. Rediger eller slet... 8 2. Sider... 10 2.a Opret side...

Læs mere

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Indholdsfortegnelse Opret engelsk version af hjemmesiden... 2

Indholdsfortegnelse Opret engelsk version af hjemmesiden... 2 Indholdsfortegnelse Opret engelsk version af hjemmesiden... 2 Indledning:... 2 Metode 1 en samling af sider, med kun en engelsk version:... 3 Metode 2 Eksisterende sider med både en dansk og en engelsk

Læs mere

Anvendelse af metoder - Programmering

Anvendelse af metoder - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur

Læs mere

Easy Guide i GallupPC

Easy Guide i GallupPC Easy Guide i GallupPC Version. 6.00.00 Gallup A/S Masnedøgade 22-26 DK 2100 København Ø Telefon 39 27 27 27 Fax 39 27 50 80 Indhold SÅDAN KOMMER DU I GANG MED AT ANVENDE GALLUPPC... 2 TILFØJELSE AF UNDERSØGELSER

Læs mere

Det Naturvidenskabelige Fakultet. Introduktion til Blackboard (Øvelser) Naturvidenskabeligt Projekt 2006 Prøv at forske

Det Naturvidenskabelige Fakultet. Introduktion til Blackboard (Øvelser) Naturvidenskabeligt Projekt 2006 Prøv at forske Det Naturvidenskabelige Fakultet Introduktion til Blackboard (Øvelser) Naturvidenskabeligt Projekt 2006 Prøv at forske Indholdsfortegnelse Introduktion til Blackboard Content System...3 Øvelse 01 individuel:

Læs mere

AgroSoft A/S AgroSync

AgroSoft A/S AgroSync AgroSoft A/S AgroSync AgroSync er et AgroSoft A/S værktøj, der bliver brugt til filudveksling imellem WinSvin og PocketPigs. Fordele ved at bruge AgroSync: Brugeren bestemmer overførsels tidspunktet for

Læs mere

Huskesedler. Design og automatisering af regneark. Microsoft Excel 2013

Huskesedler. Design og automatisering af regneark. Microsoft Excel 2013 Huskesedler Design og automatisering af regneark Microsoft Excel 2013 Januar 2017 Knord Side 2 Indholdsfortegnelse Ark... 4 Beskyttelse... 6 Diagram... 7 Eksport af data... 8 Fejlretning i formler... 9

Læs mere

NVivo-øvelser for PC. Når NVivo er åbent, kan importen ske på to måder:

NVivo-øvelser for PC. Når NVivo er åbent, kan importen ske på to måder: NVivo-øvelser for PC Før du går i gang med øvelserne, er det selvsagt nødvendigt at importere øvelsesmaterialet ind i NVivo. Der er her tale om fire nytårstaler (fra 1994, 2002, 2010 og 2012) som Word-dokumenter.

Læs mere

5.0 Velkommen til manualen for kanalen HTML-grab Introduktion til kanalen HTML-grab kanalside Hvad er et spot?

5.0 Velkommen til manualen for kanalen HTML-grab Introduktion til kanalen HTML-grab kanalside Hvad er et spot? 5.0 Velkommen til manualen for kanalen HTML-grab 1 5.1 Introduktion til kanalen 1 5.2 HTML-grab kanalside 1 5.2.1 Hvad er et spot? 2 5.2.2 Opret et nyt spot 2 5.2.3 Aktivt og inaktivt spot 3 5.2.4 Rediger

Læs mere

Hent filoplysninger fra billeder og filer

Hent filoplysninger fra billeder og filer Hent filoplysninger fra billeder og filer I denne vejledning bliver det gennemgået, hvordan man via Power Forespørgsel kan hente filoplysninger fra en mappe ind i Excel. Der skal opbygges følgende elementer:

Læs mere

Programmeringseksempel til CX/IPC

Programmeringseksempel til CX/IPC APP-NOTE 610004 Beckhoff Application Note Date: 7/17/2009 Document Status: 1.1 Beckhoff Automation Aps Naverland 2, DK-2600 Glostrup Phone +45 43 46 76 20 Fax +45 43 46 63 35 Programmeringseksempel til

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%

Læs mere

Vejledning for LOF s afdelingshjemmeside - redigeret i Umbraco

Vejledning for LOF s afdelingshjemmeside - redigeret i Umbraco Vejledning for LOF s afdelingshjemmeside - redigeret i Umbraco Adresse: http://dinafdeling.lof.dk/ Rediger hjemmeside i Umbraco: http://dinafdeling.lof.dk/umbraco/ HUSK ingen www i adressen, skriv blot

Læs mere

Dit personlige SkoleKom

Dit personlige SkoleKom Dit personlige SkoleKom Når du første gang åbner dit skrivebord på SkoleKom har det et standardudseende I form af en standard-baggrund og et standard-resumé. Du kan nu tilpasse baggrunden, så den passer

Læs mere

Tastevejledning Windows XP

Tastevejledning Windows XP Tastevejledning Windows XP Tastevejledningen dækker den danske udgave af Windows XP. Der er taget udgangspunkt i en standard installation, hvor der ikke er foretaget tilpasninger i skærmopsætning, valg

Læs mere

Daglig brug af JitBesked 2.0

Daglig brug af JitBesked 2.0 Daglig brug af JitBesked 2.0 Indholdsfortegnelse Oprettelse af personer (modtagere)...3 Afsendelse af besked...4 Valg af flere modtagere...5 Valg af flere personer der ligger i rækkefølge...5 Valg af flere

Læs mere

Filer og Mapper. Filer. Mapper

Filer og Mapper. Filer. Mapper Indhold Filer og Mapper... 3 Filer... 3 Mapper... 3 Stifinder... 4 Eksempler på stifinder... 5 Markering af drev, filer og mapper... 5 Vælg vilkårlige mapper/filer... 7 Selandias drev... 8 Opret ny mappe...

Læs mere

Arbejde med Regioner Lister, Playlists, og Cutlists i Sound Forge Pro

Arbejde med Regioner Lister, Playlists, og Cutlists i Sound Forge Pro Arbejde med Regioner Lister, Playlists, og Cutlists i Sound Forge Pro Gary Rebholz Du har sikkert allerede ved, at Sound Forge Pro software kan bruges til en imponerende række af audio opgaver. Alt fra

Læs mere

Trin for trin guide til Google Analytics

Trin for trin guide til Google Analytics Trin for trin guide til Google Analytics Introduktion #1 Opret bruger #2 Link Google Analytics til din side #3 Opret konto #4 Udfyld informationer #5 Gem sporings id #6 Download WordPress plugin #7 Vent

Læs mere

Brugermanual til Delta-Pacman

Brugermanual til Delta-Pacman Brugermanual til Delta-Pacman Side 1 Tillykke med dit nye spil Dette er brugervejledningen til dit nye Delta- Pacman. Du vil blive guidet en tur igennem funktionerne i spillet, og forhåbentlig få en god

Læs mere

Table of Contents Page 2

Table of Contents Page 2 SMARTBOARD Table of Contents Smart Notebook på ipad... 3 Installer App... 4 Smart Notebook skærmbilledet på ipad... 5 Brug fotos fra Ipad... 7 Sådan åbner du eksistende notebookfiler på din ipad... 9 Spil...

Læs mere

Kapitel 4 Løkker i C#

Kapitel 4 Løkker i C# Kapitel 4 Løkker i C# Løkker en vigtig del af alle programmeringssprog, og C# er ikke andeles. En løkke er en måde at udføre en del af koden gentagne gange. Ideen er at du fortsætter med at udføre en opgave

Læs mere

Høvdingebold. Introduktion. Scratch

Høvdingebold. Introduktion. Scratch Scratch 2 Høvdingebold All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register

Læs mere

OrCAD Capture TCL IDE med Eclipse

OrCAD Capture TCL IDE med Eclipse OrCAD Capture TCL IDE med Eclipse OrCAD Capture TCL er et script sprog til at lave applikationer til OrCAD Capture. Eclipse er et gratis udviklingsmiljø med debug muligheder. Denne guide hjælper med at

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Beredskab TNG. Beredskab TNG er en opgradering af det "gamle" beredskabsmodul i SecureAware, og er tilgængelig fra version 4.7.0.

Beredskab TNG. Beredskab TNG er en opgradering af det gamle beredskabsmodul i SecureAware, og er tilgængelig fra version 4.7.0. Beredskab TNG Beredskab TNG er en opgradering af det "gamle" beredskabsmodul i SecureAware, og er tilgængelig fra version 4.7.0. Beredskab TNG... 1 Kom godt i gang... 2 Redigér beredskabsdokumentet...

Læs mere

Elevvejledning til SkoleKomNet - Min egen hjemmeside

Elevvejledning til SkoleKomNet - Min egen hjemmeside Indledning...1 Sådan får du adgang...2 Dit KlasseWeb skrivebord Overblik...2 Dit arbejdsområde...3 Din hjemmeside på nettet...3 Sådan laver du en hjemmeside i 4 trin...3 Trin 1 Dit personlige billede på

Læs mere

Indholdsfortegnelse. Roskilde Tekniske Gymnasium Pernille K. Klavsen Klasse 1.2

Indholdsfortegnelse. Roskilde Tekniske Gymnasium Pernille K. Klavsen Klasse 1.2 Roskilde Tekniske Gymnasium Indholdsfortegnelse Indledning... 3 Analyse og planlægning... 4 Kommunikationsplan:... 4 Idéer:... 4 Krav- og testspecifikation... 5 Krav:... 5 Test:... 5 Design... 6 Farvevalg:...

Læs mere

Velkommen til IT for let øvede

Velkommen til IT for let øvede Velkommen til IT for let øvede at dias ligger på hjemmesiden, så I kan se dem igen hjemme. Peter har ordet Blev vi færdige med vinduerne?? Øvelse tastatur og mus vi ikke kunne sidste gang får I som hjemmeopgave

Læs mere

Adobe Elements Lektion 2

Adobe Elements Lektion 2 Adobe Elements Lektion 2 Så er det igen tid til at lege lidt med billeder. Jeg går ud fra, at du nu har fået opsat Elements efter de anvisninger du fik i sidste lektion. Start Elements op Gå ind i Edit

Læs mere

Edb-tekstbehandling, præsentation mm

Edb-tekstbehandling, præsentation mm Edb-tekstbehandling, præsentation mm I denne lektion skal du: - hente kopier et skærmbillede og sætte det ind i et dokument - beskære billedet, så det passer til dit dokument Der findes specielle programmer

Læs mere

Vejledning KPK Online Prøverum

Vejledning KPK Online Prøverum Vejledning KPK Online Prøverum INDHOLD Introduktion side 2 Funktionsliste side 2 Få adgang til systemet side 3 Opload dine billeder side 4 Sådan bruges systemet side 5 Gem dine eksempler side 7 Side 1/7

Læs mere

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet. Opsætning af Backup Dette er en guide til opsætning af backup med Octopus File Synchronizer. Det første der skal ske er, at programmet skal registreres (programmet kan dog bruges i 30 dage, hvis det ikke

Læs mere

Du har nu en genvej på dit skrivebord hen til den mappe hvor dine filer med bøgerne kommer til at ligge, den virkelige sti = c:\bøger.

Du har nu en genvej på dit skrivebord hen til den mappe hvor dine filer med bøgerne kommer til at ligge, den virkelige sti = c:\bøger. Download af bøger i MP3 format Side 1 af 6 Forudsætninger for at kunne benytte denne mulighed er: En computer med rimelig diskplads (hvert bog fylder små 200 MB). En god Internetforbindelse, for ikke at

Læs mere

Table of Contents. Prøveværktøj

Table of Contents. Prøveværktøj PRØVEVÆRKTØJ Table of Contents Opret prøve og tilpas dit fronter-rum... 3 Opret prøve... 4 Tilføj prøveværktøj... 6 Fanen "Indstillinger"... 11 Indstillinger for vindue... 15 Mappe til billeder/multimedier...

Læs mere

Installation af GPS med tilslutning til USB port

Installation af GPS med tilslutning til USB port Indholdsfortegnelse Opsætning af GPS-tilslutning... 1 1: Installation af driver... 2 2: Opsætning af COM-port... 2 3: Vælg COM-port i DLS NG... 3 4: Brug af GPSViewer testprogram... 5 5: Hvis COM-port

Læs mere

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003 Side 1 af 8 Dato: 14-05-2003 Til Sigurd Som aftalt vil jeg her fremsende vores program til vores 80C535 kit og display. Det gik jo ud på at vi skulle starte med at få den til at intialiserer displayet,

Læs mere

Mircobit Kursus Lektion 1

Mircobit Kursus Lektion 1 Mircobit Kursus Lektion 1 I denne lektie skal vi se nærmere på den lille mini computer kaldt microbit. Egentlig kræver det at man har en fysisk microbit men man kan også næsten lave det samme med den simulator

Læs mere

Opret prøve og tilpas dit fronter-rum Spørgsmålstyper og justering Oversigt over spørgsmålstyper...20 Justering af spørgsmål og sider...

Opret prøve og tilpas dit fronter-rum Spørgsmålstyper og justering Oversigt over spørgsmålstyper...20 Justering af spørgsmål og sider... PRØVEVÆRKTØJ Table of Contents Opret prøve og tilpas dit fronter-rum... 3 Opret prøve... 4 Tilføj prøveværktøj... 6 Fanen "Indstillinger"...11 Indstillinger for vindue...15 Mappe til billeder/multimedier...17

Læs mere

AgeForce MINI vejledning

AgeForce MINI vejledning AgeForce MINI vejledning Velkommen til AgeForce et enkelt og sikkert netværk for dig over 50 I denne korte guide fortæller vi dig hvordan du: - Opretter en gratis profil på www.ageforce.dk. - Redigerer

Læs mere

Brugermanual til Assignment hand in

Brugermanual til Assignment hand in Brugermanual til Assignment hand in Indhold: Undervisere:...2 Hvor finder jeg Assignment hand in?...2 Opret en opgave...4 Slet en opgave...5 Rediger en opgave...5 Hvor finder jeg de afleverede filer?...5

Læs mere

Organisering af billeder.

Organisering af billeder. Organisering af billeder. Da du startede Picasa op for første gang, havde du mulighed for at scanne hele computeren igennem for billeder eller lade Picasa holde øje med nogle bestemte mapper (mine billeder,

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

Programmering I Java/C#

Programmering I Java/C# Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren

Læs mere

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database Kursusbeskrivelse Oprettelse af en Access-database Som eksempel på en Access-database oprettes en simpelt system til administration af kurser. Access-databasen skal indeholde: et instruktørkartotek et

Læs mere

Weebly- vejledning. Lav din egen hjemmeside let og smertefrit

Weebly- vejledning. Lav din egen hjemmeside let og smertefrit 1 Weebly- vejledning Lav din egen hjemmeside let og smertefrit 1. Gå ind på flg. adresse: www.weebly.com 2. Opret dig som bruger (gratis): 2 3. Kom godt i gang: For at komme i gang med 1. side skal du

Læs mere

Fang Prikkerne. Introduktion. Scratch

Fang Prikkerne. Introduktion. Scratch Scratch 2 Fang Prikkerne All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club. Introduktion

Læs mere

I denne manual kan du finde en hurtig introduktion til hvordan du:

I denne manual kan du finde en hurtig introduktion til hvordan du: VORES NORDSJÆLLAND HURTIGT I GANG MANUAL 01: Bruger HVAD INDEHOLDER DENNE MANUAL? I denne manual kan du finde en hurtig introduktion til hvordan du: 1. Finder Vores Nordsjælland hjemmesiden 2. Opretter

Læs mere

It-@fdelingen UC Syddanmark 7266 2400

It-@fdelingen UC Syddanmark 7266 2400 UNI-Login Installation af SkoleKom og ændring af kodeord SkoleKom er et udbredt mail- og konferencesystem i skoleverdenen i Danmark. For at komme på SkoleKom, skal du oprettes som bruger, hvor du får 3

Læs mere

Kom i gang med Course Tool 1.2

Kom i gang med Course Tool 1.2 Kom i gang med Course Tool 1.2 Indhold Indledning...2 Pris beregning...2 Anvendelse...2 Open Source...2 Anbefalinger...2 Installation...3 USB-Pen...3 Download Libre Office (Draw)...3 Indstil makrosikkerhed...4

Læs mere

INTRO TIL GOOGLE DREV

INTRO TIL GOOGLE DREV 1 UDOVER AT VÆRE ET PRAKTISK STED AT GEMME SINE TING I SKYEN, SÅ ER GOOGLE DREV OGSÅ INDGANGEN TIL GODE SAMARBEJDS- OG DELEVÆRTKØJER: DET ER MULIGT BÅDE AT GIVE SE, KOMMENTERINGS- OG REDIGERINGSADGANG

Læs mere

I gang med dit Gamer: bit Arkade Kit Denne guide er oversat og en smule forenklet fra Sparkfuns Hook-Up guide

I gang med dit Gamer: bit Arkade Kit Denne guide er oversat og en smule forenklet fra Sparkfuns Hook-Up guide I gang med dit Gamer: bit Arkade Kit Denne guide er oversat og en smule forenklet fra Sparkfuns Hook-Up guide Gamer: Bit Carrier Board er en docking-station til micro:bit, som gør det nemt at anvende alle

Læs mere

DMX styring med USB-interface

DMX styring med USB-interface DMX styring med USB-interface Introduktion...2 DMX bibliotek...3 Programmering af kanaler...7 Sådan skabes et show/en lyssekvens...11 Introduktion DMX LightPlayer er en avanceret men meget brugervenlig

Læs mere

Vejledning til brug af FirstClass

Vejledning til brug af FirstClass Vejledning til brug af FirstClass - opdateret januar 2013 Indhold Installation af FirstClass foretages kun første gang... 2 Hent FirstClass-klienten... 2 Installer FirstClass-klienten... 3 Ændre kodeord...

Læs mere