Huom! Nämä wikisivut ovat osittain vielä työn alla, osa sisällöstä saattaa olla puutteellista. Ongelmakohtien viereen voit jättää kommentin, yliopiston käyttäjät myös pystyvät (ja saavat) muokata sivuja.

Jypelin käyttöohjeet » Miten saan peliini satunnaisuutta?

Jypelin satunnaislukugeneraattorilla (RandomGen) voi arpoa monentyyppisiä asioita. Satunnaisen arvon voi arpoa tyypillisesti metodilla, jonka alkuosa on Next ja loppuosa arvottavan tyypin nimi (esimerkiksi Double).

Kokonaisluku Desimaaliluku
int luku = RandomGen.NextInt(100); (pienempi kuin 100)
int luku = RandomGen.NextInt(50, 1000); (väliltä 50-999)
double luku = RandomGen.NextDouble(5.0, 120.0); (väliltä 5,0 - 120,0)
Väri Totuusarvo
Color vari = RandomGen.NextColor(); bool totuusarvo = RandomGen.NextBool();
Suunta Kulma
Direction suunta = RandomGen.NextDirection(); Angle kulma = RandomGen.NextAngle()

1. Satunnaiset numerot

RandomGen-luokalta löytyy useita metodeja satunnaisten lukujen arvontaan.

Metodi Selitys
NextInt(max) Satunnainen kokonaisluku, joka on pienempi kuin annettu arvo, mutta suurempi kuin nolla-
NextInt(min, max) Satunnainen kokonaisluku, joka on annetulla välillä.
NextIntWithProbabilities(todennäköisyydet) Palauttaa yhden satunnaisen kokonaisluvun annettujen todennäköisyyksien mukaan.
NextDouble(min, max) Satunnainen desimaaliluku annetulta väliltä.
NextDoubleArray(min, max, size) Taulukko satunnaisia desimaalilukuja
NextDoubleArray(min, max, size, maxchange) Taulukko satunnaisia desimaalilukuja, kahden peräkkäisen luvun suurimmalla sallitulla erotuksella.

1.1 NextIntWithProbabilities

Funktiolle voidaan antaa niin monta todennäköisyyttä kuin halutaan, jonka pohjalta se palauttaa jonkin luvun väliltä 0...n.

Esimerkiksi:

Parametrit Paluuarvo
0.4 40% todennäköisyydellä 0, 60% 1
0.6, 0.2 60% 0, 20% 1, 20% 2
0.6, 0.4 60% 0, 40% 1

2. Satunnaisen vektorin luominen

Esimerkiksi, vektori, jonka pituus on vähintään 500, korkeintaan 1000 ja suunta satunnainen:

Vector voima = RandomGen.NextVector(500, 1000);

Satunnaisen vektorin komponentteja voidaan myös tarkemmin rajoittaa.

RandomGen.NextVector(minX, minY, maxX, maxY);

3. Satunnainen kulma

Satunnaisia kulmia voidaan luoda samalla tavalla kuin vektoreitakin:

Angle korkeintaan90 = RandomGen.NextAngle(Angle.FromDegrees(90));
Angle minMax = RandomGen.NextAngle(Angle.FromDegrees(90), Angle.FromDegrees(180));

4. Satunnainen piste pelikentältä

Jos halutaan helposti satunnainen piste pelikentältä, siihen on olemassa Jypelissä valmis keino:

Vector kentanPiste = Level.GetRandomPosition();

GetRandomPosition palauttaa satunnaisen kohdan kentän reunojen sisäpuolelta Vector-oliona.

5. Satunnainen vaihtoehto

RandomGen-luokan SelectOne-aliohjelmalla voidaan arpoa nopeasti yksi vaihtoehto useista annetuista. SelectOne ottaa ns. tyyppiparametrin (kulmasuluissa <>) joka kertoo, mitä tyyppiä arvottavat otukset ovat. Tyyppi voi olla esimerkiksi string (arvotaan merkkijonoja), double (lukuja) tai GameObject (ruudulla näkyviä peliolioita).

Joitain esimerkkejä SelectOnen käytöstä:

string elain = RandomGen.SelectOne("kissa", "koira", "jänis");
Color vari = RandomGen.SelectOne(Color.Black, Color.Red, Color.Green, Color.Blue);
PhysicsObject pelaaja = RandomGen.SelectOne(pelaaja1, pelaaja2);

Huom. jos saat tällaisen virheen

  • The type arguments for method 'Jypeli.RandomGen.SelectOne(params T[])' cannot be inferred from the usage. Try specifying the type arguments explicitly.

niin sen saa pois lisäämällä SelectOne-metodille tyyppimäärityksen kulmasuluissa tähän tyyliin:

Shape muoto = RandomGen.SelectOne<Shape>(Shape.Circle, Shape.Rectangle);

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.