diff --git a/Cat Rescue/Cat Rescue/Cat Rescue.cs b/Cat Rescue/Cat Rescue/Cat Rescue.cs index d3ece8d06647105deb93b09ec0cacfec874f7e28..939791c0853545b626c93968b499eb7bc4cc342a 100644 --- a/Cat Rescue/Cat Rescue/Cat Rescue.cs +++ b/Cat Rescue/Cat Rescue/Cat Rescue.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; using Jypeli; using Jypeli.Assets; using Jypeli.Controls; @@ -15,6 +14,26 @@ namespace Cat_Rescue; /// </summary> public class Cat_Rescue : Game { + //kentät merkkijonoina + private static readonly String[] lines1 = { + " YYYYYYYYYYYYYYYYYYYYYYYY ", + " Y X Y ", + " Y # X = Y ", + " Y * X Y ", + " Y X XXX XXX Y ", + " Y X X X Y ", + " YXX XXXX X X Y ", + " Y X X Y ", + " Y = X X Y ", + " Y X X Y ", + " YXX XXXXXXXX X Y ", + " Y X X Y ", + " Y X X Y ", + " Y # X # X Y ", + " Y X X C Y ", + " Y X X Y ", + " YYYYYYYYYYYYYYYYYYYYYYYY ", + }; private static readonly String[] level1 = { " YYYYYYYYYYYYYYYYYYYYYYYY ", " Y X Y ", @@ -31,23 +50,23 @@ public class Cat_Rescue : Game " Y X X Y ", " Y 1 X 2 X Y ", " Y X X Y ", - " Y * X C X Y ", + " YC * X X Y ", " YYYYYYYYYYYYYYYYYYYYYYYY ", }; private int[][] catRoutes = new int[][] {[4, 2, 3, 6, 2, 6, 1, 6, 2, 11, 3, 13, 0, 0], [4, 2, 1, 5, 2, 6, 1, 6, 2, 11, 3, 13, 0, 0],[2, 5, 1, 11, 2, 6, 3, 11, 3, 1, 3, 1, 0, 0]}; + private int[] catPos = new int[6]; + //Yksittäisiä pelaajan liikkumiseen liittyviä muuttujia private int[] playerPos = new int[2]; - private int[] catPos = new int[6]; private bool playerMoveCooldown = true; - private int[,] map_entities = new int[24,24]; - + //Kartan luomiseen ja käyttämiseen liittyviä muuttujia //private Image planksImage = LoadImage(""); //private Image oWallImage = LoadImage(""); //private Image iWallImage = LoadImage(""); //private Image keyImage = LoadImage(""); //private Image cageImage = LoadImage(""); - + private int[,] map_entities = new int[24,24]; private GameObject player; private GameObject key; private GameObject[] cage = new GameObject[3]; @@ -65,14 +84,12 @@ public class Cat_Rescue : Game Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); } - private void CreateMap() + private void CreateMap() //Aliohjelma, joka luo kartan käyttäen muita aliohjelmia { Level.Background.CreateGradient(Color.SlateGray, Color.ForestGreen); CreateFloor(750, 500, Color.LightGray); - - TileMap tiles = TileMap.FromStringArray(level1); tiles.SetTileMethod('X', CreateWall, Color.Gray); tiles.SetTileMethod('Y', CreateWall, Color.DarkGray); @@ -90,23 +107,25 @@ public class Cat_Rescue : Game - private void CreateWall(Vector location, double width, double height, Color color) + private void CreateWall(Vector location, double width, double height, Color color) //Aliohjema, joka luo kentän seinät { GameObject wall = new GameObject(width, height); wall.Position = location; wall.Color = color; - map_entities[Convert.ToInt16(wall.X/32+11.5), Convert.ToInt16(wall.Y/32+8)] = 1; Add(wall); + + //Tallennetaan seinät koordinaatistoon, helppoa viittaamista varten + map_entities[Convert.ToInt16(wall.X/32+11.5), Convert.ToInt16(wall.Y/32+8)] = 1; } - private void CreateFloor(double width, double height, Color color) + private void CreateFloor(double width, double height, Color color) //Aliohjelma, joka luo kentän lattian { GameObject floor = new GameObject(width, height); floor.Color = color; Add(floor); } - private void CreateCageAndCat(Vector location, double width, double height, Color color, int id) + private void CreateCageAndCat(Vector location, double width, double height, Color color, int id)//Aliohjelma, joka luo kissojen häkit kenttään { cage[id] = new GameObject(width, height); cat[id] = new GameObject(width, height); @@ -119,22 +138,25 @@ public class Cat_Rescue : Game catPos[2*id] = Convert.ToInt16(cat[id].X/32+11.5); catPos[2*id+1] = Convert.ToInt16(cat[id].Y/32+8); + //Tallennetaan häkit koordinaatistoon, helppoa viittaamista varten map_entities[Convert.ToInt16(cage[id].X/32+11.5), Convert.ToInt16(cage[id].Y/32+8)] = (id + 3); Add(cat[id]); Add(cage[id]); } - private void CreateKey(Vector location, double width, double height, Color color) + private void CreateKey(Vector location, double width, double height, Color color) //Aliohjelma, joka luo avaimen kenttään { key = new GameObject(width, height); key.Position = location; key.Color = color; - map_entities[Convert.ToInt16(key.X/32+11.5), Convert.ToInt16(key.Y/32+8)] = 2; Add(key); + + //Tallennetaan häkit koordinaatistoon, helppoa viittaamista varten + map_entities[Convert.ToInt16(key.X/32+11.5), Convert.ToInt16(key.Y/32+8)] = 2; } - private void CreateGuard(Vector location, double width, double height, Color color) + private void CreateGuard(Vector location, double width, double height, Color color) //Aliohjelma, joka luo vartijat { GameObject guard = new GameObject(width, height); guard.Position = location; @@ -150,19 +172,19 @@ public class Cat_Rescue : Game Add(guard); } - private void CreatePlayer(Vector location, double width, double height, Color color) + private void CreatePlayer(Vector location, double width, double height, Color color) //Aliohjelma, joka luo pelaaja hahmon ja määrää pelaajan muuttujat { player = new GameObject(width, height); player.Position = location; player.Color = color; player.Tag = "Player"; + Add(player); + playerPos[0] = 1; playerPos[1] = 1; - - Add(player); } - private void CreateKeys() + private void CreateKeys() //Kääntää näppäinten painallukset pelaajan liikkeeeksi { Keyboard.Listen(Key.W, ButtonState.Pressed, MovePlayer, "Liikkuu vasemmalle", player, 0, 1); Keyboard.Listen(Key.A, ButtonState.Pressed, MovePlayer, "Liikkuu vasemmalle", player, -1, 0); @@ -170,14 +192,18 @@ public class Cat_Rescue : Game Keyboard.Listen(Key.D, ButtonState.Pressed, MovePlayer, "Liikkuu vasemmalle", player, 1, 0); } - private void MovePlayer(GameObject entity, int x, int y) + private void MovePlayer(GameObject entity, int x, int y) //Aliohjema, joka liikutta pelaajaa ja aloitaa kaiken vuorovaikutuksen kentän kanssa. { + //estää liikkuumisen, kon edellinen liike on kesken if (playerMoveCooldown) { + //estää liikkumisen, jos edessä on seinä if (map_entities[playerPos[0] + x, playerPos[1] + y] != 1) { playerMoveCooldown = false; player.MoveTo(new Vector((playerPos[0]-11.5+ x)*32, (playerPos[1]-8+y)*32), 50, playerPosSet(x, y)); + + //tarkistaa, jos edessä on avain ja kerää avaimen mikäli tämä on tosi if (map_entities[playerPos[0], playerPos[1]] == 2) { key.Destroy(); @@ -186,6 +212,7 @@ public class Cat_Rescue : Game map_entities[playerPos[0], playerPos[1]] = 0; } + //tarkistaa, jos edessä on häkki (ja onko pelaajalla avain) ja avaa häkin mikäli nämä ovat tosi if (map_entities[playerPos[0], playerPos[1]] > 2 && keyHeld == true) { for (int i = 0; i < 4; i++) @@ -197,7 +224,6 @@ public class Cat_Rescue : Game map_entities[playerPos[0], playerPos[1]] = 0; } } - Console.WriteLine("Cat Freed!"); } } @@ -273,7 +299,7 @@ public class Cat_Rescue : Game return null; } - private System.Action playerPosSet(int x, int y) + private System.Action playerPosSet(int x, int y) //Tallentaa pelaajan sijainnin koordinaatiostoon joka kerta, kun pelaaja liikkuu { playerPos[0] += x; playerPos[1] += y;