Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.83 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6.  
  7. using Jypeli;
  8. using Jypeli.Assets;
  9. using Jypeli.Controls;
  10. using Jypeli.Effects;
  11. using Jypeli.Widgets;
  12.  
  13. /// <summary>
  14. /// Jatka selvittämällä miten uhrien määrän ollessa 0 siirrytään seuraavaan kenttään.
  15. /// </summary>
  16. public class Puumasimulaattori : PhysicsGame
  17. {
  18. PhysicsObject puuma;
  19. PhysicsObject uhri;
  20. PhysicsObject vanhus;
  21.  
  22. Image taustaKuva = LoadImage("taustalevel1");
  23. int kenttaNro = 1;
  24.  
  25.  
  26. Vector nopeusYlos = new Vector(0, 200);
  27. Vector nopeusAlas = new Vector(0, -200);
  28. Vector nopeusOikealle = new Vector(200, 0);
  29. Vector nopeusVasemmalle = new Vector(-200, 0);
  30.  
  31.  
  32. public override void Begin()
  33. {
  34. MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
  35. "Aloita peli", "Lopeta");
  36. Add(alkuValikko);
  37.  
  38. SeuraavaKentta();
  39. }
  40.  
  41. void SeuraavaKentta()
  42. {
  43. ClearAll();
  44.  
  45. if (kenttaNro == 1) LuoKentta("yritystausta");
  46. else if (kenttaNro == 2) LuoKentta("toinentausta");
  47. else if (kenttaNro > 3) Exit();
  48.  
  49. AsetaOhjaimet();
  50. }
  51.  
  52. /// <summary>
  53. /// Aliohjelma, jossa luodaan kenttä ja sen oleelliset osaset.
  54. /// </summary>
  55. void LuoKentta(string kenttaTiedostonNimi)
  56. {
  57. Level.Background.Image = taustaKuva;
  58. ColorTileMap ruudut = ColorTileMap.FromLevelAsset(kenttaTiedostonNimi);
  59.  
  60. ruudut.SetTileMethod(Color.Red, LuoPuuma);
  61. ruudut.SetTileMethod(Color.Cyan, LuoUhri);
  62. ruudut.SetTileMethod(Color.Gray, LuoVanhus);
  63. ruudut.SetTileMethod(Color.Black, LuoTaso);
  64. ruudut.Execute(20, 15);
  65. }
  66.  
  67. /// <summary>
  68. /// Aliohjelma luo puuman, eli käyttäjän liikutettavan hahmon.
  69. /// </summary>
  70. /// <param name="paikka"></param>
  71. /// <param name="leveys"></param>
  72. /// <param name="korkeus"></param>
  73. void LuoPuuma (Vector paikka, double leveys, double korkeus)
  74. {
  75. puuma = new PhysicsObject(40.0, 40.0);
  76. puuma.Shape = Shape.Circle;
  77. puuma.Color = Color.Red;
  78. puuma.Position = paikka;
  79. AddCollisionHandler(puuma, "uhri", PuumaTormasiUhriin);
  80. AddCollisionHandler(puuma, "vanhus", PuumaTormasiVanhukseen);
  81. Add(puuma);
  82. }
  83.  
  84. /// <summary>
  85. /// Luo uhrin, eli hahmon, johon yritetään osua. Hahmo liikkuu satunnaisesti.
  86. /// Voisko tämä myös laskea kuinka monta niitä uhreja on ja palauttaa sen arvon muiden aliohjelmien käyttöön?
  87. /// Vai tehdäänkö se LuoKentassa? Lista siitä joka tapauksessa pitäisi tehdä.
  88. /// </summary>
  89. /// <param name="paikka"></param>
  90. /// <param name="leveys"></param>
  91. /// <param name="korkeus"></param>
  92. void LuoUhri(Vector paikka, double leveys, double korkeus)
  93. {
  94.  
  95. uhri = new PhysicsObject(40.0, 40.0);
  96. uhri.Tag = "uhri";
  97. uhri.Shape = Shape.Circle;
  98. uhri.Color = Color.Green;
  99. uhri.Position = paikka;
  100. RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
  101. satunnaisAivot.ChangeMovementSeconds = 3;
  102. uhri.Brain = satunnaisAivot;
  103. Add(uhri);
  104. }
  105.  
  106. /// <summary>
  107. /// Luo vanhuksen, eli olennon, jota yritetään välttää. Hahmo liikkuu satunnaisesti.
  108. /// </summary>
  109. /// <param name="paikka"></param>
  110. /// <param name="leveys"></param>
  111. /// <param name="korkeus"></param>
  112. void LuoVanhus(Vector paikka, double leveys, double korkeus)
  113. {
  114. vanhus = new PhysicsObject(40.0, 40.0);
  115. vanhus.Tag = "vanhus";
  116. vanhus.Shape = Shape.Circle;
  117. vanhus.Color = Color.Gray;
  118. vanhus.Position = paikka;
  119. RandomMoverBrain satunnaisAivot = new RandomMoverBrain(50);
  120. satunnaisAivot.ChangeMovementSeconds = 3;
  121. vanhus.Brain = satunnaisAivot;
  122. Add(vanhus);
  123. }
  124.  
  125. /// <summary>
  126. /// Luo staattisia tasoja
  127. /// </summary>
  128. /// <param name="paikka"></param>
  129. /// <param name="leveys"></param>
  130. /// <param name="korkeus"></param>
  131. void LuoTaso(Vector paikka, double leveys, double korkeus)
  132. {
  133. PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
  134. taso.Position = paikka;
  135. taso.Color = Color.Black;
  136. taso.CollisionIgnoreGroup = 1;
  137. Add(taso);
  138. }
  139.  
  140. /// <summary>
  141. /// Aliohjelma tulostaa tekstitiedostosta viestin ruudulle, kun puuma saa uhrin kiinni.
  142. /// Uhri tuhoutuu. Jatka muuttamalla siten, että siirtyy seuraavaan kenttään, kun kaikki on saatu kiinni.
  143. /// </summary>
  144. /// <param name="puuma"></param>
  145. /// <param name="uhri"></param>
  146. void PuumaTormasiUhriin(PhysicsObject puuma, PhysicsObject uhri)
  147.  
  148. {
  149. string[] nimet = LueTiedosto();
  150. string viesti = TulostaTiedosto(nimet);
  151.  
  152. MessageDisplay.Add(viesti);
  153. uhri.Destroy();
  154. }
  155.  
  156. /// <summary>
  157. /// Tulostaa ruudulle viestin "Hävisit!", mikäli vanhus osuu puumaan. Puuma tuhoutuu.
  158. /// </summary>
  159. /// <param name="puuma"></param>
  160. /// <param name="vanhus"></param>
  161. void PuumaTormasiVanhukseen(PhysicsObject puuma, PhysicsObject vanhus)
  162. {
  163. MessageDisplay.Add("Hävisit!");
  164. puuma.Destroy();
  165. }
  166.  
  167.  
  168. /// <summary>
  169. /// Asetetaan ohjaimet, joilla liikutellaan puumaa. Puuma ei just nyt suostu liikkumaan vasemmalle.
  170. /// </summary>
  171. void AsetaOhjaimet()
  172. {
  173.  
  174. Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liiku ylös", puuma, nopeusYlos);
  175. Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, puuma, Vector.Zero);
  176. Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liiku alas", puuma, nopeusAlas);
  177. Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, puuma, Vector.Zero);
  178. Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liiku oikealle", puuma, nopeusOikealle);
  179. Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, puuma, Vector.Zero);
  180. Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liiku vasemmalle", puuma, nopeusVasemmalle);
  181. Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, puuma, Vector.Zero);
  182.  
  183.  
  184. Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
  185. }
  186.  
  187. /// <summary>
  188. /// Liikkumiseen tarvittava aliohjelma
  189. /// </summary>
  190. /// <param name="puuma"></param>
  191. /// <param name="nopeus"></param>
  192. void AsetaNopeus(PhysicsObject puuma, Vector nopeus)
  193. {
  194. if ((nopeus.Y < 0) && (puuma.Bottom < Level.Bottom)) // "Jos liikkuu alareunaan asti jne."
  195. {
  196. puuma.Velocity = Vector.Zero;
  197. return;
  198. }
  199. if ((nopeus.Y > 0) && (puuma.Top > Level.Top))
  200. {
  201. puuma.Velocity = Vector.Zero;
  202. return;
  203. }
  204. if ((nopeus.X < 0) && (puuma.Right < Level.Right))
  205. {
  206. puuma.Velocity = Vector.Zero;
  207. return;
  208. }
  209. if ((nopeus.X > 0) && (puuma.Left < Level.Left))
  210. {
  211. puuma.Velocity = Vector.Zero;
  212. return;
  213. }
  214.  
  215. puuma.Velocity = nopeus;
  216. }
  217.  
  218. public static string[] LueTiedosto()
  219. {
  220. // Määritellään tiedostopolku vakioksi. Pitäisi varmaan lisätä toi tiedosto tuonne contentiin, mutta viimeksi bugasi, kun yritin.
  221. const string POLKU = @"D:\Documents\Kurssit\Ohj1\harjoitusty\ht\Puumasimulaattori\Puumasimulaattori\PuumasimulaattoriContent\nimet.txt";
  222.  
  223. string[] luetutRivit = File.ReadAllLines(POLKU);
  224. return luetutRivit;
  225. }
  226.  
  227. public static string TulostaTiedosto(string[] tiedosto)
  228. {
  229. int i = RandomGen.NextInt(0, tiedosto.Length);
  230. string nimi = tiedosto[i];
  231.  
  232. return nimi;
  233. }
  234.  
  235. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement