Ignore:
Timestamp:
2016-01-10 22:43:05 (7 years ago)
Author:
otjojunt
Message:

Lisätty piirron asettaminen päälle ja pois, värin vaihtaminen ja viivan paksuuden vaihtaminen. Myös nimeämisiä muutettu selkeämmäksi käyttää.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/koodauskerho/otjojunt/Turtle/Turtle/Turtle/Turtle.cs

    r7102 r7103  
    2020 
    2121    GameObject currentObject = null; 
    22     Vector lastPos; 
     22 
     23    Boolean drawingOn = true; 
     24    double drawingWidth = 2.0; 
     25    Color lineColor = Color.Black; 
    2326 
    2427    // Käskyt sisältävä jono 
     
    4245        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    4346 
     47        Camera.ZoomFactor = 0.5; 
     48 
    4449        SeuraavaKasky(); 
    4550    } 
     
    5156    { 
    5257        // TODO: Lisää tähän kilpikonnalle menevät käskyt. 
    53         // Esimerkiksi: LisaaKasky(Liiku, 100.0); 
     58        // Esimerkiksi: Liiku(100.0); 
    5459 
    5560    } 
     
    5964    /// </summary> 
    6065    /// <param name="pituus">Liikkeen pituus</param> 
    61     public void Liiku(double pituus) 
     66    protected void MoveTo(double pituus) 
    6267    { 
    6368        if (moveTimer == null) 
     
    7075            moveTimer.Stop(); 
    7176 
    72         currentObject = new GameObject(0, 1); 
    73         currentObject.AbsolutePosition = turtle.AbsolutePosition; 
    74         currentObject.AbsoluteAngle = turtle.AbsoluteAngle; 
    75         Add(currentObject); 
     77        if (drawingOn) 
     78        { 
     79            currentObject = new GameObject(0, drawingWidth); 
     80            currentObject.AbsolutePosition = turtle.AbsolutePosition; 
     81            currentObject.AbsoluteAngle = turtle.AbsoluteAngle; 
     82            currentObject.Color = lineColor; 
     83            Add(currentObject); 
     84        } 
    7685        moveTarget = turtle.AbsolutePosition + Vector.FromLengthAndAngle(pituus, turtle.AbsoluteAngle); 
    7786        moveTimer.Start(); 
     
    98107            moveTarget = null; 
    99108            SeuraavaKasky(); 
    100             currentObject.Size += new Vector(d.Magnitude, 0); 
    101             currentObject.AbsolutePosition += Vector.FromLengthAndAngle(d.Magnitude / 2, d.Angle); 
     109            if (drawingOn) 
     110            { 
     111                currentObject.Size += new Vector(d.Magnitude, 0); 
     112                currentObject.AbsolutePosition += Vector.FromLengthAndAngle(d.Magnitude / 2, d.Angle); 
     113            } 
    102114        } 
    103115        else 
    104116        { 
    105             currentObject.Size += new Vector(vt, 0); 
    106             currentObject.AbsolutePosition += Vector.FromLengthAndAngle(vt / 2, d.Angle); 
    107             /*GameObject go = new GameObject(1, 1); 
    108             go.AbsolutePosition = turtle.AbsolutePosition; 
    109             go.Color = Color.Black; 
    110             Add(go); 
    111             lastPos = turtle.AbsolutePosition;*/ 
     117            if (drawingOn) 
     118            { 
     119                currentObject.Size += new Vector(vt, 0); 
     120                currentObject.AbsolutePosition += Vector.FromLengthAndAngle(vt / 2, d.Angle); 
     121            } 
    112122            turtle.AbsolutePosition += Vector.FromLengthAndAngle(vt, d.Angle); 
    113123        } 
     
    120130    /// </summary> 
    121131    /// <param name="asteet">Kulma asteina</param> 
    122     public void Kaanny(double asteet) 
     132    protected void TurnTo(double asteet) 
    123133    { 
    124134        if (turnTimer == null) 
     
    163173 
    164174    /// <summary> 
     175    /// Laittaa piirtämisen päälle 
     176    /// </summary> 
     177    protected void DrawingOn() 
     178    { 
     179        drawingOn = true; 
     180        SeuraavaKasky(); 
     181    } 
     182 
     183    /// <summary> 
     184    /// Ottaa piirtämisen pois päältä 
     185    /// </summary> 
     186    protected void DrawingOff() 
     187    { 
     188        drawingOn = false; 
     189        SeuraavaKasky(); 
     190    } 
     191     
     192    /// <summary> 
     193    /// Asettaa piirtojäljen paksuuden 
     194    /// </summary> 
     195    /// <param name="paksuus">Kuinka paksua jälkeä piirretään</param> 
     196    protected void DrawingWidth(double paksuus) 
     197    { 
     198        drawingWidth = paksuus; 
     199        SeuraavaKasky(); 
     200    } 
     201 
     202    /// <summary> 
     203    /// Asettaa piirtojäljen värin 
     204    /// </summary> 
     205    /// <param name="color">Minkä väristä jälkeä piirretään</param> 
     206    protected void DrawingColor(Color color) 
     207    { 
     208        lineColor = color; 
     209        SeuraavaKasky(); 
     210    } 
     211 
     212    /// <summary> 
    165213    /// Aliohjelma seuraavan käskyn suorittamista varten. Kutsutaan aina kun 
    166214    /// yksi käsky on saatu suoritettua loppuun. 
     
    175223 
    176224    /// <summary> 
    177     /// Aliohjelma käskyn lisäämiseksi käskyjonoon. 
    178     /// </summary> 
    179     /// <param name="a">Käsky, joka lisätään.</param> 
    180     public void LisaaKasky(Action a) 
    181     { 
    182         actionQueue.Enqueue(a); 
    183     } 
    184  
    185     /// <summary> 
    186     /// Aliohjelma käskyn lisäämiseksi käskyjonoon. 
    187     /// </summary> 
    188     /// <typeparam name="T1">Parametrin tyyppi</typeparam> 
    189     /// <param name="a">Lisättävä käsky</param> 
    190     /// <param name="p">Käskyn parametri</param> 
    191     public void LisaaKasky<T1>(Action<T1> a, T1 p) 
    192     { 
    193         actionQueue.Enqueue(delegate { a(p); }); 
    194     } 
    195  
    196     /// <summary> 
    197     /// Aliohjelma käskyn lisäämiseksi käskyjonoon. 
    198     /// </summary> 
    199     /// <typeparam name="T1">Ensimmäisen parametrin tyyppi</typeparam> 
    200     /// <typeparam name="T2">Toisen parametrin tyyppi</typeparam> 
    201     /// <param name="a">Lisättävä käsky</param> 
    202     /// <param name="p1">Ensimmäinen parametri</param> 
    203     /// <param name="p2">Toinen parametri</param> 
    204     public void LisaaKasky<T1, T2>(Action<T1, T2> a, T1 p1, T2 p2) 
    205     { 
    206         actionQueue.Enqueue(delegate { a(p1, p2); }); 
     225    /// Liikuttaa kilpikonnaa suoraan 
     226    /// </summary> 
     227    /// <param name="pituus">Matka, jonka kilpikonna kulkee</param> 
     228    public void Liiku(double pituus) 
     229    { 
     230        actionQueue.Enqueue(delegate { MoveTo(pituus); }); 
     231    } 
     232 
     233    /// <summary> 
     234    /// Kääntää kilpikonnaa. Kilpikonna kääntyy vastapäivään, eli jos haluat 
     235    /// kääntää kilpikonnaa myötäpäivään esim. 90 astetta, on se silloin 270 
     236    /// astetta. (360-90=270) 
     237    /// </summary> 
     238    /// <param name="kulma">Kulma asteina</param> 
     239    public void Kaanny(double kulma) 
     240    { 
     241        actionQueue.Enqueue(delegate { TurnTo(kulma); }); 
     242    } 
     243 
     244    /// <summary> 
     245    /// Laittaa kilpikonnan piirtämään viivaa peräänsä 
     246    /// </summary> 
     247    public void PiirtoPaalle() 
     248    { 
     249        actionQueue.Enqueue(DrawingOn); 
     250    } 
     251 
     252    /// <summary> 
     253    /// Ottaa kilpikonnan piirtämän viivan pois päältä 
     254    /// </summary> 
     255    public void PiirtoPois() 
     256    { 
     257        actionQueue.Enqueue(DrawingOff); 
     258    } 
     259 
     260    /// <summary> 
     261    /// Asettaa kilpikonnan piirtämän viivan paksuuden. 
     262    /// </summary> 
     263    /// <param name="paksuus">Kunka paksua viivaa piirretään</param> 
     264    public void AsetaViivanPaksuus(double paksuus) 
     265    { 
     266        actionQueue.Enqueue(delegate { DrawingWidth(paksuus); }); 
     267    } 
     268 
     269    /// <summary> 
     270    /// Asettaa kilpikonnan piirtämän viivan värin. 
     271    /// </summary> 
     272    /// <param name="vari">Piirrettävän viivan väri</param> 
     273    public void AsetaVari(Color vari) 
     274    { 
     275        actionQueue.Enqueue(delegate { DrawingColor(vari); }); 
    207276    } 
    208277} 
Note: See TracChangeset for help on using the changeset viewer.