- Timestamp:
- 2016-01-10 22:43:05 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2015/koodauskerho/otjojunt/Turtle/Turtle/Turtle/Turtle.cs
r7102 r7103 20 20 21 21 GameObject currentObject = null; 22 Vector lastPos; 22 23 Boolean drawingOn = true; 24 double drawingWidth = 2.0; 25 Color lineColor = Color.Black; 23 26 24 27 // Käskyt sisältävä jono … … 42 45 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 43 46 47 Camera.ZoomFactor = 0.5; 48 44 49 SeuraavaKasky(); 45 50 } … … 51 56 { 52 57 // TODO: Lisää tähän kilpikonnalle menevät käskyt. 53 // Esimerkiksi: Li saaKasky(Liiku,100.0);58 // Esimerkiksi: Liiku(100.0); 54 59 55 60 } … … 59 64 /// </summary> 60 65 /// <param name="pituus">Liikkeen pituus</param> 61 p ublic void Liiku(double pituus)66 protected void MoveTo(double pituus) 62 67 { 63 68 if (moveTimer == null) … … 70 75 moveTimer.Stop(); 71 76 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 } 76 85 moveTarget = turtle.AbsolutePosition + Vector.FromLengthAndAngle(pituus, turtle.AbsoluteAngle); 77 86 moveTimer.Start(); … … 98 107 moveTarget = null; 99 108 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 } 102 114 } 103 115 else 104 116 { 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 } 112 122 turtle.AbsolutePosition += Vector.FromLengthAndAngle(vt, d.Angle); 113 123 } … … 120 130 /// </summary> 121 131 /// <param name="asteet">Kulma asteina</param> 122 p ublic void Kaanny(double asteet)132 protected void TurnTo(double asteet) 123 133 { 124 134 if (turnTimer == null) … … 163 173 164 174 /// <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> 165 213 /// Aliohjelma seuraavan käskyn suorittamista varten. Kutsutaan aina kun 166 214 /// yksi käsky on saatu suoritettua loppuun. … … 175 223 176 224 /// <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); }); 207 276 } 208 277 }
Note: See TracChangeset
for help on using the changeset viewer.