C# spil (del 3) - Space Invaders, sådan!

Størrelse: px
Starte visningen fra side:

Download "C# spil (del 3) - Space Invaders, sådan!"

Transkript

1 Denne guide er oprindeligt udgivet på Eksperten.dk C# spil (del 3) - Space Invaders, sådan! Artiklen indeholder implementeringen af spillet Space Invaders, og forklarer overordnet ideen bag. Sprite- og Kollisionsklasser fra C# spil (del 2), skal bruges i denne artikel. Kendskab til del 1 & 2 er en klar fordel! Skrevet den 05. Feb 2009 af sovsekoder I kategorien Programmering / C# Indledning Denne artikel vil præsentere og kommentere koden til et space invaders spil. Kendskab til C# spil (del1 & del2) er en stor fordel. Sidst i artiklen findes den komplette source-code, og en forklaring til projektets opsætning. Source coden til BlockSprite- og SpriteCollision kan findes i C# spil del 2. Pga. at det er besværligt at copy/paste koden ind og se spillet i aktion, har jeg gjort det muligt at downloade VS2003 C# projektet her : Så starter vi :o Tilstands maskiner Spillet indeholder 3 tilstandsmaskiner: 1) spil-tilstandsmaskine, styrer spillets tilstande: vent på nyt spil, nyt spil, game over... 2) invader-flytnings tilstandsmaskine. 3) Spiller tilstande: spiller skyder, spiller skyder ikke. Disse tilstands maskiner sørger for spillets "flow" - at spillet kører korrekt, og overholder de givne regler for "Space Invaders". Bevægelses mønster for Space Invaders Jeg vil starte med tilstandsmaskine (2) - den der styrer invaders. Invaders skal styres rigtigt rundt på skærmen, de skal gå fra højre mod venstre indtil den invader længst mod højre rammer kanten. Herefter bevæger de sig et hak ned. Hvorefter de bevæger sig tilbage fra højre mod venstre, indtil den invader længst mod venstre rammer højre kant. Herefter vandrer invaders et hak ned igen. Bevægelsen gentages, men! - når invaders når bunden har spilleren tabt. For at kunne implementere dette bevægelses mønster, har vi brug for en tilstands maskine, og en go' plan :). Den go'e plan består i at være i stand til at finde ud af, hvornår invaders er nået højre kant, venstre kant og bunden. Dette foretages i metoden FindBorderSprites(), for go' pedagoisk ro og orden er disse invaders farvet rød, blå og gul - så man kan se at algoritmen virker. Vi har nu: Blå invader => længst til venstre Gul invader => længst til højre Rød invader => længst nede. Igen.. farven er der kun for at understrege algoritmens virkemåde. Algoritmen virker således at, når blå sprite rammer venstre kant skal invaders bevæge sig ned. Når gul sprite rammer højre kant bevæger invaders sig ned. Når rød sprite har nået bunden, har spilleren tabt!

2 Tilstands maskinen er nu i stand til at flytte invader rundt. Vi har 4 tilstande: MoveRight, MoveLeft, MoveDownLeft, MoveDownRight MoveRight og MoveLeft giver mere eller mindre sig selv: disse tilstande flytter invaders til højre og ventre. Det er dog mere underligt at der er to tilstande til at flytte invaders ned, hvorfor er der det?!!? Grunden til at vi skal bruge to tilstande til at flyte invaders ned er, at vi har brug for en forskellig overgang når invaders er flyttet et hak ned. Hvis vi kom fra højre, og har nået kanten - så går vi ned, og herefter skal vil til VENSTRE!. Hvis vi kom fra venstre og rammer kanten, går vi ned - men skal herefter gå til HØJRE!. Bevægelsen kan skrives på følgende måde: MoveRight => ModeDownRight ModeDownRight => MoveLeft MoveLEft => MoveDownLEft MoveDownLeft => MoveRight, og bevægelsen går i ring. Vi kunne godt ha' implementeret bevægelsen med blot 3 tilstande (kun een tilstand til at bevæge sig ned) - dette ville dog kræve en varibel som skulle sættes ved overgangen fra MoveLeft og MoveRight. Det er en smags-sag hvorvidt man vil benytte den ene eller den anden metode - den ene er ikke mere rigtig (eller forkert) end den anden. Spiller-tilstandsmaskine Denne tilstandsmaskine styrer spilleren. Denne tilstandsmaksine har 2 tilstande: Fire, Idle. Disse tilstande tages i brug når der trykkes på musen. Reglerne er således at der kun må være eet skud på skærmen af gangen. Så når der trykkes på musen tjekkes det om spilleren er i Fire-tilstanden, hvis dette er tilfældet ignoreres trykket, ellers skydes der. Spiler tilstanden ryger tilbage i idle, når skuddet når udover spilrammen. Spil-tilstandsmaskinen Denne tilstandsmaksine styrer spillet. Denne tilstandsmaskine benyttes primært i gameloop, der kaldes løbende vha. timeren (artikkel 1). Men tilstandsmaskinen benyttes også i f.eks. MouseDown-metoden, der kaldes når der trykkes på musen. Grunden til dette er at musse-tryk har flere funktioner. Et musse tryk kan betyde at spilleren skyder, men når man ikke er inde i spillet (dvs. vi venter på at et nyt spil skal starte) så betyder et mussetryk at spillet skal starte. Spil-tilstands maskinen benyttes til at fortolke musse-trykket på den rigtige måde (se koden i MouseDown). Spil-tilstandsmaskinen har en tilstand, GameOver, der angiver at du har tabt. Når tilstanden sættes = GameOver, så er spillet slut og der vises en besked ("ARGGG - du er død"). Dette udnyttes f.eks. ved at have en CollisionListener der lytter på om invader-skud har ramt spillen. Den eneste kode der er i denne lytter er: gamestate = GameStates.GameOver; - Hvilket straks sætter tilstanden til GameOver når spilleren rammes af et skud - enkelt! Spil-tilstandsmaskinen benyttes også i OnPaint -der tegner formen. I dette spil bruges tilstandsmaskinen til at vise de korrekte tekst beskeder som: "Tryk musen for start.." (start af nyt spil)

3 "Op med hastigheden!" (næste level) "ARGG - du er død!" (gameover) Spil-tilstanden: PlayLevel - spillet er i fuld gang I Spil-tilstanden, PlayLevel - spilles spillet. I denne tilstand skal invaders opdateres - spilleren skal flyttes, kort sagt her skal vi sørge for at opdatere alt så spillet foregår korrekt. I følgende kode ses implementeringen af denne tilstand: case GameStates.PlayLevel: // Her kæmpes der mod invaders // - bevægelse af spiller, samt styring af skud // - bevægelse af invaders // - bevægelse af missiler // - Tjek for kollisioner // - Tjek for game over ell. sejr PlayerAction(); MoveInvaders(); InvaderAttack(); MoveMissiles(); collisions.check(); CheckForGameOver(); CheckForPlayerWin(); PlayerAction(): Denne funktion fyrer et missil af, afhængigt af spiller-tilstanden. Herefter flyttes spilleren i retning af musen. Forstået således at spilleren flyttes til højre hvis musen er tilhøjre for spilleren, og omvendt. MoveInvaders(): Her tages invader-tilstandsmaskinen i brug, og invaders flyttes efter algoritmen beskrevet tidligere. InvaderAttack(): Her vælges tilfældige invarders til at skyde. Der er et øvre loft på antallet af skud fra invaders (i konstanten: invadermissilecount), så hvis dette loft er nået skydes der slet ikke før et af missilerne af ude over spil-rammen. MoveMissiles(): Denne funktion sørger for at flytte missilerne. Der er i denne forbindelse oprettet en klasse, Missile. Dette er gjort for at vise hvordan man kan nedarve fra BlockSprite-klassen. I denne nedarvet klasse findes en metode, AutoMove, der opdaterer missilet. Missilet flyttes op eller ned afhængigt af hvordan det er oprettet (spilleren missiler flyttes op, invader-missiler flyttes ned). I denne nedarvet klasse kan man implementere Draw. På denne måde kan man tegne bitmaps, altså rigtige figurer istedet for bare sorte kasser. collisions.check(): her tjekkes for kollisioner, og listeners kaldes hvis der er sprites der har kollideret. CheckForGameOver(): har spilleren tabt? hvis dette er tilfældet justeres spi-tilstanden med det sammen. CheckForPlayerWin(): Der tjekkes om spilleren har vundet, hvis dette er tilfældet sættes næste level op (hvor det går en tand hurtigere). Space invaders Ideerne omkring implementeringen af space invaders er nu ridset op. Du kan kopiere source koden ind i et windows-form projekt, og se spillet i fuld aktion. Når spillet kører kan man få en fornemmelse af de ting jeg

4 har gennemgået i artiklen. Det kan varmt anbefales at kigge koden igennem, start i metoden GameLoop(). Følg metoderne rundt, tegn evt. et diagram over tilstandende i tilstandsmaskinerne - for at få fornemmelsen af logikken. Prøv at skyde den blå/gule/røde invader, og se hvordan en ny invader findes for at opretholde algoritmen til invader-bevægelses mønstret. Go' fornøjelse :D Source code Sådan får du koden op at køre: Opret et windows form projekt. Filen med formen hedder Form1.cs. Følgende liste viser hvilke filer projektet skal bestå af: * Form1.cs (DEL3)- selve spillet * Missile.cs (DEL3)- missilsprite nedarvet fra BlockSprite * SpriteCollision.cs (DEL2)- håndtering af sprite kollision * BlockSprite.cs (DEL2)- visning af sprites (DEL3) betyder at source-coden findes i denne artikel. (DEL2) betyder at source-coden er i artiklen C# spil (del 2). Form1.cs using System; using System.Drawing; using System.Collections; using System.Windows.Forms; namespace SpaceInvaders public class Form1 : System.Windows.Forms.Form // konstanter der bruges af andre klasser public const int TopBorder = 10; public const int LeftBorder = 10; public const int RightBorder = 250; public const int LowerBorder = 250; // Konstanter relateret til invaders const int invadersize = 10; const int invaderrows = 5; const int invadercolumns = 10; const int invadermissilecount = 3; // Størrelsen af spiller spriten const int playersize = 20; // Tekstrenge der vises i spillet const string newgame = "Tryk musen for start.."; const string nextlevel = "Op med hastigheden!"; const string gameover = "ARGG - du er død!"; // Spillets Sprite variable

5 SpriteCollision collisions; BlockSprite[,] invaders; BlockSprite playersprite; Missile playermissile; Missile[] invadermissiles = new Missile[invaderMissileCount]; BlockSprite leftmostsprite; BlockSprite rightmostsprite; BlockSprite lowestsprite; // Spil variable int score; int level; string gametext = ""; // Overordnede Spil-tilstande enum GameStates InitializeNewGame, WaitForNewGame, PrepareNextLevel, PlayLevel, GameOver ; GameStates gamestate; // invader flytte-tilstande enum MoveStates Left, Right, DownLeft, DownRight, ; MoveStates movestate; // spiller tilstande enum PlayerStates Idle, Fire PlayerStates playerstate; // Variabler relateret til bevægelse af invaders int invadermovedowncounter; int invadermovedelay; int invadermoveclock; // Bruges til tilfældige tal Random rnd; private System.Windows.Forms.Timer timer1; private System.ComponentModel.IContainer components;

6 public Form1() // // Required for Windows Form Designer support // InitializeComponent(); // Tegn med double-buffering SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.DoubleBuffer, true); // Initialiser spillet InitializeGame(); rnd = new Random(this.Handle.ToInt32()); // Set formens størrelse så der er plads til hele spillet const int slagx = 100; const int slagy = 40; this.size = new Size(RightBorder+LeftBorder+slagX, TopBorder+LowerBorder+slagY); #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() this.components = new System.ComponentModel.Container(); this.timer1 = new System.Windows.Forms.Timer(this.components); // // timer1 // this.timer1.enabled = true; this.timer1.interval = 10; this.timer1.tick += new System.EventHandler(this.Gameloop); // // Form1 // this.autoscalebasesize = new System.Drawing.Size(5, 13); this.clientsize = new System.Drawing.Size(456, 350); this.name = "Form1"; this.text = "Form1"; this.mousedown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown); this.paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint); #endregion // Initialiser alt i spillet void InitializeGame()

7 InitializeGameVariables(); InitializeSprites(); // Initialiser spillets variable void InitializeGameVariables() // Initialiser spil-tilstands maskinen gamestate = GameStates.InitializeNewGame; // nul-stil score og level score = 0; level = 0; // Initialiser variable der styrer invaders invadermovedowncounter = 0; invadermovedelay = 5; invadermoveclock = 0; // Initialiser alle sprites i spillet void InitializeSprites() movestate = MoveStates.Right; playerstate = PlayerStates.Idle; leftmostsprite = null; rightmostsprite = null; lowestsprite = null; collisions = new SpriteCollision(); // Opret spiller playersprite = new BlockSprite(LeftBorder, LowerBorder-playerSize, playersize, playersize); // Opret missiler for spiller og invader playermissile = new Missile(0, 0, true); playermissile.visible = false; playermissile.color = Color.Blue; // Opret invader-missiler for(int i=0; i<invadermissiles.length; i++) invadermissiles[i] = new Missile(0, 0, false); invadermissiles[i].speed = 1; invadermissiles[i].visible = false; invadermissiles[i].color = Color.Red; // Opret SpaceInvaders invaders = new BlockSprite[invaderRows,invaderColumns];

8 for(int i=0; i<invaderrows; i++) for(int j=0; j<invadercolumns; j++) invaders[i,j] = new BlockSprite(LeftBorder+j*(invaderSize*2), TopBorder+i*(2*invaderSize), invadersize, invadersize); // Sæt kollision lyttere op mellem invaders og missil for(int i=0; i<invaderrows; i++) for(int j=0; j<invadercolumns; j++) if(spriteexist(invaders[i,j])) collisions.addlistener(playermissile, invaders[i,j], new CollisionDelegate(PlayerMissileHandler)); // Sæt kollision lytter om mellem invader missiler og player for(int i=0; i<invadermissiles.length; i++) collisions.addlistener(invadermissiles[i], playersprite, new CollisionDelegate(InvaderMissileHandler)); // Initialiser grænse sprites (invaders) FindBorderSprites(); // Find de yderste invaders - så invaders ved hvornår de er nået til kanten void FindBorderSprites() BlockSprite leftmostspritetemp = leftmostsprite; BlockSprite rightmostspritetemp = rightmostsprite; BlockSprite lowestspritetemp = lowestsprite; for(int i=0; i<invaderrows; i++) for(int j=0; j<invadercolumns; j++) if(!spriteexist(invaders[i,j])) continue; if(!spriteexist(leftmostsprite)) if(!spriteexist(leftmostspritetemp)) leftmostspritetemp = invaders[i,j]; else if(invaders[i,j].x<leftmostspritetemp.x) leftmostspritetemp = invaders[i,j]; if(!spriteexist(rightmostsprite))

9 if(!spriteexist(rightmostspritetemp)) rightmostspritetemp = invaders[i,j]; else if(invaders[i,j].x>rightmostspritetemp.x) rightmostspritetemp = invaders[i,j]; if(!spriteexist(lowestsprite)) if(!spriteexist(lowestspritetemp)) lowestspritetemp = invaders[i,j]; else if(invaders[i,j].y>lowestspritetemp.y) lowestspritetemp = invaders[i,j]; // Updater grænse-sprites hvis det er nødvendigt if(!spriteexist(leftmostsprite)) leftmostsprite = leftmostspritetemp; if(!spriteexist(rightmostsprite)) rightmostsprite = rightmostspritetemp; if(!spriteexist(lowestsprite)) lowestsprite = lowestspritetemp; // Sæt farven på grænse sprites (invaders) leftmostsprite.color = Color.Blue; rightmostsprite.color = Color.Yellow; lowestsprite.color = Color.Red; // Bevæg invaders void MoveInvaders() FindBorderSprites(); if(invadermoveclock++ < invadermovedelay) return; invadermoveclock = 0; int dx=0, dy=0; switch(movestate) case MoveStates.DownLeft: dy = 1; invadermovedowncounter++; if(invadermovedowncounter==invadersize) invadermovedowncounter = 0; movestate = MoveStates.Right; case MoveStates.DownRight: dy = 1; invadermovedowncounter++; if(invadermovedowncounter==invadersize) invadermovedowncounter = 0; movestate = MoveStates.Left;

10 case MoveStates.Left: dx = -1; if(leftmostsprite.x<=leftborder) dx = 0; invadermovedowncounter = 0; movestate = MoveStates.DownLeft; case MoveStates.Right: dx = 1; if(rightmostsprite.x+rightmostsprite.width>=rightborder) dx = 0; invadermovedowncounter = 0; movestate = MoveStates.DownRight; // Flyt invaders for(int i=0; i<invaderrows; i++) for(int j=0; j<invadercolumns; j++) if(spriteexist(invaders[i,j])) invaders[i,j].x += dx; invaders[i,j].y += dy; // Se om der findes flere invaders bool MoreInvadersAlive() return ( SpriteExist(leftMostSprite) SpriteExist(rightMostSprite) SpriteExist(lowestSprite)); // Check om spilleren har vundet (ikke flere space invaders) void CheckForPlayerWin() if(moreinvadersalive() == false) // Du har skudt alle invaders, du vinder dette level! gamestate = GameStates.PrepareNextLevel;

11 // Tjek om spilleren har tabt fordi invaders har nået bunden void CheckForGameOver() if(spriteexist(lowestsprite) && (lowestsprite.y>=playersprite.y)) gamestate = GameStates.GameOver; // Håndtering af musse tryk afhængig af gamestate private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) switch(gamestate) case GameStates.PlayLevel: playerstate = PlayerStates.Fire; case GameStates.WaitForNewGame: gamestate = GameStates.PlayLevel; case GameStates.PrepareNextLevel: gamestate = GameStates.PlayLevel; case GameStates.GameOver: gamestate = GameStates.InitializeNewGame; // Håndtering af tilfældig invader skud void InvaderAttack() for(int m=0; m<invadermissiles.length; m++) if(!spriteexist(invadermissiles[m])) int k = rnd.next(invaderrows*invadercolumns)+1; int i=0; int j=0; while(k>0) i++; if(i>=invaderrows) i=0; j++; if(j>=invadercolumns) j=0; if(spriteexist(invaders[i,j])) k--;

12 invadermissiles[m].x = invaders[i,j].x+invadersize/2; invadermissiles[m].y = invaders[i,j].y+invadersize/2; invadermissiles[m].visible = true; // Håndtering af spillerens aktioner void PlayerAction() switch(playerstate) case PlayerStates.Fire: if(playermissile.visible == false) FireTheMissile(); playerstate = PlayerStates.Idle; case PlayerStates.Idle: Point mouselocation = PointToClient(MousePosition); int centerspritex = playersprite.x+playersprite.width/2; if(mouselocation.x > centerspritex) if(playersprite.x < RightBorder-playerSize) playersprite.x++; else if(mouselocation.x < centerspritex) if(playersprite.x > LeftBorder) playersprite.x--; // Hoved Gameloop private void Gameloop(object sender, System.EventArgs e) switch(gamestate) case GameStates.InitializeNewGame: // Initialisering af spillet InitializeGame(); gamestate = GameStates.WaitForNewGame; case GameStates.WaitForNewGame: // Her ventes på musse tryk i Form1_MouseDown case GameStates.PrepareNextLevel: // Forbered det næste level_ // - Sæt hastigheden op, opdater level værdi // - Genindlæs sprites på deres positioner

13 if(invadermovedelay>0) invadermovedelay--; level++; InitializeSprites(); gamestate = GameStates.WaitForNewGame; case GameStates.PlayLevel: // Her kæmpes der mod invaders // - bevægelse af spiller, samt styring af skud // - bevægelse af invaders // - bevægelse af missiler // - Tjek for kollisioner // - Tjek for game over ell. sejr PlayerAction(); MoveInvaders(); InvaderAttack(); MoveMissiles(); collisions.check(); CheckForGameOver(); CheckForPlayerWin(); case GameStates.GameOver: // Her ventes på musse tryk i Form1_MouseDown // Paint screen Invalidate(true); // Fyr spillerens missil af void FireTheMissile() // Fyr missil af fra midten af spiller-spriten playermissile.x = playersprite.x+playersprite.width/2; playermissile.y = playersprite.y; playermissile.visible = true; // Flyt alle missiler i spillet void MoveMissiles() if(spriteexist(playermissile)) playermissile.automove(); for(int i=0; i<invadermissiles.length; i++) if(spriteexist(invadermissiles[i])) invadermissiles[i].automove(); // Tjek om en given sprite eksisterer

14 bool SpriteExist(BlockSprite sprite) if(sprite!= null && sprite.visible == true) return true; else return false; // Håndtering af kollision mellem spiller missil og invaders public void PlayerMissileHandler(object sender) Listener l = (Listener) sender; playermissile.visible = false; l.sprite2.visible = false; l.remove = true; score += 10; // Håndtering af kollision mellem invader missiler og spiller public void InvaderMissileHandler(object sender) gamestate = GameStates.GameOver; // Tegn grafikken inde i spillet void DrawGameGraphics(Graphics g) g.drawrectangle(new Pen(Color.Black), LeftBorder, TopBorder, RightBorder-LeftBorder, LowerBorder-TopBorder); g.drawstring( string.format("score: 0:000000\n\nLevel: 1:000",score,level), this.font, new SolidBrush(Color.Black), RightBorder+10, TopBorder); if(spriteexist(playermissile)) playermissile.draw(g); if(spriteexist(playersprite)) playersprite.draw(g); for(int i=0; i<invadermissiles.length; i++) if(spriteexist(invadermissiles[i])) invadermissiles[i].draw(g); if(invaders!= null) for(int i=0; i<invaderrows; i++) for(int j=0; j<invadercolumns; j++) if(spriteexist(invaders[i,j])) invaders[i,j].draw(g);

15 // Skriv tekst ud centreret i spil-rammen void CenterText(Graphics g, string text) SizeF textsize = g.measurestring(text, this.font); g.drawstring( text, this.font, new SolidBrush(Color.Black), (RightBorder-LeftBorder-textSize.Width)/2+LeftBorder, TopBorder+(LowerBorder-TopBorder)/2); // Tegning af spillet private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) Graphics g = e.graphics; DrawGameGraphics(g); // Gamestate afhængig grafik switch(gamestate) case GameStates.PrepareNextLevel: gametext = nextlevel; case GameStates.InitializeNewGame: gametext = newgame; case GameStates.GameOver: gametext = newgame; CenterText(g, gameover); case GameStates.WaitForNewGame: CenterText(g, gametext); /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) if( disposing ) if (components!= null) components.dispose();

16 base.dispose( disposing ); [STAThread] static void Main() Application.Run(new Form1()); Missile.cs using System; namespace SpaceInvaders // Missile: Nedarvet klasse fra BlockSprite, tilføjer 2 properties og 1 metode // Properties: // - up : angiver om missilen flyver op eller ned // - speed : angiver hvor hurtigt missilet flyver. // Metode: // - AutoMove : Opdaterer missilets position public class Missile : BlockSprite const int missilewidth = 2; const int missileheight = 8; int speed = 7; bool up = true; // kun til sjov double t=0; public Missile(int x, int y, bool up) : base(x,y,missilewidth,missileheight) this.up = up; public void AutoMove() /* // Sjove skud :) if(up) t += Math.PI/20; double dx = 5*Math.Sin(t); base.x += (int)(dx); */

17 if(up) if(base.y < Form1.TopBorder) base.visible = false; else base.y -= speed; else if(base.y > Form1.LowerBorder) base.visible = false; else base.y += speed; public int Speed get return this.speed; set this.speed = value; public bool Up get return this.up; set this.up = value; Kommentar af mikze d. 16. Nov Cool :) Kommentar af mmbn d. 11. Nov Super artikel, kan næsten ikke vente på del 4 og 5. Kommentar af sorenbs d. 13. Jul Man kan virkeligt få brugt noget tid på det skidt :) Jeg glæder mig til de næste 2 artikler Kommentar af andr3as d. 30. Nov ok Kommentar af qbus d. 31. Oct Alletiders artikel :) Er igang med at lave dette spil: ud fra principperne i din artikel, dog med ændringer selvfølgelig :P Kommentar af tobiasahlmo d. 24. Jan

18 Nice :) Kommentar af sovsekoder d. 23. Feb kig evt. på mit codeplex projekt ang. XNA og platform spil:

C# spil (del 2) - Tilstandmaskiner i spil

C# spil (del 2) - Tilstandmaskiner i spil Denne guide er oprindeligt udgivet på Eksperten.dk C# spil (del 2) - Tilstandmaskiner i spil Denne artikkel omhandler brugen af tilstandmaskiner i spil. Tilstandsmaskiner kan bruges til at styre logikken

Læs mere

C# spil (del 1) - Kom i gang med et simpelt spil

C# spil (del 1) - Kom i gang med et simpelt spil Denne guide er oprindeligt udgivet på Eksperten.dk C# spil (del 1) - Kom i gang med et simpelt spil Denne artikel starter helt fra grunden (med GDI). Den viser hvordan man undgår flimmer, og hvordan man

Læs mere

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),

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

Java Klasse nedarvninger

Java Klasse nedarvninger Denne guide er oprindeligt udgivet på Eksperten.dk Java Klasse nedarvninger Et let lille overblik i hvordan klasse nedarvning virker i java Skrevet den 07. dec 2011 af mochners I kategorien Programmering

Læs mere

I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal.

I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal. Denne guide er oprindeligt udgivet på Eksperten.dk Afrund til helt tal I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal. Skrevet den 03. Feb 2009 af tjomsen I kategorien

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

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Denne guide er oprindeligt udgivet på Eksperten.dk Tilfældige tal Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge. Den forudsætter

Læs mere

Singleton pattern i C#

Singleton pattern i C# Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i C# Denne artikel beskriver Singleton pattern og implementation i C#. Den forudsætter kendskab til C# men ikke til Singleton. Der er

Læs mere

At klippe en streng over på det mest hensigtsmæssige sted

At klippe en streng over på det mest hensigtsmæssige sted Denne guide er oprindeligt udgivet på Eksperten.dk At klippe en streng over på det mest hensigtsmæssige sted Formålet med denne artikel er at kaste lidt lys over, hvordan man klipper en streng over på

Læs mere

Singleton pattern i Java

Singleton pattern i Java Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.

Læs mere

Bits, bit operationer, integers og floating point

Bits, bit operationer, integers og floating point Denne guide er oprindeligt udgivet på Eksperten.dk Bits, bit operationer, integers og floating point Denne artikel beskriver hvordan data gemmes som bits og hvordan man kan manipulere med bits. Den forudsætter

Læs mere

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Der findes en tilsvarende artikel med

Læs mere

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af XML i C# Denne artikel vil vise lidt om hvordan man kan bruge XML i C#. Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

Læs mere

Undtagelseshåndtering i C#

Undtagelseshåndtering i C# Denne guide er oprindeligt udgivet på Eksperten.dk Undtagelseshåndtering i C# I modsætning til C++ kan man i C# ikke skrive et program uden undtagelseshåndtering, så derfor har jeg skrevet denne guide

Læs mere

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections; PROGRAM using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace EventManager class Program static void Main(string[] args) string hovedmenu = ""; string svar;

Læs mere

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

Send  fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende  fra Java. Denne guide er oprindeligt udgivet på Eksperten.dk Send email fra Java Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende email fra Java. Simple eksempler ikke noget vildt

Læs mere

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11 DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4

Læs mere

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter

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

//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

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

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

Mircobit Kursus Lektion 4 (Du skal her vælge Lets Code Og herefter Block Editor.)

Mircobit Kursus Lektion 4   (Du skal her vælge Lets Code Og herefter Block Editor.) Mircobit Kursus Lektion 4 http://microbit.org/ (Du skal her vælge Lets Code Og herefter Block Editor.) I sidste lektion var der en opgave man selv skulle prøve at løse. I skulle lave et stop ur man kunne

Læs mere

Plugin-arkitektur med.net

Plugin-arkitektur med.net Denne guide er oprindeligt udgivet på Eksperten.dk Plugin-arkitektur med.net Denne artikel viser hvordan du kan lave en plugin-arkitektur i dit program. Gør det muligt for andre at skrive udvidelser til

Læs mere

Tagwall med Php & MySQL

Tagwall med Php & MySQL Denne guide er oprindeligt udgivet på Eksperten.dk Tagwall med Php & MySQL Her laver vi en tagwall i Php & MySQL... jeg forklarer dog ikke så meget, men jeg håber du kan få det til at blive til en tagwall

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

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

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Brugerdefineret menuer i Access

Brugerdefineret menuer i Access Denne guide er oprindeligt udgivet på Eksperten.dk Brugerdefineret menuer i Access Denne artikel henvender sig primært til let øvede brugere af Access, der ønsker at komme i gang med at tilpasse egne menuer

Læs mere

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

Læs mere

SESSION med PHP. En let begynderguide som kan føre dig ind i en verden af muligheder. Denne guide er oprindeligt udgivet på Eksperten.

SESSION med PHP. En let begynderguide som kan føre dig ind i en verden af muligheder. Denne guide er oprindeligt udgivet på Eksperten. Denne guide er oprindeligt udgivet på Eksperten.dk SESSION med PHP En let begynderguide som kan føre dig ind i en verden af muligheder Skrevet den 03. Feb 2009 af mccookie I kategorien Programmering /

Læs mere

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

Læs mere

Delphi - CrackMe og Keygen

Delphi - CrackMe og Keygen Denne guide er oprindeligt udgivet på Eksperten.dk Delphi - CrackMe og Keygen Dette er min første artikel! :) Men jeg synes nu den er blevet meget god! :D Jeg giver et et eksempel på hvordan man kan lave

Læs mere

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter

Læs mere

Hukommelsesspil. Introduktion. Scratch

Hukommelsesspil. Introduktion. Scratch Scratch 2 Hukommelsesspil 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

Læs mere

Programmering for begyndere Lektion 2. Opsamling mm

Programmering for begyndere Lektion 2. Opsamling mm Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger

Læs mere

Eksempel: et ordresystem note 5 Lagdeling s. 1

Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordre-system NiceHair er et firma, som sælger udstyr, inventar og frisørartikler til frisørsaloner over hele landet. Det er ejet af et ægtepar

Læs mere

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

Mircobit Kursus Lektion 3   (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) Mircobit Kursus Lektion 3 http://microbit.org/ (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.) I sidste lektion var der en opgave man selv skulle prøve at løse. Man skulle lave et tabel

Læs mere

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script.

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script. Denne guide er oprindeligt udgivet på Eksperten.dk Register Globals Off Lad os slå en ting fast med det samme - register_globals = Off er en god ting, i hvert fald set ud fra et sikkerhedsmæssigt synspunkt.

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer Denne guide er oprindeligt udgivet på Eksperten.dk TreeView i Access II Jeg vil i denne anden udgave af treeview føljetonen begynde på et mere brugbart eksempel med et TreeView. Vi laver en ny database

Læs mere

Vejledende løsninger

Vejledende løsninger Roskilde Universitetscenter side 1 af 8 sider Vejledende løsninger Opgave 1 Spørgsmål 1.1 a = b - a; b = b - a; a = b + a; Opgaven har flere løsninger. En anden løsning er: a = b + a; b = a - b; a = a

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

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation). Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

Offset til terminalskærm i Java

Offset til terminalskærm i Java Denne guide er oprindeligt udgivet på Eksperten.dk Offset til terminalskærm i Java Ikke en atikkel - men en Classe til java der gør det nemt at skrive ud på avancerede måder når man kun opererer i dosvindue.

Læs mere

Oprettelse af Titelblok i Capture og Capture CIS

Oprettelse af Titelblok i Capture og Capture CIS e-service Titelblok i OrCAD Capture og Capture CIS Side 1 af 11 Oprettelse af Titelblok i Capture og Capture CIS Note skrevet af : Nordcad Systems Technical Support Revision : April 2003, Release 14.2/9.2.3,

Læs mere

Arrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP

Arrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP Denne guide er oprindeligt udgivet på Eksperten.dk Arrays i PHP De fleste som har skrevet omfattende scripts, er før eller siden stødt på problemet med at de bliver vanskelige at overskue hvis man bruger

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

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

Hvilket sprog er hurtigst

Hvilket sprog er hurtigst Denne guide er oprindeligt udgivet på Eksperten.dk Hvilket sprog er hurtigst Denne artikel forsøger at aflive forskellige myter om hvilke sprog der er hurtigst. Den forudsætter ikke noget særligt. Skrevet

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

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Kontrol-strukturer i PHP

Kontrol-strukturer i PHP Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende

Læs mere

Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW.

Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW. Denne guide er oprindeligt udgivet på Eksperten.dk CSS - en gennemgang Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW. Der er lidt CSS historie

Læs mere

Kapitel 1 I gang med C#

Kapitel 1 I gang med C# Kapitel 1 I gang med C# Vi skal starte med at oprette et meget simpelt program, så du kan se hvad der ligger bag et C# projekt. Når du er færdig med dette kapitel vil du have lært: Hvordan du opretter

Læs mere

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api Specifikation Abstrakt, objektorienteret operativsystem-api Indhold 1 Indledning... 3 1.1 Introduktion... 3 1.2 Formål... 3 1.3 Overordnede krav... 3 2 Ressourcer i OS-API et... 4 2.1 Tråde... 4 2.2 Timere...

Læs mere

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007 JSP, Tomcat Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 10.october 2007 Hvad er JSP(Java Server Pages): Det er en teknik som er bygget ovenover Servlets teknikken, men fidusen er at det skal

Læs mere

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

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

Koden i denne guide vil kun virke i Flash MX 2003 og MX ikke ældre versioner!

Koden i denne guide vil kun virke i Flash MX 2003 og MX ikke ældre versioner! Denne guide er oprindeligt udgivet på Eksperten.dk Slideshow - Guide Denne guide gennemgår grundigt og forklarende hvordan man i Flash laver et slideshow med simpel fade-effekt med billeder hentet dynamisk.

Læs mere

Lynkursus i Stencyl. Lynkursus: Lad os lave et spil! (del 1 af 5) Introduktion download programmet. Download kittet til lynkurset

Lynkursus i Stencyl. Lynkursus: Lad os lave et spil! (del 1 af 5) Introduktion download programmet. Download kittet til lynkurset Lynkursus i Stencyl Lynkursus: Lad os lave et spil! (del 1 af 5) Introduktion download programmet Den korte tutorial gennemgår trin for trin, hvad du skal gøre for at kreere en simple platform med brug

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

Introduction til.net remoting i C#

Introduction til.net remoting i C# Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i C# Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i C#. Den forudsætter kendskab

Læs mere

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder. Denne guide er oprindeligt udgivet på Eksperten.dk Collections i.net Når du kigger i namespacet System.Collections finder du over 10 forskellige klasser. At vælge den rigtige til netop din applikations

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

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

Register-databasen med.net

Register-databasen med.net Denne guide er oprindeligt udgivet på Eksperten.dk Register-databasen med.net Mange programmer gemmer deres konfiguration-data i register-database. Denne artikel viser hvordan du - f.eks. vha. C# - henter

Læs mere

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................

Læs mere

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt

Ghostbusters. Introduktion. Scratch. Du skal lave et fangelegsspil med spøgelser! Arbejdsliste. Test dit Projekt. Gem dit Projekt Scratch 1 Ghostbusters 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

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen. Denne guide er oprindeligt udgivet på Eksperten.dk Grundlæggende PHP I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

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

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

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

Den forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET.

Den forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af XML i VB.NET Denne artikel vil vise lidt om hvordan man kan bruge XML i VB.NET. Den forudsætter kendskab til XML og VB.NET men ikke til brug af

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Tyngdekraft i Scratch

Tyngdekraft i Scratch Tyngdekraft i Scratch Nogle gange er det nemmere at forstå nogle ting, når man ser det ske. Derfor kan vi nu prøve at lave et spil med tyngdekraft. Det gør også at man får nogle meget federe spil! 1) Figur

Læs mere

Tracking af YouTube i Google Tag Manager og Universal Analytics (Seneste version)

Tracking af YouTube i Google Tag Manager og Universal Analytics (Seneste version) Tracking af YouTube i Google Tag Manager og Universal Analytics (Seneste version) Introduktion til Google Tag Manager og Youtube... 1 Opsæt Tags, Variabler og Triggers... 4 A) Variabler (variables)...

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

1B fil database. //globale variabler DateTime tid; // erklærer en variabel af typen datetime DateTime dag; // erklærer en variabel af typen datetime

1B fil database. //globale variabler DateTime tid; // erklærer en variabel af typen datetime DateTime dag; // erklærer en variabel af typen datetime 1B fil database using System; //eksterne klasser using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks;

Læs mere

Forelæsning Uge 4 Torsdag

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

Læs mere

Bærbar varme og støj - Vcore ændringer

Bærbar varme og støj - Vcore ændringer Denne guide er oprindeligt udgivet på Eksperten.dk Bærbar varme og støj - Vcore ændringer I artiklen gennemgår jeg brugen af RM Clock Utility, samt hvordan jeg selv har ændret Vcore værdierne. Denne artikel

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

Introduktion til funktioner, moduler og scopes i Python

Introduktion til funktioner, moduler og scopes i Python Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Manual til AVG Antivirus

Manual til AVG Antivirus Manual til AVG Antivirus Det anbefales, at alle brugere benytter sig af et antivirus-program. Formålet med programmet er at forhindre din computer i at blive smittet med virus. Virus-inficerede computere

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

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

MUS Opsætning af spørgeramme

MUS Opsætning af spørgeramme MUS Opsætning af spørgeramme 1. Vælg Opsætning 2. Vælg MUS 3. Søg den afdeling frem, som du vil redigere (rød pil) eller vælg fra listen (grøn pil) 4. Aftaleprioritet: Systemet er født med den fremhævede

Læs mere

I denne artikel vil jeg gennemgå hvordan en side for RSS "Live Bogmærke" kan se ud.

I denne artikel vil jeg gennemgå hvordan en side for RSS Live Bogmærke kan se ud. Denne guide er oprindeligt udgivet på Eksperten.dk RSS "Live Bogmærke" I denne artikel vil jeg gennemgå hvordan en side for RSS "Live Bogmærke" kan se ud. Skrevet den 10. Feb 2009 af madsass I kategorien

Læs mere

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, 300473-2919 klasse dm032-1a

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, 300473-2919 klasse dm032-1a Kursusarbejde 1 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 3. oktober 2003 Kode //File Name: kaalhovede.cc //Author: Arne Jørgensen //Email Address: arne@arnested.dk, arnjor@niels.brock.dk

Læs mere

VEJLEDNING LAV ET NAVNESKILT I INKSCAPE

VEJLEDNING LAV ET NAVNESKILT I INKSCAPE VEJLEDNING LAV ET NAVNESKILT I INKSCAPE For at lave et navneskilt i Inkscape skal du bruge Inkscape. Inkscape er et program til redigering af vektorgrafik, som er det man bruger til laserskæring. Åbn Inkscape.

Læs mere

Kursusarbejde 2 Grundlæggende Programmering

Kursusarbejde 2 Grundlæggende Programmering Kursusarbejde 2 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 31. oktober 2003 Indhold 1. Kode 2 1.1. hotel.h.................................................... 2 1.2. hotel.cc...................................................

Læs mere

Kursus navn: Indledende programmering Kursus nr. 02101

Kursus navn: Indledende programmering Kursus nr. 02101 Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning

Læs mere

Ratingsystem i PHP og MySQL

Ratingsystem i PHP og MySQL Denne guide er oprindeligt udgivet på Eksperten.dk Ratingsystem i PHP og MySQL Lær at lave et system til at vise rating/bedømmelse på artikler og nyheder. Skrevet den 03. Feb 2009 af virtual1ty I kategorien

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere