C# spil (del 3) - Space Invaders, sådan!
|
|
- Sigrid Thorsen
- 5 år siden
- Visninger:
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
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 mereC# 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 mereSom 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 mereHvad 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 mereJava 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 mereI 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 mereBekrig 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 mereTilfæ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 mereSingleton 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 mereAt 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 mereSingleton 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 mereBits, 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 mereParameters. 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 mereDen 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 mereUndtagelseshå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 merePROGRAM. 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 mereSend 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 mereDM01 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 mereThreads 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 mereAnvendelse 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!
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 mereUniversity 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 mereIntroduktion 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 mereMircobit 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 merePlugin-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 mereTagwall 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 mereAbstrakte 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 mereI 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 mereAAU, 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 mereBrugerdefineret 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 mereListen 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 mereSESSION 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 mereTree 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 mereDelphi - 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 mereDen 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 mereHukommelsesspil. 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 mereProgrammering 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 mereEksempel: 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 mereMircobit 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 mereMed 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 mereDM507 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 mereSWC 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 mereDerfor 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 mereVejledende 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 mereIndledning. 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 mereRMI 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 mereUniversity 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 mereOffset 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 mereOprettelse 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 mereArrays 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 mereForelæ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 mereKapitel 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 mereHvilket 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 mereFang 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 mereOm 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 mereForelæ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 mereKontrol-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 mereDenne 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 mereKapitel 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 mereSpecifikation 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 mereJSP, 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 mereclass 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 mereGreenfoot 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 mereKoden 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 mereLynkursus 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 mereTest 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 mereIntroduction 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 mereI 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 mereForelæ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 mereMS 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 mereRegister-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 mereKursusarbejde 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 mereGhostbusters. 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 mereI 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 mereSkriftlig 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 mereKilder: 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 mereNavn: 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 mereDen 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 mereForelæ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 mereTyngdekraft 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 mereTracking 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 mereDMX 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 mere1B 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 mereForelæ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 mereBæ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 mereSkriftlig 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 mereIntroduktion 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 mereForelæ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 mereManual 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 mereVideregå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 mereMETODER 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 mereMUS 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 mereI 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 mereKursusarbejde 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 mereVEJLEDNING 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 mereKursusarbejde 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 mereKursus 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 mereRatingsystem 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 mereDatabaseadgang 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