fi en fi en en en de en en en en es en en en en en en fi en en en zh sv tt fr fa de en de fi fr fr ca fr ceb sv en en fi fr fi en ja fi fr fi de en fr fr es fi nb fr fi de fi en en en sv de fi de fi fr fi en cs fr it fi fr fi de sl fr war fr en fr fi fr als fr fi fr fi fr fr en en fi fr fi fr fi it fi fr fi en fi fr fi de en fr fi fr fi fr fr fi fr fi fr fi de fi fr en fr fi fr nl fi fr de en fr en fr fr en fr en pt en fr fr fi fr fi de da de fr fi zh fi fr fi fr fi fr fi en de fr fi fr fr fr fi da en fr en fr fr fr ru fr ceb fr uk fr ceb fr hu en kn da fi zh fi fr ceb de fi fr kn fr fi fr fi fr fi fr kn fr fi da ceb oc fi oc ceb oc ru oc kn en en kn zh fr zh ceb fr fi de en fr en fr en oc en fr nn fr kn fr en fr fi fr ceb fr fi fr ceb fr cs fr kn fr kn fr hu fr ceb fr fi fr de hbs_lat fi oc fi oc fr fi zh fi fr fi fr en de fi oc fi oc en oc fi fr oc fi oc fi ca fi fr et ca de fi fr fi fr sv fr cs fr ceb da ceb fr fr oc kn fr fi fr fi fr fi fr fi fr en de kn fr fr oc ceb fr en oc es oc ceb ca kn fr fr fi fr ceb oc en fr en de en fr en ca fr en fr en ca fi fr fi fr it fr en fr ceb oc fr fi ca ceb fr fi fr kn fr sv oc ceb oc fi fr en fr sv oc fi oc en ca sv fr kn fr en fr kn oc fr fi fr ceb ca en nb fi zh en zh en zh en zh en zh en zh it zh sv zh en zh hu fr en zh en ca en oc en oc en fr en oc id fr kn zh fi fr ceb fr hy de en fr kn oc et fr ceb fr sv fr ceb fr et oc ceb fr fi fr en oc eu ca kn oc et oc ceb fr fi fr en oc eu oc id fr kn oc kn oc als oc ceb oc zh fr fi oc ceb fr fi oc fi fr ar fr kn la kn oc oc fi oc ceb fr fi fr en ca fi fr fi fr ceb fr fi fr kn fr en fr ceb oc fi oc kn fr fr fi oc fi fr fi oc fi oc fi oc en fr en oc fr en fr fr kn fr fi fr ceb oc fi fr ceb oc en oc war fr ceb fr fi oc fi oc fi oc en fr kn oc kn fr en oc ceb fr fi de fi fr fi fr lt oc fi oc fi oc ceb fr fi de fi fr fi fr fi fr fi oc fi fr fi fr ceb de fi oc kn fr kn oc en oc ceb fr fi fr kn fr en oc oc en oc es fr ceb oc en de kn oc es oc ceb oc en ca kn oc en oc kn oc en oc kn oc et fr ceb oc fi ca fi oc fi oc fi oc fi fr kn en lt fr ceb oc en fr en fr en oc pt oc en fr en fr sv oc kn zh fr fi fr ceb de hu oc fi oc fi fr fi de kn fr oc en ca fi fr ceb fr en da fi oc fi fr en fr kn ca fr fi de ceb fr hu de hu fr fr fi oc ceb ca fi oc kn fr fi de ceb oc fi fr kn fr fi fr fi fr fi oc ceb oc fi fr ceb zh fi fr fi oc kn oc en fr ceb de et de fi fr ceb fr fi fr fr kn fr fi de ceb fr fi fr kn fr hu de fi fr fi oc kn fr kn da fi fr ceb fr en de ceb fa en fr kn fr en ca ceb ca en oc kn fa fr sv de ceb fr ru zh kn oc en ca ceb oc ru fr kn de kn oc en fr fi en uk fr ceb fr en fr en fr fi fr kn oc ar de ceb de en fr fi fr kn fr fi ca fi oc kn oc fi fr ceb es fi fr ceb fr fi oc ceb fr fi vi kn oc fi fr ceb fr pl fr ceb ca fi oc kn ca en fr ceb oc fi fr kn en kn de fi fr ceb fr fi fr kn fr en fr kn fr kn fr fi oc ceb de fi de fi fr fi fr fi fr kn ca fi da ceb fr fi en fi oc hbs_lat fr hbs_lat da ceb de lt oc kn sv pt fr kn en gl ca ceb fr is fr kn oc fr cs de ceb eu pl ca ceb fr en nl fi fr fi fr nb nb kn en en it ceb ru en ca fi ca fi ca nb ca kn fr kn oc en de th oc ceb vi en oc ceb ca fi oc fi oc kn oc ceb fr ceb fr fi oc kn fr fi ml en fr uk oc kn ca kn fr en en en en en en en en
Revision 1650, 19.2 KB checked in by arhetaka, 12 years ago (diff)
public class Peli : PhysicsGame
double tuulenSavuKerroin = 5; // tällä säädetään tuulen vaikutusta savuihin
double nappimistonOhjausNopeus = 1; //kuinka iso vektori liikuttaa tähtäintä näppäimistöltä ohjattaessa
double OhjaimenEdellinenX = 0; //hiiren edellinen X koordinaatti
double OhjaimenEdellinenY = 0; //hiiren edellinen Y koordinaatti
double ohjauksenNopeus = 1.0; //kerroin miten nopeasti hiiren liike liikuttaa tähtäintä
double hiirenHerkkyys = 0.01;
double TahtaimenKitka = 0.95;
bool tahtayssuunta = true; //true liike pelikuva, false arcade
double tahtaintenMaxEtaisyys = 200; //tämän kauemmas etutähtäin ei liiku takatähtäimestä
DoubleMeter hiirenXlaskuri = new DoubleMeter(0); //debug
DoubleMeter hiirenYlaskuri = new DoubleMeter(0); //debug
DoubleMeter tahtaintenEtaisyysMittari = new DoubleMeter(0); //debug
GameObject PunaPiste = new GameObject(3, 3);
GameObject ohjainNuoli = new GameObject(10, 100);
protected override void Begin()
for (double a = taulunkoko; a >= (taulunkoko / taulurenkaidenLukumaara); a = a - (taulunkoko / taulurenkaidenLukumaara))
TeeRengas(a, RandomGen.NextColor(), 0, 0);
void TeeRengas(double koko, Color vari, double X, double Y)
GameObject rengas = new GameObject(koko, koko);
for (double a = tulostaulunkoko; a >= (tulostaulunkoko / taulurenkaidenLukumaara); a = a - (tulostaulunkoko / taulurenkaidenLukumaara))
TeeRengas(a, RandomGen.NextColor(), TulostaulunX, TulostaulunY);
hiirenX = new Label(); //debug
hiirenY = new Label(); //debug
tuulenvoimakkuus = new Label(); //debug
tahtaintenEtaisyysNaytto = new Label(); //debug
hiirenX.X = Screen.Left + 100;
hiirenY.X = Screen.Left + 100;
hiirenX.Y = Screen.Top - 50;
hiirenY.Y = Screen.Top - 100;
tuulenvoimakkuus.X = Screen.Right - 100;
tuulenvoimakkuus.Y = Screen.Top - 50;
tahtaintenEtaisyysNaytto.X = Screen.Right - 100;
tahtaintenEtaisyysNaytto.Y = Screen.Top - 100;
pistelaskuri = new DoubleMeter(0);
tulosNaytto = new Label();
tulosNaytto.Y = Screen.Top - 100;
savu = new Smoke(tuulenVoima.Value * tuulenSavuKerroin);
savu.Position = new Vector(Screen.Left + 300, 0);
savu2 = new Smoke(tuulenVoima.Value * tuulenSavuKerroin);
savu2.Position = new Vector(Screen.Right - 300, 0);
Etutahtain = new PhysicsObject(tahtaimenKoko, tahtaimenKoko);
Takatahtain = new PhysicsObject(tahtaimenKoko, tahtaimenKoko);
if (RandomGen.NextDouble(0, 1) < (1 / vapinanTaajuus))
Vector vapinaVektori = RandomGen.NextVector(Vector.Zero, Vector.FromLengthAndAngle(vapinanLiikevoima, RandomGen.NextAngle()));
if (RandomGen.NextDouble(0, 1) < (1 / vapinanTaajuus))
Vector vapinaVektori = RandomGen.NextVector(Vector.Zero, Vector.FromLengthAndAngle(vapinanLiikevoima, RandomGen.NextAngle()));
if (RandomGen.NextDouble(0, 1) < (1 / vapinanTaajuus))
Etutahtain.AngularVelocity = RandomGen.NextDouble(-kiertoHairionLiikevoima, kiertoHairionLiikevoima);
Mouse.Listen(MouseButton.Left, ButtonState.Down, Laukaise, null);
Mouse.Listen(MouseButton.Left, ButtonState.Pressed, Laukaise, null);
Keyboard.Listen(Key.A, ButtonState.Down, LiikutaTahtainta, null, new Vector(-nappimistonOhjausNopeus, 0));
Keyboard.Listen(Key.D, ButtonState.Down, LiikutaTahtainta, null, new Vector(nappimistonOhjausNopeus, 0));
Keyboard.Listen(Key.S, ButtonState.Down, LiikutaTahtainta, null, new Vector(0, -nappimistonOhjausNopeus));
Keyboard.Listen(Key.W, ButtonState.Down, LiikutaTahtainta, null, new Vector(0, nappimistonOhjausNopeus));
Keyboard.Listen(Key.Z, ButtonState.Pressed, ToogleZoom, null);
Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, null);
if (RandomGen.NextDouble(0, 30) < (tulinopeus / 30) )
Vector suunta = LaskeLaukauksenSuunta();
Vector osumakohta = LaskeOsumaKohta(suunta);
Vector suunta = LaskeLaukauksenSuunta();
Vector osumakohta = LaskeOsumaKohta(suunta);
double tulos = tarkistaPisteet(osumakohta);
//tehdään reikä tauluun tai tulostauluun
osumakohta.X = osumakohta.X * (tulostaulunkoko / taulunkoko);
osumakohta.Y = osumakohta.Y * (tulostaulunkoko / taulunkoko);
osumakohta.X = osumakohta.X + TulostaulunX;
osumakohta.Y = osumakohta.Y + TulostaulunY;
Vector osumanEtaisyys = new Vector(osumakohta.X - TulostaulunX, osumakohta.Y - TulostaulunY);
//double etaisyys = osumanEtaisyys.Magnitude;
if (osumanEtaisyys.Magnitude < (tulostaulunkoko / 2))
if (RandomGen.NextDouble(0, 20) < 1)
else if (RandomGen.NextDouble(0, 20) < 1)
Vector Osumakohta = new Vector();
Osumakohta.X = Takatahtain.X + (suunta.X * VirheKerroin);
//Osumakohta.Y = (suunta.Y + Takatahtain.Y) * VirheKerroin + (tahtaimenKoko / 2);//tähtäimen korkeudesta lisätään puolet, jotta osuma olisi oikealla korkeudella
Osumakohta.Y = Takatahtain.Y + (suunta.Y * VirheKerroin);//tähtäimen korkeudesta lisätään puolet, jotta osuma olisi oikealla korkeudella
void TeeOsuma(double osumanX, double osumanY)
GameObject osuma = new GameObject(3, 3);
double suuntaX = Etutahtain.X - Takatahtain.X;
double suuntaY = (Etutahtain.Y + (tahtaimenKoko / 2)) - (Takatahtain.Y + (tahtaimenKoko / 2));
Vector suuntaVektori = new Vector(suuntaX, suuntaY);
void LiikutaTahtainta(Vector ohjainvektori) //liikutetaaan tähtäintä / tähtäimiä näppäimistöllä
double tahtaintenXetaisyys = Etutahtain.X - Takatahtain.X;
double tahtaintenYetaisyys = Etutahtain.Y - Takatahtain.Y;
if (tahtaintenXetaisyys < 0)
tahtaintenXetaisyys = tahtaintenXetaisyys * -1;
if (tahtaintenYetaisyys < 0)
tahtaintenYetaisyys = tahtaintenYetaisyys * -1;
double tahtaintenEtaisyys = tahtaintenXetaisyys + tahtaintenYetaisyys;
if (tahtaintenEtaisyys < tahtaintenMaxEtaisyys) //jos etutahtain ei ole liian kaukana takatähtäimestä
if (OhjaimenEdellinenX == 0 && OhjaimenEdellinenY == 0)
if (tahtayssuunta) //liike hiiren peilikuvana
liikutus = new Vector((OhjaimenEdellinenX - Mouse.PositionOnScreen.X) * ohjauksenNopeus, (OhjaimenEdellinenY - Mouse.PositionOnScreen.Y) * ohjauksenNopeus);
else //liike samaan suuntaan kun hiirikin
liikutus = new Vector((Mouse.PositionOnScreen.X - OhjaimenEdellinenX) * ohjauksenNopeus, (Mouse.PositionOnScreen.Y - OhjaimenEdellinenY) * ohjauksenNopeus);
ohjainNuoli.Angle = liikutus.Angle - Angle.RightAngle;
Etutahtain.Hit(liikutus); // hiiri liikuttaa vain etutähtäintä
else // siirretään etutähtäintä takatähtäintä kohti
if (Etutahtain.X < Takatahtain.X)
if (Etutahtain.Y < Takatahtain.Y)
//nollataan kursorin paikka jos on ajelehtinut liian kauas keskeltä
if (Mouse.PositionOnWorld.X > 200 || Mouse.PositionOnWorld.X < -200)
//    OhjaimenEdellinenX = 0;
if (Mouse.PositionOnWorld.Y > 200 || Mouse.PositionOnWorld.Y < -200)
//  Mouse.PositionOnWorld.Y = 0;
//  OhjaimenEdellinenY = 0;
if (tuulenVoima.Value == 0) // pitää vielä tehdä korjaus että ei tapauksessa 0 lähde mihin sattuu
tuulenVoima.Value += RandomGen.NextDouble(-tuulenMaxVoima, tuulenMaxVoima);
if (RandomGen.NextDouble(0,1) < (1 / tuulenvaihteluTaajuus))
if (savu != null && savu2 != null)
Wind = new Vector(tuulenVoima.Value * tuulenSavuKerroin, 0);
Vector suunta = LaskeLaukauksenSuunta();
Vector osumakohta = LaskeOsumaKohta(suunta);
//tähän taulun paikan tarkistus
double tulos = osumaKohta.Magnitude;
tulos = 10 - (tulos / (taulunkoko / 20));
if (tulos < 0)
tahtaimenKoko = tahtaimenKoko / 2;
tahtaimenKoko = tahtaimenKoko * 2;
protected override void Update(Time time)
TeeVapinaa(); //tekee häiriöt tähtäämiseen
Note: See TracBrowser for help on using the repository browser.
Download in other formats:
Powered by Trac 0.12.5
Visit the Trac open source project at