Gameprogrammeren: Willekeurigheid (Randomness)

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

OOS Object geOrienteerd Software-ontwerp - 3
Conditionele expressie
Tussenpresentatie Modelleren C Random Seeds Sanne Ernst Jarno van Roosmalen.
Hoofdstuk 2 Hallo, C# !.
Mario party is een spellen reeks, er komen steeds nieuwe. Mario party is een soort monopoly met spellen. Je speelt het met 2 of 4 spelers. Het doel van.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
Arrays.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Hoorcollege 5 Herhaling, game object interactie. Ball class class Ball { Texture2D colorRed, colorGreen, colorBlue; Texture2D currentColor; Vector2 position,
Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Hoorcollege 4 Objecten en methoden. Eigen methode toevoegen class Painter : Game { public void HandleInput() { … } protected override void Update(GameTime.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
GUI & classes Een Gui in een class steken en het object gebruiken.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Animatie & Game Physics
Game Object Structuren
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Game Assets
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Keuzeopdrachten
Gameprogrammeren: Introductie
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Char en String
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Variabelen, declaraties en toekenningen
Gameprogrammeren: Expressies
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Animatie
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Player input in Painter
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Gameprogrammeren: Tiles in Tick Tick
Gameprogrammeren: Afsluiting
Gameprogrammeren: Herhalingen
Gameprogrammeren: Platform-games
Gameprogrammeren: Properties
Arjan Egges & Paul Bergervoet
Gameprogrammeren: Game Basics
Game Assets, Invoer Verwerken
Arjan Egges & Paul Bergervoet
Voortborduren op eerder gedaan werk
Libraries, Platform Games
Gameprogrammeren: Recursie
Gameprogrammeren: Exceptions
Gameprogrammeren: Abstracte klassen
Willekeurigheid en Herhaling
Gameprogrammeren: Interfaces
Arjan Egges Paul Bergervoet Wouter van Toll
Gameprogrammeren: Tiles en File I/O in Tick Tick
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Kiezen met Kaarten.
Arjan Egges & Paul Bergervoet
Object Communication (Jewel Jam)
Kiezen met Kaarten.
Tellen met kaarten.
ASP.NET MVC Web Development
Software Development fundamentals
Gameprogrammeren: Enemies in Tick Tick
Kiezen met Kaarten.
Gameprogrammeren: Sprite sheets
Gameprogrammeren: Arrays
Transcript van de presentatie:

Gameprogrammeren: Willekeurigheid (Randomness) Arjan Egges Paul Bergervoet Wouter van Toll

Willekeurigheid in games Een veelgebruikt concept in spellen Een stapel kaarten in willekeurige volgorde leggen Een bal een willekeurige richting op laten vliegen Een vijand op een willekeurige plek “spawnen” Levels genereren met een willekeurige structuur

Willekeurigheid in games Willekeurigheid vergroot het spelplezier Iedere keer als je speelt, is het weer anders Tot nu toe hadden onze programma’s 100% voorspelbaar gedrag Hoe maken we een programma ‘willekeurig’? Met behulp van een willekeurigegetallengenerator! (Random Number Generator)

Willkeurige getallen trekken Twee soorten random generatoren: Fysiek: Computationeel:

Computationeel Bij computationele willekeurigheid gebruiken we vaak een ‘seed’ Om aan te geven waar we beginnen in de tabel Dezelfde seed hergebruiken geeft dezelfde reeks getallen (kan nuttig zijn) Voorbeelden van seeds die steeds anders zijn: Systeemtijd De ID van het huidige proces in Windows ...

de systeemtijd als seed Random-klasse In MonoGame gebruiken we de Random-klasse: Met een maximumwaarde (resultaat < 100): Een double i.p.v. int (altijd tussen 0.0 en 1.0): Random r = new Random(); Console.WriteLine(r.Next()); Gebruikt standaard de systeemtijd als seed Console.WriteLine(r.Next(100)); Console.WriteLine(r.NextDouble());

Willekeurige voorbeelden ;) Het kiezen van een willekeurige snelheid voor een game-object: Kiezen welke speler begint: Random r = new Random(); Vector2 balSnelheid = new Vector2(r.Next(100), r.Next(100)); if (r.Next(2) == 0) this.beginnendeSpeler = “rood”; else this.beginnendeSpeler = “blauw”;

Random in de Painter-game Static membervariabele van het type Random Met een (static) property om erbij te kunnen: static Random random; public static Random Random { get { return random; } }

Random in de Painter-game Willekeurige snelheid in de PaintCan klasse Willekeurige kleur bepalen: return new Vector2(0.0f, (float)Painter.Random.NextDouble() / 2 + minVelocity); public Color CalculateRandomColor() { int randomval = random.Next(3); if (randomval == 0) return Color.Red; else if (randomval == 1) return Color.Green; else return Color.Blue; }