Ignore:
Timestamp:
2010-07-06 13:07:46 (13 years ago)
Author:
frjolehm
Message:

Laitin tekoälyn....

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/27/frjolehm/Ping Pong/Ping Pong/Peli.cs

    r1067 r1088  
    1414    PhysicsObject maila2; 
    1515 
     16    PhysicsObject vasenReuna; 
     17    PhysicsObject oikeaReuna; 
     18    PhysicsObject yläReuna; 
     19    PhysicsObject alaReuna; 
     20 
    1621    IntMeter pelaaja1Pisteet; 
    1722    IntMeter pelaaja2Pisteet; 
     23 
     24    Boolean vastustaja; 
     25    Boolean löyjä; 
    1826 
    1927    protected override void Begin() 
     
    2432        Ohjaimet(); 
    2533        LisääLaskurit(); 
    26         AloitaPeli(); 
    27  
    28     } 
     34        AloitaPeli(500); 
     35 
     36    } 
     37 
    2938    //Pelin luonti 
    3039    void LuoKenttä() 
     
    3443        maila2 = LuoMaila(Level.Right - 30, 0, 1.0); 
    3544        //pallon luonti 
     45        LuoPallo(RandomGen.NextColor()); 
     46        //taso 
     47        vasenReuna = Level.CreateLeftBorder(); 
     48        vasenReuna.Restitution = 1.0; 
     49        vasenReuna.IsVisible = false; 
     50 
     51        oikeaReuna = Level.CreateRightBorder(); 
     52        oikeaReuna.Restitution = 1.0; 
     53        oikeaReuna.IsVisible = false; 
     54 
     55        alaReuna = Level.CreateBottomBorder(); 
     56        alaReuna.Restitution = 1.0; 
     57        alaReuna.IsVisible = false; 
     58        alaReuna.KineticFriction = 0.0; 
     59 
     60        yläReuna = Level.CreateTopBorder(); 
     61        yläReuna.Restitution = 1.0; 
     62        yläReuna.IsVisible = false;  
     63        yläReuna.KineticFriction = 0.0; 
     64 
     65 
     66        Camera.ZoomToLevel(); 
     67 
     68    } 
     69 
     70    void LuoPallo(Color väri) 
     71    { 
    3672        pallo = new PhysicsObject(35, 35); 
    37         pallo.Shape = Shapes.Triangle; 
    38         pallo.Color = Color.Cyan; 
     73        pallo.Shape = Shapes.Rectangle; 
     74        pallo.KineticFriction = 0.0; 
     75        pallo.Color = väri; 
    3976        pallo.X = 0; 
    4077        pallo.Y = 0; 
    4178        pallo.Restitution = 1.0; 
    4279        Add(pallo); 
    43         //taso 
    44         Level.CreateBorders(1.0, false); 
    45         Level.BackgroundColor = Color.Black; 
    46  
    47         Camera.ZoomToLevel(); 
    48  
    49     } 
    50     void AloitaPeli() 
    51     { 
    52         Vector impullsi = new Vector(200, 0); 
     80        AddCollisionHandler(pallo, PallonTörmäys);  
     81    } 
     82 
     83    void PallonTörmäys(PhysicsObject pallo, PhysicsObject kohde) 
     84    { 
     85        if (kohde == vasenReuna) 
     86        { 
     87            pelaaja2Pisteet.Value += 1; 
     88            pallo.Destroy(); 
     89            LuoPallo(RandomGen.NextColor());  
     90            AloitaPeli(-500); 
     91 
     92        } 
     93        else if (kohde == oikeaReuna) 
     94        { 
     95            pelaaja1Pisteet.Value += 1; 
     96            pallo.Destroy(); 
     97            LuoPallo(RandomGen.NextColor()); 
     98            AloitaPeli(500); 
     99        } 
     100        else if (kohde == maila2) 
     101        { 
     102            löyjä = true; 
     103        } 
     104        else if (kohde == maila1) 
     105        { 
     106            löyjä = false; 
     107        } 
     108    } 
     109 
     110    void AloitaPeli(double nopeus) 
     111    { 
     112        Vector impullsi = new Vector(nopeus, RandomGen.NextInt(-200,200)); 
    53113        pallo.Hit(impullsi); 
    54114    } 
     115 
    55116    PhysicsObject LuoMaila(double x, double y, double kimmoisuus) 
    56117    { 
     
    60121        maila.Y = y; 
    61122        maila.Restitution = kimmoisuus; 
     123        maila.KineticFriction = 1.5; 
    62124        Add(maila); 
    63125        return maila; 
    64126    } 
     127 
    65128    //Ohjamiet 
    66129    void Ohjaimet() 
     
    69132        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
    70133        Keyboard.Listen(Key.H, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     134        Keyboard.Listen(Key.Enter, ButtonState.Pressed, LaitaVastustaja, "Laita vastustaja päälle."); 
    71135 
    72136        //Pelaaja 1 
     
    75139        Keyboard.Listen(Key.Z, ButtonState.Down, LaitaNopeus, "Pelaaja 1: Liikuta mailaa alaspäin.", maila1, nopeusAlas); 
    76140        Keyboard.Listen(Key.Z, ButtonState.Released, LaitaNopeus, null, maila1, Vector.Zero); 
    77         //Pelaaja 2 
    78         Keyboard.Listen(Key.Up, ButtonState.Down, LaitaNopeus, "Pelaaja 2: Liikuta mailaa ylöspäin.", maila2, nopeusYlös); 
    79         Keyboard.Listen(Key.Up, ButtonState.Released, LaitaNopeus, null, maila2, Vector.Zero); 
    80         Keyboard.Listen(Key.Down, ButtonState.Down, LaitaNopeus, "Pelaaja 2: Liikuta mailaa alaspäin.", maila2, nopeusAlas); 
    81         Keyboard.Listen(Key.Down, ButtonState.Released, LaitaNopeus, null, maila2, Vector.Zero); 
    82     } 
     141        //Pelaaja 2 tai Botti 
     142        if (vastustaja == false) 
     143        { 
     144            Keyboard.Listen(Key.Up, ButtonState.Down, LaitaNopeus, "Pelaaja 2: Liikuta mailaa ylöspäin.", maila2, nopeusYlös); 
     145            Keyboard.Listen(Key.Up, ButtonState.Released, LaitaNopeus, null, maila2, Vector.Zero); 
     146            Keyboard.Listen(Key.Down, ButtonState.Down, LaitaNopeus, "Pelaaja 2: Liikuta mailaa alaspäin.", maila2, nopeusAlas); 
     147            Keyboard.Listen(Key.Down, ButtonState.Released, LaitaNopeus, null, maila2, Vector.Zero); 
     148        } 
     149    } 
     150 
     151    void LaitaVastustaja() 
     152    { 
     153        if (vastustaja) 
     154        { 
     155            vastustaja = false; 
     156            LaitaNopeus(maila2, Vector.Zero); 
     157        } else { 
     158            vastustaja = true; 
     159        } 
     160    } 
     161 
    83162    void LaitaNopeus(PhysicsObject maila, Vector nopeus) 
    84163    { 
     
    118197    } 
    119198 
    120  
     199    protected override void Update(Time time) 
     200    { 
     201        if (vastustaja == true) 
     202        { 
     203            if (löyjä == true) 
     204            { 
     205                if (maila2.Y < -10) 
     206                { 
     207                    LaitaNopeus(maila2, nopeusYlös); 
     208                } 
     209                else if (maila2.Y > 10) 
     210                { 
     211                    LaitaNopeus(maila2, nopeusAlas); 
     212                } 
     213                else 
     214                { 
     215                    LaitaNopeus(maila2, Vector.Zero); 
     216                } 
     217            } 
     218            else 
     219            { 
     220                if ((pallo.Y > (maila2.Y + 75))) 
     221                { 
     222                    LaitaNopeus(maila2, nopeusYlös); 
     223                } 
     224                else if ((pallo.Y < (maila2.Y - 75))) 
     225                { 
     226                    LaitaNopeus(maila2, nopeusAlas); 
     227                } 
     228                else 
     229                { 
     230                    LaitaNopeus(maila2, Vector.Zero); 
     231                } 
     232            } 
     233        } 
     234        base.Update(time); 
     235    } 
    121236} 
Note: See TracChangeset for help on using the changeset viewer.