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ä SelectOne
n 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.