public void LuoPallot() { // luodaan pallo-instanssit, aluksi vain 2 kpl for (int i = 0; i < 2; i++) { palloLista[i] = new Pallo(); palloLista[i].Numero = i + 1; palloLista[i].PalloY = 100; switch (i) // ensimmäisille palloille annetaan sijainti-arvot, ja suunnat { case 0: palloLista[i].PalloX = 10; // ensimmäinen pallo vasempaan reunaan palloLista[i].PalloMenossa = PallonSuunta.Oikea; break; case 1: palloLista[i].PalloX = this.Width - 155; // toinen pallo oikeaan reunaan ruudunleveyden mukaan palloLista[i].PalloMenossa = PallonSuunta.Vasen; break; default: break; } Canvas.SetTop(palloLista[i].Ball, -100); // siirretään aluksi pois näkyvistä (muuten vilahtaa alussa) AddCanvasChild(palloLista[i].Ball); // lisätään pallo-oliot sceneen (canvasiin), aluksi 2kpl pallojaLuotu = i + 1; } }
public void JaaPallo(int n, double halkaisija) { // soitetaan poksahdusääni koon mukaan if (halkaisija > 50) { Soita("pallo_poksahtaa"); } else if (halkaisija > 25) { Soita("pallo_poksahtaa2"); } else if (halkaisija > 12) { Soita("pallo_poksahtaa3"); } var i = pallojaLuotu; // lasketaan montako palloa on jo luotu ja asetetaan se seuraavan pallon numeroksi //System.Diagnostics.Debug.WriteLine("JaaPallo. Luotu: " + i + " Jaettava:" + n); // debuggia // luodaan 1 palloinstanssi lisää, kun toinen on puolitettu pienemmäksi palloLista[i] = new Pallo(); palloLista[i].Numero = i + 1; switch (palloLista[n].PalloMenossa) // metodiin tuodun pallon numeron perusteella katsotaan sen suunta { case PallonSuunta.Oikea: palloLista[i].PalloMenossa = PallonSuunta.Vasen; // mutta eri suunta. break; case PallonSuunta.Vasen: palloLista[i].PalloMenossa = PallonSuunta.Oikea; break; default: break; } palloLista[i].Kaari = palloLista[n].Kaari; // sinikäyrän laskemiseen käytetty halkaisija palloLista[i].PalloX = palloLista[n].PalloX; palloLista[i].PalloY = palloLista[n].PalloY; palloLista[i].PallonKorkeus = palloLista[n].PallonKorkeus; palloLista[i].Ball.Width = palloLista[n].Ball.Width; // uudelle pallolle sama koko kuin sille, joka poksahti palloLista[i].Ball.Height = palloLista[n].Ball.Height; Canvas.SetTop(palloLista[i].Ball, -100); // aluksi pois näkyvistä, muuten vilahtaa tullessaan yläreunassa AddCanvasChild(palloLista[i].Ball); // lisätään pallo sceneen pallojaLuotu += 1; // lisätään pallojen määrää }
Pallo[] palloLista = new Pallo[pallojaMax]; // luodaan tarvittava määrä pallo-olioita // public Rectangle re = new Rectangle(); // Ukon törmäyspuskurin testaukseen // public Rectangle rep = new Rectangle(); // Pallon törmäyspuskurin testaukseen public MainWindow() { InitializeComponent(); instance = this; // tämän kautta kutsutaan MainWindow-instanssin metodeita this.Loaded += new RoutedEventHandler(MainWindow_Loaded); // kutsutaan metodia, kun ikkuna on latautunut this.SizeChanged += new SizeChangedEventHandler(Window_SizeChanged); // luodaan eventhandleri ikkunan koon muutokselle (tarvitaanko lopullisessa?) heebo.LuoUkko(); // luodaan pelaaja AddCanvasChild(heebo.pelaaja); // ja liitetään canvasiin // heebo2.LuoUkko(); // luodaan pelaaja nro 2 // AddCanvasChild(heebo2.pelaaja); // ja liitetään canvasiin /* Ukon törmäyspuskurin testaukseen * re.Fill = System.Windows.Media.Brushes.SkyBlue; * re.Width = 100; * re.Height = 100; * * Canvas.SetTop(re, 100); * Canvas.SetLeft(re, 100); * AddCanvasChild(re); * /* Pallon törmäyspuskurin testaukseen * rep.Fill = System.Windows.Media.Brushes.SkyBlue; * rep.Width = 100; * rep.Height = 100; * * Canvas.SetTop(rep, 100); * Canvas.SetLeft(rep, 100); * AddCanvasChild(rep); */ // luodaan pallo-instanssit for (int i = 0; i < pallojaMax; i++) { palloLista[i] = new Pallo(); palloLista[i].Numero = i + 1; if (i < 2) { AddCanvasChild(palloLista[i].ball); // lisätään pallo-oliot sceneen (canvasiin), aluksi 2kpl } switch (i) // ensimmäisille palloille annetaan sijainti-arvot, ja suunnat { case 0: palloLista[i].PalloX = 10; // ensimmäinen pallo vasempaan reunaan palloLista[i].palloMenossa = pallonSuunta.Oikea; break; case 1: palloLista[i].PalloX = this.Width - 140; // toinen pallo oikeaan reunaan ruudunleveyden mukaan palloLista[i].palloMenossa = pallonSuunta.Vasen; break; default: break; } } //määritellään ikkunalle tapahtumankäsittelijä näppäimistön kuuntelua varten this.KeyDown += new KeyEventHandler(OnButtonKeyDown); // törmäyksen tunnistuksen ajastus DispatcherTimer timer_Törmäys = new DispatcherTimer(DispatcherPriority.Send); timer_Törmäys.Interval = TimeSpan.FromMilliseconds(50); // Set the Interval timer_Törmäys.Tick += new EventHandler(timertörmäys_Tick); // Set the callback to invoke every tick time timer_Törmäys.Start(); }