Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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();
        }