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
  • kalini/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
389 results
Show changes
Showing
with 631 additions and 19 deletions
KelaCombat/KelaCombatTesti/Content/kentta3.png

694 B

KelaCombat/KelaCombatTesti/Content/kolmio.png

687 B

KelaCombat/KelaCombatTesti/Content/putoaminen1.png

687 B

KelaCombat/KelaCombatTesti/Content/putoaminen2.png

649 B

KelaCombat/KelaCombatTesti/Content/putoaminen3.png

660 B

KelaCombat/KelaCombatTesti/Content/putoaminen4.png

682 B

KelaCombat/KelaCombatTesti/Content/putoaminen5.png

650 B

KelaCombat/KelaCombatTesti/Content/tiiliseina.png

1.17 KiB

KelaCombat/KelaCombatTesti/Content/viinapullo.png

613 B

using System;
using System.Collections.Generic;
using System.Net.Mime;
using System.Security.Cryptography;
using FarseerPhysics.Dynamics.Joints;
using Jypeli;
using Jypeli.Assets;
using Jypeli.Controls;
using Jypeli.Widgets;
using Silk.NET.SDL;
using Color = Jypeli.Color;
namespace KelaCombatTesti;
/// @author Sakari
/// @version 17.02.2025
/// <summary>
///
/// </summary>
public class KelaCombatTesti : PhysicsGame
{
int kenttanumero = 0;
string[] Kentat = {"kentta1", "kentta2"};
Image[] HenkiloSaapastelu = LoadImages("kavely1", "kavely2");
Image[] PaikallaanAnimaatio = LoadImages("kavely1");
Image[] PutoamisAnimaatio = LoadImages("putoaminen1", "putoaminen2", "putoaminen3", "putoaminen4", "putoaminen5");
Image[] KelabottiKavely = LoadImages("Kelabotti", "Kelabotti2");
SoundEffect Hyppyaani = LoadSoundEffect("Hyppyaani");
SoundEffect Viinapulloaani = LoadSoundEffect("Viinapulloaani");
SoundEffect Keladamageaani = LoadSoundEffect("Keladamageaani");
SoundEffect Kavelyaani = LoadSoundEffect("Kavelyaani");
SoundEffect Lyontiaani = LoadSoundEffect("Lyontiaani");
Timer Ajastin = new Timer();
PlatformCharacter pelaaja;
PhysicsObject Pesismaila;
PhysicsObject Viinapullo;
PhysicsObject kappale;
PhysicsObject kolmio;
PlatformCharacter Kelabotti;
Image TiiliseinaKuva = LoadImage("tiiliseina");
Image KelabottiKuva = LoadImage("Kelabotti");
//Image PelaajaKuva = LoadImage("Pelaaja.png");
Image ViinapulloKuva = LoadImage("Viinapullo.png");
List<PhysicsObject> spawnipaikat = new List<PhysicsObject>(); // tässä listataan mahdolliset paikat, johon kelabotti voi spawnaa. Lista pitää sisällään spawnereita.
//IntMeter edustaa muuttujia, jotka voivat kasvaa tai vähentyä tietyllä tavalla
IntMeter pisteet; //pelaajan keräämät pisteet
DoubleMeter pelaajanelamaLaskuri; //pelaajan elämät
IntMeter Kelabotinelamalaskuri; //kelabotin elämät
//Label = tekstielementti, joka näytetään pelissä
Label pisteNaytto; //pisteiden näyttäminen ruudulla
/// <summary>
/// Pedli alkaa tästä
/// </summary>
public override void Begin()
{
LuoKentta(0);
}
/// <summary>
/// Vasemmalle kävely
/// </summary>
/// <param name="vektori">suuntavektori</param>
void LiikuVasemmalle(Vector vektori)
{
pelaaja.Walk(-120);
}
/// <summary>
/// Vasemmalle kävedllessä kuuluva ääni
/// </summary>
/// <param name="vektori">suuntavektori</param>
void AaniVasemmalle(Vector vektori)
{
Kavelyaani.Play();
Ajastin.Interval = 0.5; // Äänen kesto
Ajastin.Timeout += delegate { Kavelyaani.Play(); };
Ajastin.Start();
}
/// <summary>
/// Vasemmalle suuntautuvan äänen lopettaminen
/// </summary>
/// <param name="vektori">suuntavektori</param>
void LopetaAaniVasemmalle(Vector vektori)
{
if (Ajastin != null) // Tarkistetaan, onko ajastin luotu
{
Ajastin.Stop(); // Pysäytetään ajastin
Kavelyaani.Stop(); // Lopetetaan äänen toisto
}
}
/// <summary>
/// Oikealle kävely
/// </summary>
/// <param name="vektori">suuntavektori</param>
void LiikuOikealle(Vector vektori)
{
pelaaja.Walk(120);
}
/// <summary>
/// Ääni oikealle liikkuessa
/// </summary>
/// <param name="vektori">suuntavektori</param>
void AaniOikealle(Vector vektori)
{
Kavelyaani.Play();
Ajastin.Interval = 0.5; // Äänen kesto
Ajastin.Timeout += delegate { Kavelyaani.Play(); };
Ajastin.Start();
}
/// <summary>
/// Oikealle suuntautuvan äänen lopettaminen
/// </summary>
/// <param name="vektori">suuntavektori</param>
void LopetaAaniOikealle(Vector vektori)
{
if (Ajastin != null) // Tarkistetaan, onko ajastin luotu
{
Ajastin.Stop(); // Pysäytetään ajastin
Kavelyaani.Stop(); // Lopetetaan äänen toisto
}
}
/// <summary>
/// Hyppääminen
/// </summary>
/// <param name="vektori">suuntavektori</param>
void Hyppaa(Vector vektori)
{
Hyppyaani.Play();
pelaaja.Jump(900.0);
}
/// <summary>
/// Tässä luodaan pelikenttä
/// </summary>
void LuoKentta(int numero)
{
if (kenttanumero == Kentat.Length)
{
Label Valmistuminen = new Label(800, 60, "Toimeentulohakemus hyväkystty.");
Valmistuminen.Y = 140;
Valmistuminen.Font = new Font(60);
Valmistuminen.TextColor = Color.LimeGreen;
Add(Valmistuminen);
}
else
{
ClearAll();
Level.Background.CreateGradient(Color.DarkGray, Color.Blue);
Gravity = new Vector(0, -1100.0);
// pelissä kentät luodaan piirtämällä pikseleitä. Pikselin väri kuvaa aina jotain tiettyä asiaa kentällä
// ruutu = pikseli
ColorTileMap ruudut = ColorTileMap.FromLevelAsset(Kentat[numero]);
ruudut.SetTileMethod(Color.Lime, LuoPelaaja); //LIME pikseli on pelaaja, 0, 255, 0
ruudut.SetTileMethod(Color.Black, LuoTaso); //MUSTA on tiiliseinää
ruudut.SetTileMethod(Color.Red, LuoKelabottiSpawni); //PUNAISEEN voi spawnaa vihu
ruudut.SetTileMethod(Color.SkyBlue, LuoViinapullo); //VAALEANSNISET on pelaajaa parantavia viinapulloja 135, 206, 235
ruudut.SetTileMethod(Color.Wheat, LuoExit); // 245, 222, 179
ruudut.Execute(80, 80);
Timer.CreateAndStart(5.0, LuoKelabotti);
LuoElamalaskuri();
LuoPistelaskuri();
Camera.Follow(pelaaja);
Keyboard.Listen(Key.A, ButtonState.Pressed, AaniVasemmalle, null, new Vector());
Keyboard.Listen(Key.D, ButtonState.Pressed, AaniOikealle, null, new Vector());
Keyboard.Listen(Key.A, ButtonState.Released, LopetaAaniVasemmalle, null, new Vector());
Keyboard.Listen(Key.D, ButtonState.Released, LopetaAaniOikealle, null, new Vector());
Keyboard.Listen(Key.A, ButtonState.Down, LiikuVasemmalle, null, new Vector());
Keyboard.Listen(Key.D, ButtonState.Down, LiikuOikealle, null, new Vector());
Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, null, new Vector());
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Space, ButtonState.Pressed, LuoPesismaila, "", new Vector(90, 10), pelaaja);
}
}
/// <summary>
/// aliohjelma luo tiili-palikoita, joista kenttä rakentuu
/// </summary>
/// <param name="paikka">palikan paikka</param>
/// <param name="leveys">palikan korkeus</param>
/// <param name="korkeus">palikan leveys</param>
void LuoTaso(Vector paikka, double leveys, double korkeus)
{
PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
taso.Position = paikka;
taso.CollisionIgnoreGroup = 2;
taso.Color = Color.Gray;
taso.Image = TiiliseinaKuva;
taso.Tag = "taso";
Add(taso);
}
/// <summary>
/// Aliohjelma, jossa luodaan seuraavaan kenttään vievä ovi
/// </summary>
/// <param name="paikka">oven paikka</param>
/// <param name="x">oven leveys</param>
/// <param name="y">oven korkeus</param>
void LuoExit(Vector paikka, double x, double y)
{
PhysicsObject kolmio = PhysicsObject.CreateStaticObject(20, 100);
kolmio.Position = paikka;
kolmio.CollisionIgnoreGroup = 2;
kolmio.Color = Color.HotPink;
kolmio.Tag = "kolmio";
Add(kolmio);
}
/// <summary>
/// Aliohjelma luo pelaajaa parantavan viinapllon
/// </summary>
/// <param name="paikka">pullon paikka</param>
/// <param name="x">pullon leveys</param>
/// <param name="y">pullon korkeus</param>
void LuoViinapullo(Vector paikka, double x, double y)
{
Viinapullo = PhysicsObject.CreateStaticObject(50, 50);
Viinapullo.Position = paikka;
Viinapullo.Color = Color.White;
Viinapullo.Tag = "Viinapullo";
Viinapullo.Image = ViinapulloKuva;
Add(Viinapullo);
}
/// <summary>
/// Aliohjelma luo "haamupalikan" jonka sijaintiin kelabotti myöhemmin luodaan
/// </summary>
/// <param name="paikka">palikan paikka</param>
/// <param name="leveys">palikan leveys</param>
/// <param name="korkeus">palikan korkeus</param>
void LuoKelabottiSpawni(Vector paikka, double leveys, double korkeus)
{
PhysicsObject BottiSpawni = PhysicsObject.CreateStaticObject(leveys, korkeus);
BottiSpawni.Position = paikka;
BottiSpawni.IgnoresCollisionResponse = true;
//BottiSpawni.CollisionIgnoreGroup = 3;
BottiSpawni.IsVisible = false;
BottiSpawni.IgnoresGravity = true;
Add(BottiSpawni, -1);
spawnipaikat.Add(BottiSpawni);
}
/// <summary>
/// Aliohjelma, jossa luodaan pelaaja
/// </summary>
/// <param name="x">pelaajan x-koordinaatti</param>
/// <param name="y">pelaajan y-koordinaatti</param>
/// <returns>pelaaja</returns>
void LuoPelaaja(Vector paikka, double x, double y)
{
pelaaja = new PlatformCharacter(50.0, 100.0);
//pelaaja.Image = PelaajaKuva;
pelaaja.Mass = 1.0;
pelaaja.Shape = Shape.Rectangle;
pelaaja.Color = Color.Black;
pelaaja.Position = paikka;
pelaaja.CollisionIgnoreGroup = 1;
pelaaja.AnimWalk = new Animation(HenkiloSaapastelu);
pelaaja.AnimIdle = new Animation(PaikallaanAnimaatio);
pelaaja.AnimWalk.FPS = 3;
pelaaja.AnimFall = new Animation(PutoamisAnimaatio);
pelaaja.AnimFall.FPS = 12;
pelaaja.LoopFallAnim = true;
// Törmäyksen käsittelijä, mitä tapahtuu, kun pelaaja osuu kelabotiin
//Siis pelaajan elämien väheneminen VahnigoitaPelaajaa-aliohjelman mukaisesti
AddCollisionHandler(pelaaja, "Kelabotti", VahingoitaPelaajaa);
AddCollisionHandler(pelaaja, "Viinapullo", ParannaPelaajaa);
AddCollisionHandler(pelaaja, "kappale", VahingoitaPelaajaa);
AddCollisionHandler(pelaaja, "kolmio", KentanVaihto);
//AddCollisionHandler(kappale, "taso", TuhoaKappale);
Add(pelaaja);
}
/// <summary>
/// Aliohjelma, joka luo pelaajalle elämälaskurin ja sen nimen: "Mielenterveys"
/// </summary>
void LuoElamalaskuri()
{
pelaajanelamaLaskuri = new DoubleMeter(100.0);
pelaajanelamaLaskuri.MaxValue = 100;
pelaajanelamaLaskuri.LowerLimit += ElamaLoppui;
ProgressBar elamapalkki = new ProgressBar(150, 18);
elamapalkki.X = Screen.Left + 110;
elamapalkki.Y = Screen.Bottom + 50;
elamapalkki.BindTo(pelaajanelamaLaskuri);
elamapalkki.Color = Color.Red;
elamapalkki.BarColor = Color.Green;
elamapalkki.BorderColor = Color.Black;
Label tekstikentta = new Label(200, 10, "Mielenterveys");
tekstikentta.X = Screen.Left + 100;
tekstikentta.Y = Screen.Bottom + 70;
tekstikentta.Font = new Font(20);
Add(tekstikentta);
Add(elamapalkki);
}
/// <summary>
/// Aliohjelma, joka käsittelee pelaajan kuoleman ja ilmoittaa pelin loppumisen
/// </summary>
void ElamaLoppui()
{
Label Kuolema = new Label(800, 60, "Toimeentulohakemus hylätty.");
Kuolema.Y = 140;
Kuolema.Font = new Font(60);
Kuolema.TextColor = Color.Red;
//Kuolema.Color = Color.Black;
Add(Kuolema);
}
/// <summary>
/// Pesismailan luominen
/// </summary>
/// <param name="koko">Pesismailan koko</param>
/// <param name="pelaaja">kohde, johon Pesismaila liitetään</param>
void LuoPesismaila(Vector koko, PlatformCharacter pelaaja)
{
PhysicsObject Pesismaila = new PhysicsObject(koko.X, koko.Y);
Pesismaila.Position = pelaaja.Position + new Vector(80*pelaaja.FacingDirection.GetVector().X, 10);
Pesismaila.CollisionIgnoreGroup = 1;
Pesismaila.Mass = 1;
Pesismaila.Tag = "Pesismaila";
Add(Pesismaila);
Pesismaila.LifetimeLeft = TimeSpan.FromSeconds(0.075);
Sound Lyontiaani2 = Lyontiaani.CreateSound();
Lyontiaani2.Volume = 1;
Lyontiaani2.Play();
Pesismaila.IgnoresGravity = true;
//PISTEET ei elämät
AddCollisionHandler(Pesismaila, "Kelabotti", KunVihollinenTuhoutuu);
}
/// <summary>
/// Tämä funktio luo Kelabotti-vihun ja sille annetaan pelaajan seuraamisaivot
/// </summary>
/// <returns>Kelabotti</returns>
void LuoKelabotti()
{
PhysicsObject spawni = spawnipaikat[RandomGen.NextInt(spawnipaikat.Count)];
PlatformCharacter Kelabotti = new PlatformCharacter(50.0, 100.0);
Kelabotti.Color = Color.Orange;
Kelabotti.Image = KelabottiKuva;
Kelabotti.CollisionIgnoreGroup = 3;
Kelabotinelamalaskuri = new IntMeter(5); // Alussa on 5 elämää
Kelabotti.Tag = "Kelabotti";
Kelabotti.Position = spawni.Position;
Kelabotti.AnimWalk = new Animation(KelabottiKavely);
Kelabotti.AnimWalk.FPS = 3;
Add(Kelabotti);
FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja);
seuraajanAivot.Speed = 100;
Kelabotti.Brain = seuraajanAivot;
Timer heittoajastin = new Timer();
heittoajastin.Interval = 2;
heittoajastin.Timeout += delegate() { KelabotinAmmus(Kelabotti, "pelaaja"); };
heittoajastin.Start();
Kelabotti.Destroyed += heittoajastin.Stop;
}
/// <summary>
/// Aliohjelma, jossa käsitellään Kelabotin heittämä ammus
/// </summary>
/// <param name="heittavaOlio">Kelabotti heittää ammuksen</param>
/// <param name="kohdeolionTunniste">pelaajan tunniste</param>
public void KelabotinAmmus(PhysicsObject heittavaOlio, string kohdeolionTunniste)
{
PhysicsObject kappale = new PhysicsObject(15, 15, Shape.Triangle);
kappale.Hit(new Vector(180*pelaaja.FacingDirection.GetVector().X, 10));
//kappale.Hit(new Vector());
kappale.Position = heittavaOlio.Position;
kappale.CollisionIgnoreGroup = 3;
kappale.Color = Color.Silver;
kappale.Tag = "kappale";
kappale.MaximumLifetime = TimeSpan.FromSeconds(1.5);
Add(kappale);
}
/*
public void TuhoaKappale(PhysicsObject kappale, PhysicsObject taso)
{
kappale.Destroy();
}
*/
/// <summary>
/// Tämä aliohjelma käsittlee sen, kun pelaaja osuu Kelabottiin
/// </summary>
/// <param name="pelaaja">pelaajahahmo</param>
/// <param name="Kelabotti">pelin vihu; Kelabotti</param>
void VahingoitaPelaajaa(PhysicsObject pelaaja, PhysicsObject kappale)
{
int luku = RandomGen.NextInt(19, 34);
pelaajanelamaLaskuri.Value = pelaajanelamaLaskuri - luku; // Vähentää pelaajan elämää satunnaisen määrän
if (pelaajanelamaLaskuri.Value <= 0) //jos laskuri menee nollaan...
{
pelaaja.Destroy(); //...ja pelaaja tuhotaan
//Pesismaila.Destroy();//...myös pesismaila
}
}
/// <summary>
/// Aliohjelma, joka parantaa pelaajan, kun tämä koskee viinapulloa
/// </summary>
/// <param name="pelaaja">kohde, joka parannetaan</param>
/// <param name="Viinapullo">parantava esine</param>
void ParannaPelaajaa(PhysicsObject pelaaja, PhysicsObject Viinapullo)
{
//Viinapullo.CollisionIgnoreGroup = 1;
if (pelaajanelamaLaskuri.Value < 99)
{
//Viinapullo.CollisionIgnoreGroup = 0;
Viinapulloaani.Play();
pelaajanelamaLaskuri.Value = pelaajanelamaLaskuri.Value + 20;
pisteet.Value += 20;
Viinapullo.Destroy();
}
}
/// <summary>
/// Luo pistelaskurin pisteille, joita saa kun hakkaa kelabotteja
/// </summary>
void LuoPistelaskuri()
{
Label opintoNopat = new Label(150, 50, "Opintonopat:");
opintoNopat.X = Screen.Left + 100;
opintoNopat.Y = Screen.Bottom + 93;
opintoNopat.Font = new Font(20);
opintoNopat.TextColor = Color.Black;
Add(opintoNopat);
pisteet = new IntMeter(0); // Aloitetaan nollasta
pisteNaytto = new Label();
pisteNaytto.X = Screen.Left + 170;
pisteNaytto.Y = Screen.Bottom + 95;
pisteNaytto.TextColor = Color.OrangeRed;
pisteNaytto.Font = new Font(20);
pisteNaytto.BindTo(pisteet); // Päivitetään teksti automaattisesti
Add(pisteNaytto);
}
/// <summary>
/// Käsittelee kelabotin tuhoamisen ja antaa siitö pisteitä
/// </summary>
/// <param name="pelaaja">pelaajahahmo</param>
/// <param name="kelabotti">pelin vihu; Kelabotti</param>
void KunVihollinenTuhoutuu(PhysicsObject pelaaja, PhysicsObject kelabotti)
{
Keladamageaani.Play();
pisteet.Value += 100; // Lisää esim. 100 pistettä, kun botti tuhotaan
kelabotti.Destroy(); // Poistaa botin näytöltä
}
/// <summary>
/// Aliohjelma, jossa käsitellään kentän vaihto
/// </summary>
/// <param name="pelaaja">pelaaja</param>
/// <param name="kolmio">esine, josta kenttä vaihtuu</param>
void KentanVaihto(PhysicsObject pelaaja, PhysicsObject kolmio)
{
if (pisteet.Value >= 300)
{
kenttanumero++;
LuoKentta(kenttanumero);
}
}
}
<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>
<ItemGroup>
<None Update="KelaCombatkuvat\Pelaaja.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Content\Pelaaja.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Content\Kelabotti.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\kentta1.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\tiiliseina.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\kentta2.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\kolmio.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\kavely1.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\kavely2.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\putoaminen1.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\putoaminen2.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\putoaminen3.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\putoaminen4.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\putoaminen5.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\viinapullo.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\Kelabotti2.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\Hyppyaani.wav">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\Viinapulloaani.wav">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\Keladamageaani.wav">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\Kavelyaani.wav">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="Content\Lyontiaani.wav">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
#region Using Statements
using System;
using System.Collections.Generic;
using System.Linq;
#endregion
namespace KelaCombatTesti
{
/// <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 KelaCombatTesti();
game.Run();
}
}
}
\ No newline at end of file
suunnitelma/KelaCombat.png

11.1 KiB

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: Sakari Hanki ja Salla Laine
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/hankssxs/ohj1ht>
Pelin nimi: (Nimi)
Pelin nimi: Kela Combat: Fight for the Opintonopat
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.)
Opiskelija hakkaa kelabotteja
## Pelin idea ja tavoitteet
(Pelin idea ja tavoitteet.)
Pelin ideana on hankkia Opintonoppia hakkaamalla kelabotteja pesismailalla. Pelissä ohjataan tikkuhenkilöä ja pelissä edetään pääasiassa x-suunnassa. Kentän läpäisee, kun on kerännyt tarpeeksi opintonoppia. Kelabotit yrittävät lyödä pelaajaa takaisin, ja pelaaja voi palauttaa (mielen)tervyspisteitä keräämällä kentällä olevia viinapulloja.
## 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")
![Esimerkkikuva](KelaCombat.png "Esimerkkikuva pelistä")
## Toteutuksen suunnitelma
Helmikuu
- (Tavoite 1)
- (Tavoite 2)
- (Tavoite 3)
- (Tavoite 1: pelaajahahmon kontrollit)
- (Tavoite 2: eka pelikenttä)
- (Tavoite 3: eka kelabotti)
Maaliskuu
- (Tavoite 1)
- (Tavoite 2)
- (Tavoite 1: Hp mekaniikat ja Opintonoppa-laskuri)
- (Tavoite 2: taistelumekaniikat)
- (Tavoite 3)
Jos aikaa jää
- (Tavoite 1)
- (Tavoite 2)
- (Tavoite 1: animaatiot)
- (Tavoite 2: lisää vihollistyyppejä)
- (Tavoite 3)