Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tmruisma/ohj1ht
  • eljuarha/ohj1ht
  • alvejmsu/ohj1ht
  • tuvoo/ohj1ht
  • annelinu/ohj1ht
  • malonen/ohj1ht
  • jphkauxs/ohj1ht
  • rarouvin/vaiskin-kauppapeli
  • ansovalk/ohj1ht
  • tkleinon/ohj1ht
  • tmraassy/ohj1ht
  • fmksepps/ohj1ht
  • kosksaka/ohj1ht
  • aatjarvs/ohj1ht
  • segersls/ohj1ht
  • peropami/ohj1ht
  • jylhasmy/ohj1ht
  • suomiejs/ohj1ht
  • ojanpele/ohj1ht
  • oeppulkk/ohj1ht
  • pulliami/ohj1ht
  • lemakinn/ohj1ht
  • lappkvuu/ohjelmointi-1-ht-1
  • misutuom/ohj1ht
  • vivclaje/harkkatyo
  • kohelasa/ohj1ht
  • tulehtol/ohj-1-ht-2023
  • otoskinn/ohj1ht
  • karossi/ohj1ht
  • anttlaol/ohj1ht
  • autioans/ohj1ht
  • vjokine/ohjelmointi-1-kurssin-harkkapeli
  • viempaas/ohj1ht
  • jjikouyz/ohj1ht
  • pejuuso/ohj1ht
  • ideljako/ohj1ht
  • juutirls/ohj1ht
  • nivagadd/ohj1ht
  • elvivihe/ohj1ht
  • tie/ohj1/2023k/ohj1ht
  • aruokane/ohj1ht
  • nimirich/ohj1ht
  • alarnika/ohj1ht
  • viheijo/ohj1ht
  • esshelkr/ohj1ht
  • tttkanka/ohjelmointi-1-harjoitustyo
  • jmporras/ohj1ht
  • sernopet/ohj1ht
  • alnikupa/ohj1ht
  • kamarama/ohj1ht
  • pakakata/ohj1ht
  • sorjonmi/ohj1ht
  • silimapa/ohj1ht
  • jatirkko/ohj1ht
  • jsundelu/ohj1ht
  • maerlepo/ohj1ht
  • korhoovy/ohj1ht
  • partanji/ohj1ht
  • amheikkz/ohj1ht
  • koskinnm/ohj1ht
  • pehaline/ohj1ht
  • svhyvaos/ohj1ht
  • tetutaim/ohj1ht
  • alaluuop/ohj1ht
  • veijhrxz/ohj1ht
  • anmatala/ohjelmointi-1-harjoitustyo
  • anidmapo/ohj1ht
  • ttipoiko/ohj1ht
  • pyhalavh/ohj1ht
  • jemaijal/ohj1ht
  • joanurmi/ohj1ht
  • eemaelsa/ohj1ht
  • mijoutri/ohj1ht
  • ijsalmin/ohj1ht
  • saimaahu/ohj1ht
  • annkriau/ohj1ht
  • mkhirvon/ohj1ht
  • uttija/ohj1ht
  • mikkolto/ohj1ht
  • meakorho/ohj1ht
  • laaksoel/ohj1ht
  • mholammi/ohj1ht
  • krrekahk/ohj1ht
  • wistnest/ohj1ht
  • arhesant/arttu-s-ohj-1-peli
  • ihakalel/ohj1ht
  • ijaslaii/ohj1ht
  • veosvuol/ohj1ht
  • saarelee/ohj-1-ht-o
  • aevantti/ohj1ht
  • akruth/ohj1ht
  • idjupirh/ohj1ht
  • cgmlilja/ohj1ht
  • pojujoen/ohj1ht
  • ssfrom/ohj1ht
  • heinonpe/ohj1ht
  • viitanti/ohj1ht
  • lehtolts/ohj1ht
  • galetas/ohj1ht
  • dikogalu/ohj1ht
  • wahesale/ohj1ht
  • tepesimo/ohj1ht
  • ssapakys/ohj1ht
  • vestmine/ohj1ht
  • dooleyy/ohj1ht
  • vicdavfa/ohj1ht
  • kalloupe/ohj1ht
  • katajaam/ohj1ht
  • aransjos/ohj1ht
  • kaahyton/ohj1ht
  • jarvluee/ohj1ht
  • joaframi/ohj1ht
  • saiannka/ohj1ht
  • sasumyrs/ohj-1-ht-2023
  • jumavehi/ohj-1-ht-k-23
  • juhahuov/ohj1ht
  • immoneth/ohj-1-ht-thomas-immonen
  • rimijarv/ohj1ht
  • ponkayy/ohj1ht
  • tiainess/ohj1ht
  • setkinnu/ohj1ht
  • vvkeinan/ohj1ht
  • jelavonv/ohj1ht
  • haukjohe/ohj1ht
  • jumavais/ohj1ht
  • esmajoki/ohj1ht
  • minkjmzy/ohj1ht
  • jaahwiih/ohj1ht
  • maalvirt/ohj1ht
  • tttikkan/ohj1ht
  • kihedema/ohj1ht
  • nipeniem/ohj1ht
  • saaraijm/ohj1ht
  • roalsuvi/ohj1ht
  • sjkoskel/ohj1ht
  • hsjkulma/hannelen-harjoitustyo-ohj-1
  • mitaniem/ohj1ht
  • ahiekkan/ohj1ht
  • nmpuskzv/ohj-1-ht
  • wwwmolqo/ohj1ht
  • juntjuii/ohj1ht
  • santurun/ohj1ht
  • ettalaes/ohj-1-ht
  • hairjarv/ohj1ht
  • jjbergfo/ohj1ht
  • lehtikmi/ohj1ht
  • sianpapa/ohj1ht
  • aaperttu/tipitsi
  • tie/ohj1/2024k/ohj1ht
  • hesalmuu/ohj1ht
  • erkkaoxs/ohj1ht
  • temhints/ohj1ht
  • bekrnybe/ohj-1-ht-beata-otto
  • sawakorp/ohj1ht
  • saarinan/ohj1ht
  • kronjoma/ohj1ht
  • otjolyyt/ohj1ht-otjolyyt
  • tiantaha/ohj1ht
  • krislima/ohj1ht
  • rauhulil/suunnitelma
  • jutasier/ohj1ht
  • areeheki/ohj1ht
  • lausofla/ohj-1-ht
  • vemahaka/ohj1ht
  • suurnaat/ohj1ht
  • jakaraut/ohj1ht
  • jesupalo/ohj1ht
  • ferin/ohj1ht
  • annpauko/ohj1ht
  • npfriman/ohj1ht
  • kauppmsx/ohj1ht
  • vilaleka/ohj1ht
  • rohekokk/ohj1ht
  • roiirera/ohj1ht
  • jakinnun/ohj1ht
  • tormsu/titanic
  • saukkota/ohj1ht
  • iinpitka/ohj1ht
  • samalauk/ohj1ht
  • neemjaak/ohj1ht
  • mikkonhm/ohj1ht
  • hietmaem/ohj1ht
  • skytasuz/skytta-harjoitustyo-ohj-1-kevat
  • ylonmami/ohj1ht
  • rojunatu/ohj1ht
  • niemkeys/ohj1ht
  • korhoajx/ohj1ht
  • jjrsavol/ohj1ht
  • jowinoke/ohj1ht
  • hasemajo/ohj1ht
  • pinsofhe/ohj1ht
  • peltonla/ohj1ht
  • hamaot/ohj1ht
  • kettunko/ohj1ht
  • ansammal/ohj1ht
  • lxcevrhh/ohj1ht
  • niemhizz/ohj1ht
  • jumakemp/ohj1ht
  • vmahonen/ohj-1-ht-veeti-ahonen
  • mamahank/ohj1ht
  • ajehepol/ohj1ht
  • sisverve/ohj1ht
  • samapeke/ohj1ht
  • mejniemi/ohj-1-peli
  • janjuhni/ohj1ht
  • poyhontj/ohj1ht
  • valimasj/orginal-matopeli
  • adaoliro/ohj1ht
  • ejlahti/ohj1ht
  • iileskys/ohj1ht
  • juuariju/ohj-1-ht
  • eetuoril/ohj1ht
  • ebkaariv/ohj1ht
  • mnarhi/ohj1ht
  • peltsaxs/ohj1ht
  • tkoivisx/ohj1ht
  • eovvaris/ohj-1-ht-1
  • heilauma/ohj1ht
  • mmuhonen/ohj1ht
  • leevilha/ohj1ht
  • jurvidan/ohj1ht
  • iuteitti/ilonan-harjoitustyo
  • sinkkoja/ohj1ht
  • koivuaam/ohj1ht
  • jimsaixv/salimake
  • ihalaiv/ohj1ht
  • sellmmv/projekti
  • mimatasi/ohj1ht
  • sakapusa/harkkatyo
  • annkerki/ohj1ht
  • sabevaha/ohjelmointi-1-kurssin-peli
  • alnelima/ohj1ht
  • kijoperk/ohj1ht
  • tlelakan/ohj1ht
  • ojtorppa/ohj1ht
  • sutinele/ohj1ht
  • mhjlauyy/ohj1ht
  • tidentou/ohj-1-ht
  • akpameka/ohj1ht
  • nielraut/ohj1ht
  • jomimati/ohj1ht
  • alopaate/ohj1ht
  • niptunwu/ohj1ht
  • lihiauka/ohj1ht
  • kekuvaja/ohj1ht
  • salolase/bossikasi
  • venipiil/ohj1ht
  • rantalvo/ohj1ht
  • joveheko/raekuuro
  • vivakork/ohj1ht
  • nikoskhy/ohj1ht
  • jermatkr/suunnitelmamdks
  • jaempelt/ohj1ht
  • jjhonkuu/ohj1ht
  • rautpmxt/ohj1ht
  • mmoraru/escape-from-hell
  • espakolh/ohj1ht
  • kaotkurj/ohj1ht
  • niemeiws/ohj-1-ht
  • sisavart/ohj1ht
  • sivejukl/ohj1ht
  • panjuhle/ohj1ht
  • rtaalikk/ohj1ht
  • hesalone/ohj1ht
  • topeliku/ohj1ht
  • konttijm/ohj1ht
  • llaung/ohj1ht
  • jsnikkin/ohj1ht
  • spicjrxz/ohj1ht
  • kiikriha/ohj1ht
  • juhyytin/ohj1ht
  • jajuruti/jajuruti
  • vejovile/ohj1ht
  • jjoensyu/ohj1ht
  • hjnirhax/ohj1ht
  • nobekail/ohj1ht
  • wendjkvt/ohj1ht
  • aapotska/platformer
  • lamminm/ohj1ht
  • garammtu/platformerpeli
  • apeshhhh/ohj1ht
  • tototuru/ohj1ht
  • tejupasa/ohj1ht
  • amelhadd/ohj1ht
  • heminyrh/ohj1ht
  • rehirvel/ohj1ht
  • ilfrjohe/ohj1ht
  • vkarppaz/scrape-poster
  • rikantos/ohj1ht
  • jenjulha/ohj1ht
  • miimatpa/ohj1ht
  • julsadka/ohj1ht
  • gozavoro/ohj1ht
  • viljanta/ohj1ht
  • kostamol/ohj1ht
  • ylivezu/ohj1ht
  • pjsydanm/ohj1ht
  • suvleean/ohj1ht
  • diivysei/ohjelmointi-1-harjoitustyo
  • tapiopp/ohj1ht
  • kkpyykko/ohj1ht
  • summanwe/ohj1ht
  • lpuraney/ohj1ht
  • serimaai/ohj1ht
  • tarkkael/ohj1ht
  • eljoholt/ohj1ht
  • olenkail/ohj1ht
  • alkarant/harjoitustyo
  • sajovann/ohj1ht
  • vivestma/ohj1ht
  • sodenrzt/ohj1ht
  • sssuonyy/ohj1ht
  • salmiene/ohj1ht
  • vepsanew/ohj1ht
  • aslimma/ohj1ht
  • vvimmone/ohjelmointi-1-harjoitustyo
  • hejohyde/ohjelmointi-1-harjoitustyo-hh
  • phjhaapa/ohj1ht
  • makyolaa/ohj1ht
  • mipaflin/harjoitustyo
  • juutijos/ohj1ht
  • jaaronur/harjoitustyo
  • tie/ohj1/2025k/ohj1ht
  • teamakin/ohj1ht
  • jylhali/ohj1ht
  • ollilaas/ohj1ht
  • jkasper/ohj1ht
  • kimakiiv/ohj1ht
  • hevianes/ohj-1-ht-1
  • xwusxjid/harjoitustyo-ohj-1
  • miiseppa/ohj1ht
  • miolnauk/ohj1ht
  • karjulto/ohj1ht
  • leeaable/ohj1ht
  • emraiha/ohj1ht
  • idriemla/ohj1ht
  • mkpsoini/ohj1ht
  • lewejoen/ohj1ht
  • blanilad/ohj1ht
  • matusora/ohj1ht
  • olsonasu/ohj1ht
  • puustipa/ohj-1-reaktiopeli
  • moishe/ohj1ht
  • keleppal/ohj1ht
  • aiesmati/ohj1ht
  • misajuha/ohj1ht
  • aaelriih/ohj1ht
  • misokopo/ohj1ht
  • iblagode/ohj1ht
  • kaaelmke/ohj1ht
  • iihuuton/ohj-1-ht
  • elmapurs/ohj-1-peli
  • hankssxs/ohj1ht
  • aisoantt/ohj1ht
  • jjsaukks/ohj1ht
  • emmidaka/ohj1ht
  • lohisajo/ohj1ht
  • jlahdeww/ohj1ht
  • tepekyla/ohj1ht
  • alaxgroe/ohj1ht
  • mkrajazz/ohj1ht
  • hihehuis/ohj1ht
  • sasisiti/ohj1ht
  • tshalme/ohj1ht
  • eskrelry/ohj1ht
  • haleriak/ohj1ht
  • kerakoju/ohj1ht
  • elainnas/peli
  • sinsushi/ohj1ht
  • otemhann/ohj1ht
  • eepetaka/ohj1ht
  • ieepirzy/ohj-1-ht
  • onmahela/ohj1ht
  • jupakraa/ohj1ht
  • rajatota/ohj1ht
  • sasaable/ohj1ht
  • jupakraa/harjoitustyo-1
  • jahalmtv/ohj1ht
  • joalvihe/ohj1ht
  • joeehimm/ohj1ht
  • anvasavi/ohj1ht
  • mhmniskx/ohj1ht
  • rintalsa/ohj1ht
  • veetoivo/ohj1ht
  • rtmatilt/Swatteri
  • maukotos/blackjack
  • karppir/ohj1ht
  • tammtu/ohj1ht
388 results
Show changes
Commits on Source (9)
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/.idea.Cat Rescue.iml
/modules.xml
/contentModel.xml
/projectSettingsUpdater.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cat Rescue", "Cat Rescue\Cat Rescue.csproj", "{FF737DC5-AA74-4B0E-9A50-28E9DEF03A8A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FF737DC5-AA74-4B0E-9A50-28E9DEF03A8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FF737DC5-AA74-4B0E-9A50-28E9DEF03A8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF737DC5-AA74-4B0E-9A50-28E9DEF03A8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF737DC5-AA74-4B0E-9A50-28E9DEF03A8A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
using System;
using System.Collections.Generic;
using Jypeli;
using Jypeli.Assets;
using Jypeli.Controls;
using Jypeli.Widgets;
namespace Cat_Rescue;
/// @author Tomi
/// @version 14.03.2025
/// <summary>
///
/// </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 ",
" Y 0 X 6 Y ",
" Y X Y ",
" Y X XXX XXX Y ",
" Y X X X Y ",
" YXX XXXX X X Y ",
" Y X X Y ",
" Y 5 X X Y ",
" Y X X Y ",
" YXX XXXXXXXX X Y ",
" Y X X Y ",
" Y X X Y ",
" Y 1 X 2 X Y ",
" Y X X Y ",
" Y * X X C 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[][] guardRoutes = new int[][] {[2, 8, 4, 8, 0, 0], [4, 11, 2, 11, 0, 0]};
private int catCount = 3;
private int[] catPos = new int[6];
private int[] guardPos = new int[4];
//Yksittäisiä pelaajan liikkumiseen liittyviä muuttujia
private int[] playerPos = new int[2];
private bool playerMoveCooldown = true;
//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[] guard = new GameObject[2];
private GameObject[] cage = new GameObject[3];
private GameObject[] cat = new GameObject[3];
private int score = 0;
private bool keyHeld = false;
public override void Begin()
{
CreateMap();
CreateKeys();
PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
GuardMovement();
}
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);
tiles.SetTileMethod('*', CreateKey, Color.LightYellow);
tiles.SetTileMethod('C', CreatePlayer, Color.White);
for (int i = 5; i < 7; i++)
{
tiles.SetTileMethod(Convert.ToChar((char)(i+48)), CreateGuard, Color.Salmon, i);
}
for (int i = 0; i < 3; i++)
{
tiles.SetTileMethod(Convert.ToChar((char)(i+48)), CreateCageAndCat, Color.LightBlue, i);
}
tiles.Execute(32, 32);
Camera.ZoomToLevel();
}
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;
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) //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)//Aliohjelma, joka luo kissojen häkit kenttään
{
cage[id] = new GameObject(width, height);
cat[id] = new GameObject(width, height);
cage[id].Position = location;
cage[id].Color = color;
cat[id] = new GameObject(width, height);
cat[id].Position = location;
cat[id].Color = Color.Purple;
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) //Aliohjelma, joka luo avaimen kenttään
{
key = new GameObject(width, height);
key.Position = location;
key.Color = color;
Add(key);
//Tallennetaan avaimet 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, int id) //Aliohjelma, joka luo vartijat
{
guard[id-5] = new GameObject(width, height);
guard[id-5].Position = location;
guard[id-5].Color = color;
guardPos[2*(id-5)] = Convert.ToInt16(guard[id-5].X/32+11.5);
guardPos[2*(id-5)+1] = Convert.ToInt16(guard[id-5].Y/32+8);
map_entities[Convert.ToInt16(guard[id-5].X/32+11.5), Convert.ToInt16(guard[id-5].Y/32+8)] = id+1;
Add(guard[id-5]);
}
private void CreateCat(Vector location, double width, double height, Color color)
{
GameObject guard = new GameObject(width, height);
guard.Position = location;
guard.Color = color;
Add(guard);
}
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; //21
playerPos[1] = 1;
}
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);
Keyboard.Listen(Key.S, ButtonState.Pressed, MovePlayer, "Liikkuu vasemmalle", player, 0, -1);
Keyboard.Listen(Key.D, ButtonState.Pressed, MovePlayer, "Liikkuu vasemmalle", player, 1, 0);
}
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();
keyHeld = true;
Console.WriteLine("Key Found!");
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++)
{
if (map_entities[playerPos[0], playerPos[1]] == (i + 3))
{
cage[i].Destroy();
ObjectMove(cat[i], catRoutes[i], catPos[2*i], catPos[2*i+1], 6,0, 50, true);
map_entities[playerPos[0], playerPos[1]] = 0;
}
}
Console.WriteLine("Cat Freed!");
}
}
}
}
private void GuardMovement()
{
for (int i = 0; i < 2; i++)
{
ObjectMove(guard[i], guardRoutes[i], guardPos[2*i], guardPos[2*i+1], 0, 1, 50, false);
}
}
private void ObjectMove(GameObject entity, int[] route, int posX, int posY, int cycles, int delay, int speed, bool destoy)
{
Timer timer = new Timer(0.1);
timer.Timeout += delegate
{
MovementFunction(entity, route, posX, posY, cycles, speed);
posX++; posY++;
posX--; posY--;
timer.Interval = 2*((route[2*(route[route.Length-1])+1]*32.0/speed));
if (cycles != 0)
{
if (route[2 * (route[route.Length - 1])] == 1) //up
{
posY += route[2 * (route[route.Length - 1]) + 1];
}
if (route[2 * (route[route.Length - 1])] == 2) //right
{
posX += route[2 * (route[route.Length - 1]) + 1];
}
if (route[2 * (route[route.Length - 1])] == 3) //down
{
posY += -route[2 * (route[route.Length - 1]) + 1];
}
if (route[2 * (route[route.Length - 1])] == 4) //left
{
posX += -route[2 * (route[route.Length - 1]) + 1];
}
}
else
{
if (route[2 * (route[route.Length - 1])] == 1) //up
{
posY += route[2 * (route[route.Length - 1]) + 1];
}
if (route[2 * (route[route.Length - 1])] == 2) //right
{
posX += route[2 * (route[route.Length - 1]) + 1];
}
if (route[2 * (route[route.Length - 1])] == 3) //down
{
posY += -route[2 * (route[route.Length - 1]) + 1];
}
if (route[2 * (route[route.Length - 1])] == 4) //left
{
posX += -route[2 * (route[route.Length - 1]) + 1];
}
}
timer.Interval = ((route[2*(route[route.Length-1])+1]*32.0/speed) + delay);
route[route.Length-1] += 1;
if (route[route.Length-1] == 2 && cycles == 0)
{
route[route.Length-1] = 0;
}
if (route[route.Length-1] == 7 && destoy)
{
Remove(entity);
score++;
if (score == catCount)
{
Console.WriteLine("You Win!");
}
}
};
if (cycles == 0)
{
timer.Start();
}
else
{
timer.Start(cycles+1);
}
}
private System.Action MovementFunction(GameObject entity, int[] route, int posX, int posY, int cycles, int speed)
{
if (route[2*(route[route.Length-1])] == 1) //up
{
entity.MoveTo(new Vector((posX - 11.5) * 32, (route[2*(route[route.Length-1])+1] + posY - 8) * 32), speed);
}
if (route[2*(route[route.Length-1])] == 2) //right
{
entity.MoveTo(new Vector((route[2*(route[route.Length-1])+1] + posX - 11.5) * 32, (posY - 8) * 32), speed);
}
if (route[2*(route[route.Length-1])] == 3) //down
{
entity.MoveTo(new Vector((posX - 11.5) * 32, (- route[2*(route[route.Length-1])+1] + posY - 8) * 32), speed);
}
if (route[2 * (route[route.Length - 1])] == 4) //left
{
entity.MoveTo(new Vector((-route[2 * (route[route.Length - 1]) + 1] + posX - 11.5) * 32, (posY - 8) * 32), speed);
}
return null;
}
private System.Action playerPosSet(int x, int y) //Tallentaa pelaajan sijainnin koordinaatiostoon joka kerta, kun pelaaja liikkuu
{
playerPos[0] += x;
playerPos[1] += y;
Console.WriteLine(playerPos[0]+", "+playerPos[1]);
Timer movecooldown = new Timer();
movecooldown.Interval = 30.0/80.0; //movement cooldown!
movecooldown.Timeout += delegate
{
playerMoveCooldown = true;
};
movecooldown.Start(1);
return null;
}
private void Debug()
{
Console.WriteLine("I am annoyed :)");
}
}
\ No newline at end of file
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Jypeli.NET" Version="11.*"/>
</ItemGroup>
</Project>
Cat Rescue/Cat Rescue/Images/floortile32.png

340 B

#region Using Statements
using System;
using System.Collections.Generic;
using System.Linq;
#endregion
namespace Cat_Rescue
{
/// <summary>
/// The main class.
/// </summary>
public static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
using var game = new Cat_Rescue();
game.Run();
}
}
}
\ No newline at end of file
suunnitelma/kissa.png

4.62 KiB

suunnitelma/mallikartta.png

2.58 KiB

# Harjoitustyön suunnitelma
(Täydennä oman pelisi tiedot tähän tiedostoon muokkaamalla
tiedostoa tekstieditorissa. Käytä [Markdown-syntaksia](https://about.gitlab.com/handbook/markdown-guide/).
Poista sitten *kaikki* suluilla merkityt ohjetekstit.)
## Tietoja
Tekijä: (Etunimi Sukunimi)
Tekijä: Tomi Rajahalme
Työ git-varaston osoite: <https://gitlab.jyu.fi/anlakane/ohj1ht> (*Korvaa* tämä osoite oman git-varastosi osoitteella)
Työ git-varaston osoite: <https://gitlab.jyu.fi/rajatota/ohj1ht>
Pelin nimi: (Nimi)
Pelin nimi: Cat Rescue
Pelialusta: Windows/macOS/Linux (Valitse alusta)
Pelialusta: Windows
Pelaajien lukumäärä: 1/2/3/4 (Valitse pelaajien lukumäärä)
Pelaajien lukumäärä: 1
## Pelin tarina
(Pelin tarina.)
Mittensin ystävät on lukittu rankkurien toimesta. Mittensin on pelastettava ystävänsä livahtamalla eläinsuojaan ja vapauttamalla heidät. Tarha on valitettavasti tiukasti vatioitu.
## Pelin idea ja tavoitteet
(Pelin idea ja tavoitteet.)
Kyseessä on ylhäältä alas -peli. Pelikentässä on monta huonetta, joissa vartijat liikkuvat. Pelaaja yrittää navigoida kenttää jäämättä kiinni. Kentällä on avain ja häkkejä, joihin on lukittu kissoja.
## Hahmotelma pelistä
Pelaaja voittaa vapauttamalla kaikki kissat. Häviäminen tapahtuu, jos vartijat saavat pelaajan kiinni.
(Kun olet lisännyt suunnitelmakuvan tähän hakemistoon, linkitä se tähän alle. Alla on esimerkkikuvan linkitys.)
## Hahmotelma pelistä
![Esimerkkikuva](esimerkkikuva.png "Esimerkkikuva")
![Mallikartta](mallikartta.png "Mallikartta")
![Kissakuva](kissa.png "Kissa kuva")
## Toteutuksen suunnitelma
Helmikuu
- (Tavoite 1)
- (Tavoite 2)
- (Tavoite 3)
- Ensimmäinen kartta tehtynä
- Pelaajahahmo tehtynä
- Kissa pystyy liikkumaan
Maaliskuu
- (Tavoite 1)
- (Tavoite 2)
- (Tavoite 3)
- Vartijan tekoäly ja pelaajan kiinni jääminen
- Pelastettavien kissojen tekoäly
- Avainten toiminta ja häkkien avaamien
Jos aikaa jää
- (Tavoite 1)
- (Tavoite 2)
- (Tavoite 3)
- Aikarajan luominen
- Lisää kenttiä
- Erilaiset vartijat