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
Showing
with 341 additions and 21 deletions
File added
{
"runtimeOptions": {
"tfm": "net8.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
\ No newline at end of file
using System;
using Jypeli;
using Jypeli.Assets;
namespace platformerPeli;
/// @author Mikael ja Jafer
/// @version 23.10.2024
/// <summary>
/// Platformer PVP Peli
/// </summary>
/// Tämä linkki on että osoitan osaavani taulukot https://tim.jyu.fi/view/kurssit/tie/ohj1/v/2024/syksy/demot/demo10?answerNumber=83&b=oLNB7gIsCK6M&size=1&task=tauno&user=jalitat
/// Tämä linkki on että osoitan osaavani taulukot https://tim.jyu.fi/view/kurssit/tie/ohj1/v/2024/syksy/demot/demo10?answerNumber=6&b=oLNB7gIsCK6M&size=1&task=tauno&user=garammtu
public class platformerPeli : PhysicsGame
{
private const int RUUDUN_KOKO = 40; // Kentän ruudun koko
private const double NOPEUS = 200; //liikkumisnopeutta
private const double HYPPY_NOPEUS = 650; //hyppyvoimaa
private PlatformCharacter pelaaja; //pelaaja 1
private PlatformCharacter pelaaja2; //pelaaja 2
private Image pelaajankuva = LoadImage("alpha000.png"); //lataa tyhjänkuvan minkä heti jälkeen vaihtaa animaation kanssa
private Image background = LoadImage("Illustration27.png"); //taustakuva
private Image[] idleanimaatio = LoadImages("stand000", "stand001", "stand003", "stand004", "stand005", "stand006", "stand007", "stand008", "stand009", "stand010", "stand011", "stand012", "stand013", "stand014", "stand015");
private Image[] kavelyanimaatio = LoadImages("dashFront000", "dashFront001", "dashFront002", "dashFront003", "dashFront004", "dashFront005", "dashFront006");
private Image[] hyppyanimaatio = LoadImages("jump000", "jump001", "jump003", "jump004", "jump005", "jump006", "jump007", "jump008"); //nämä kolme on animaatiot mitä käytetää
private double jumpcount = 0; //lasketaan hyppy counteri
/// <summary>
/// kutsuu aliohjelmat joka pyörittää sitten pelin
///</summary>
public override void Begin()
{
Gravity = new Vector(0, -1000);
LisaaNappaimet();
LuoKentta();
LisaaMusiikki();
Camera.StayInLevel = true;
Level.Background.Image = background;
Level.Background.FitToLevel();
MasterVolume = 0.5;
LisaaAseet();
}
/// <summary>
/// Luo kentän teksti tiedoston symbolejen avulla
/// </summary>
private void LuoKentta()
{
TileMap kentta = TileMap.FromLevelAsset("kentta1.txt");
kentta.SetTileMethod('#', LuoTaso);
kentta.SetTileMethod('N', (paikka, leveys, korkeus) => LisaaPelaaja(paikka, ref pelaaja));
kentta.SetTileMethod('M', (paikka, leveys, korkeus) => LisaaPelaaja(paikka, ref pelaaja2));
kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
Camera.ZoomToLevel();
}
/// <summary>
/// Luo tason
/// </summary>
/// <param name="paikka">tason paikka</param>
/// <param name="leveys">tason leveys</param>
/// <param name="korkeus">tason korkeus</param>
private void LuoTaso(Vector paikka, double leveys, double korkeus)
{
PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
taso.Position = paikka;
taso.Color = Color.Red;
taso.Tag = "taso";
Add(taso);
}
/// <summary>
/// Luo kaksi pelaaja (on mahdollista luoda enemmän)
/// </summary>
/// <param name="paikka">Pelaajan paikka</param>
/// <param name="pelaaja">peli hahmo</param>
private void LisaaPelaaja(Vector paikka, ref PlatformCharacter pelaaja)
{
pelaaja = new PlatformCharacter(52, 128);
pelaaja.Position = paikka;
pelaaja.Image = pelaajankuva;
pelaaja.AnimIdle = new Animation(idleanimaatio) { FPS = 10 };
pelaaja.AnimWalk = new Animation(kavelyanimaatio[2], kavelyanimaatio[3]) { FPS = 10 };
pelaaja.AnimJump = new Animation(hyppyanimaatio) { FPS = 10 };
pelaaja.AnimIdle.Start();
Add(pelaaja);
}
/// <summary>
/// Lisää aseet pelaajoille
/// </summary>
private void LisaaAseet()
{
LisaaAse(pelaaja);
LisaaAse(pelaaja2);
}
/// <summary>
/// Luodaan itse ase ja sen ominaisuus
/// </summary>
/// <param name="pelaaja">Pelaajan</param>
private void LisaaAse(PlatformCharacter pelaaja)
{
if (pelaaja != null)
{
pelaaja.Weapon = new AssaultRifle(30, 10)
{
Ammo = { Value = 1000 },
FireRate = 2.0,
Image = LoadImage("Empty.png"),
ProjectileCollision = (ammus, target) => AmmusOsui(ammus, target)
};
}
}
/// <summary>
/// Lisätään musiikkia ja pistetään loopille
/// </summary>
private void LisaaMusiikki()
{
MediaPlayer.Play("Twin_Crystal.wav");
MediaPlayer.IsRepeating = true;
}
/// <summary>
/// näppäimet
/// </summary>
private void LisaaNappaimet()
{
Keyboard.Listen(Key.W, ButtonState.Pressed, () => Hyppaa(pelaaja, HYPPY_NOPEUS), "Pelaaja 1: Hyppää");
Keyboard.Listen(Key.A, ButtonState.Down, () => Liikuta(pelaaja, -NOPEUS), "Pelaaja 1: Liikuta vasemmalle");
Keyboard.Listen(Key.D, ButtonState.Down, () => Liikuta(pelaaja, NOPEUS), "Pelaaja 1: Liikuta oikealle");
Keyboard.Listen(Key.E, ButtonState.Down, () => AmmuAseella(pelaaja), "Pelaaja 1: Ammu");
Keyboard.Listen(Key.Up, ButtonState.Pressed, () => Hyppaa(pelaaja2, HYPPY_NOPEUS), "Pelaaja 2: Hyppää");
Keyboard.Listen(Key.Left, ButtonState.Down, () => Liikuta(pelaaja2, -NOPEUS), "Pelaaja 2: Liikuta vasemmalle");
Keyboard.Listen(Key.Right, ButtonState.Down, () => Liikuta(pelaaja2, NOPEUS), "Pelaaja 2: Liikuta oikealle");
Keyboard.Listen(Key.L, ButtonState.Down, () => AmmuAseella(pelaaja2), "Pelaaja 2: Ammu");
PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
}
/// <summary>
/// pelaaja liikkuu
/// </summary>
/// <param name="pelaaja">peli hahmo</param>
/// <param name="nopeus">liikkumis nopeutta</param>
private void Liikuta(PlatformCharacter pelaaja, double nopeus)
{
pelaaja.Walk(nopeus);
}
/// <summary>
/// suorittaa hypyn tässä
/// </summary>
/// <param name="pelaaja">peli hahmo</param>
/// <param name="hyppyNopeus"> nopeutta</param>
private void Hyppaa(PlatformCharacter pelaaja, double hyppyNopeus)
{
if (pelaaja != null && (PelaajaOnMaassa(pelaaja) || jumpcount < 2)) //kattoo onko maassa tai hyppiny liian vähän
{
if (jumpcount == 1)
{
pelaaja.Velocity = new Vector(pelaaja.Velocity.X, hyppyNopeus); //jottei hypyn vauhti muuttuisi gravityn takia
}
pelaaja.Jump(hyppyNopeus);
jumpcount++; //lasketaan hyppyjä
pelaaja.LoopJumpAnim = true; //pyöritään animaatio ilmassa
}
}
/// <summary>
/// Ollaanko varmasti maassa
/// </summary>
/// <param name="pelaaja">pelaaja :D</param>
/// <returns> ollaanko iha varmasti maassa </returns>
private bool PelaajaOnMaassa(PlatformCharacter pelaaja)
{
foreach (var obj in GetAllObjects())
{
if (obj is PhysicsObject physicsObj)
{
if (physicsObj.Tag?.ToString() == "taso" &&
pelaaja.Bottom <= physicsObj.Top + 1 &&
pelaaja.Bottom >= physicsObj.Top - 5)
{
jumpcount = 0;
return true; //jos ollaan maassa
}
}
}
return false;
}
/// <summary>
/// ammutaan aseella
/// </summary>
/// <param name="pelaaja">pelaaja itse</param>
private void AmmuAseella(PlatformCharacter pelaaja)
{
if (pelaaja.Weapon != null)
{
PhysicsObject ammus = pelaaja.Weapon.Shoot();
if (ammus != null) //jos ammus on olemassa, tekee alemmat
{
ammus.Size *= 3;
ammus.Image = LoadImage("ThrowingKnife.png"); //ammos on puukko
ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
}
}
}
/// <summary>
/// katsotaan kumpi voittaa ja kumpi tuhoutuu
/// </summary>
/// <param name="ammus">pelaajan ammo</param>
/// <param name="target">pelaaja on targetti, jos osuu, tuhoutuu</param>
private void AmmusOsui(PhysicsObject ammus, PhysicsObject target)
{
if (target == pelaaja2)
{
pelaaja2.Destroy();
ShowEndMenu("Congratulations Player 1! You win!");
}
else if (target == pelaaja)
{
pelaaja.Destroy();
ShowEndMenu("Congratulations Player 2! You win!");
}
}
/// <summary>
/// PeliLopun jälkeen valinta ikkuna
/// </summary>
/// <param name="message">pelaa taas tai lopeta peli</param>
private void ShowEndMenu(string message)
{
ClearControls();
Label label = new Label(message);
label.TextColor = Color.White;
label.Position = new Vector(0, 200);
Add(label);
PushButton restartButton = new PushButton("Play Again");
restartButton.Position = new Vector(0, 100);
restartButton.Clicked += RestartGame;
Add(restartButton);
PushButton exitButton = new PushButton("Exit Game");
exitButton.Position = new Vector(0, 50);
exitButton.Clicked += ExitGame;
Add(exitButton);
}
/// <summary>
/// alottaa alusta
/// </summary>
private void RestartGame()
{
ClearAll();
Begin();
}
/// <summary>
/// Lopettaa pelin
/// </summary>
private void ExitGame()
{
Exit();
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Jypeli.NET" Version="11.*"/>
<PackageReference Include="Jypeli.FarseerPhysics.NET" Version="2.*"/>
</ItemGroup>
</Project>
suunnitelma/Illustration27.png

1.44 MiB

suunnitelma/esimerkkikuva.png

9.92 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ät: Mikael Garam, Jafer Al-Itawa
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/garammtu/ohj1ht.git>
Pelin nimi: (Nimi)
Pelin nimi: Before Dawn
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.)
Pelin mysteerinen päähahmo on joutunut paikkaan, josta hän ei löydä tietä ulos.
Hänen täytyy taistella olioita vastaan, jotka yrittävät vangita päähahmon ikuisesti tässä realmissa.
## Pelin idea ja tavoitteet
(Pelin idea ja tavoitteet.)
Peli luo hieman epämukavan ja tumman olon pelaajalle. Pelissä tuhotaan minivihollisia ja lopuksi Boss-vihollinen,
jonka tappamalla pelaaja pääsee pois tästä maailmasta normaaliin maailmaan. Pelin tavoitteena on luoda lyhyt,
mutta tunnelmallinen kokemus pelin pelaajalle.
## Hahmotelma pelistä
(Kun olet lisännyt suunnitelmakuvan tähän hakemistoon, linkitä se tähän alle. Alla on esimerkkikuvan linkitys.)
![Esimerkkikuva](esimerkkikuva.png "Esimerkkikuva")
![Illustration27](Illustration27.png "Illustration27")
## Toteutuksen suunnitelma
Helmikuu
- (Tavoite 1)
- (Tavoite 2)
- (Tavoite 3)
- Hyvä ja vakaa foundation pelille (saadaan perusasiat toimimaan kuten pelaajan liikkuminen)
- Lisää vihollinen
- Lisää pelaajalle ase
Maaliskuu
- (Tavoite 1)
- (Tavoite 2)
- (Tavoite 3)
- Lisää peliin Bossi ja sille liikkuminen + hyökkäykset pelaajaa vastaan
- Lisää viholliselle omatoiminen liikkuminen ja pelaajaa kohtaan hyökkääminen
- Kerättävä power-up, joka lisää pelaajan tuottamaa damagea
- Grafiikat
Jos aikaa jää
- (Tavoite 1)
- (Tavoite 2)
- (Tavoite 3)
- Luo simppelit animaatiot
- Isompi mappi
- Parantelua ja hienosäätelyä